diff --git a/AGENTS.md b/AGENTS.md index 2430fae2b..82acfcc25 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -85,8 +85,8 @@ ## Project-Specific - **Translations**: - - Only update `en.yml` and `en.json` - - Other languages are handled by the community + - For product and source-string changes, only update `en.yml` and `en.json`; other languages are handled through Crowdin and the community + - Crowdin-generated translation sync PRs may update non-English locale files; do not flag those changes solely for modifying translated locale files - Backend i18n → `en.yml`, Frontend i18n → `en.json` - **Frontend**: - Use `components-next/` for message bubbles (the rest is being deprecated) diff --git a/app/javascript/dashboard/i18n/locale/am/advancedFilters.json b/app/javascript/dashboard/i18n/locale/am/advancedFilters.json index a991cb25b..34d2d22a9 100644 --- a/app/javascript/dashboard/i18n/locale/am/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/am/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "እውቂያዎችን ይፈልጉ", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "እውቂያ", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/am/chatlist.json b/app/javascript/dashboard/i18n/locale/am/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/am/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/am/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/am/companies.json b/app/javascript/dashboard/i18n/locale/am/companies.json index 1eb18f365..39b42f922 100644 --- a/app/javascript/dashboard/i18n/locale/am/companies.json +++ b/app/javascript/dashboard/i18n/locale/am/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/am/contact.json b/app/javascript/dashboard/i18n/locale/am/contact.json index aa025f30c..74d677a7d 100644 --- a/app/javascript/dashboard/i18n/locale/am/contact.json +++ b/app/javascript/dashboard/i18n/locale/am/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "ባህሪያት", "HISTORY": "ታሪክ", "NOTES": "ማስታወሻዎች", + "MEDIA": "Media", "MERGE": "አንድነት አድርግ" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/am/conversation.json b/app/javascript/dashboard/i18n/locale/am/conversation.json index a6803eae1..8082554c1 100644 --- a/app/javascript/dashboard/i18n/locale/am/conversation.json +++ b/app/javascript/dashboard/i18n/locale/am/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "ይህ የInstagram መለያ ወደ አዲሱ የInstagram ቻናል ገቢ ሳጥን ተዛውሯል። ሁሉም አዲስ መልዕክቶች በዚያ ይታያሉ። ከአሁን ጀምሮ ከዚህ ውይይት መልዕክቶች መላክ አትችሉም።", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "ለዚህ ትመልሳለህ፦", "REMOVE_SELECTION": "ምርጫ አስወግድ", "DOWNLOAD": "አውርድ", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "ምስል በተሳካ ሁኔታ ተሰብስቧል", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "ኮፒሎት እየሰማራ ነው", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/am/emoji.json b/app/javascript/dashboard/i18n/locale/am/emoji.json index d5b96f0f9..77f68a320 100644 --- a/app/javascript/dashboard/i18n/locale/am/emoji.json +++ b/app/javascript/dashboard/i18n/locale/am/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "አስወግድ", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/am/helpCenter.json b/app/javascript/dashboard/i18n/locale/am/helpCenter.json index ef480e1ee..e2185eb3e 100644 --- a/app/javascript/dashboard/i18n/locale/am/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/am/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "ተለቀቀ", "ARCHIVED": "ተቀምጧል" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "ያልተደራጀ" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "ሁሉም ቋንቋዎች" }, + "SEARCH_PLACEHOLDER": "ጽሑፎችን ፈልግ...", "NEW_ARTICLE": "አዲስ ጽሑፍ" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "በዚህ ምድብ ምንም ጽሑፎች የሉም", "SUBTITLE": "በዚህ ምድብ ያሉ ጽሑፎች እዚህ ይታያሉ" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "አዲስ ምድብ", "EDIT_CATEGORY": "ምድብ አርትዕ", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} ምድብ | {n} ምድቦች", "BREADCRUMB": { "CATEGORY_LOCALE": "ምድቦች ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "ምድቦች አልተገኙም", "SUBTITLE": "ካተጎሪዎች እዚህ ይታያሉ። በ'አዲስ ካተጎሪ' አዝራር ቁልፍ በመጫን ካተጎሪ ማክሰኞ ይችላሉ።." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} ጽሑፍ | {count} ጽሑፎች" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "ምንም ቋንቋ አልተገኘም | {n} ቋንቋ | {n} ቋንቋዎች", "NEW_LOCALE_BUTTON_TEXT": "አዲስ ቋንቋ", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} ጽሑፍ | {count} ጽሑፎች", "CATEGORIES_COUNT": "{count} ምድብ | {count} ምድቦች", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "እንደ ነባሪ አድርግ", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "ሰርዝ" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "ያልተደራጀ" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "የገፅ ርዕስ" + }, + "HEADER_TEXT": { + "LABEL": "የራስጌ ጽሑፍ" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "አዲስ ቋንቋ አክል", "DESCRIPTION": "ይህ ሰነድ በሚጻፍበት ቋንቋ ይምረጡ። ይህ ወደ የትርጉም ዝርዝርዎ ይጨምራል እና በኋላ ተጨማሪ ማክሰኞ ይችላሉ።.", @@ -730,10 +791,30 @@ }, "PREVIEW": "ቅድመ እይታ", "PUBLISH": "ለማስታወቂያ", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "እቅድ", "ARCHIVE": "አርክቭ", "BACK_TO_ARTICLES": "ወደ ጽሑፎች ተመለስ" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "ተጨማሪ ባህሪያት", "UNCATEGORIZED": "ያልተመደበ", diff --git a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json index 3f784dc92..22058b6fa 100644 --- a/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/am/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram ጋር ለመገናኘት ስህተት አጋጥሟል፣ እባክዎ እንደገና ይሞክሩ", "ERROR_AUTH": "Instagram ጋር ለመገናኘት ስህተት አጋጥሟል፣ እባክዎ እንደገና ይሞክሩ", "NEW_INBOX_SUGGESTION": "ይህ የInstagram መለያ ቀድሞ ወደ ሌላ ኢንቦክስ ተገናኝቷል እና አሁን ወደዚህ ተለዋዋጭ ሆኗል። አዲስ መልእክቶች ሁሉ እዚህ ይታያሉ። አሮጌው ኢንቦክስ ለዚህ መለያ መልእክት ማስተላለፍ እና መቀበል አይችልም።.", - "DUPLICATE_INBOX_BANNER": "ይህ የInstagram መለያ ወደ አዲሱ የInstagram ቻናል ኢንቦክስ ተለዋዋጭ ሆኗል። ከዚህ ኢንቦክስ የInstagram መልእክቶችን መላክ/መቀበል አትችሉም።." + "DUPLICATE_INBOX_BANNER": "ይህ የInstagram መለያ ወደ አዲሱ የInstagram ቻናል ኢንቦክስ ተለዋዋጭ ሆኗል። ከዚህ ኢንቦክስ የInstagram መልእክቶችን መላክ/መቀበል አትችሉም።.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "ከTikTok ጋር ቀጥሉ", "CONNECT_YOUR_TIKTOK_PROFILE": "TikTok መገለጫዎን ያገናኙ", "HELP": "TikTok መገለጫዎን እንደ ቻናል ለመጨመር፣ “Continue with TikTok” በመጫን መለያዎን መረጋገጥ አለብዎት ", "ERROR_MESSAGE": "TikTok ለመገናኘት ስህተት አጋጥሟል፣ እባክዎ እንደገና ይሞክሩ", - "ERROR_AUTH": "TikTok ለመገናኘት ስህተት አጋጥሟል፣ እባክዎ እንደገና ይሞክሩ" + "ERROR_AUTH": "TikTok ለመገናኘት ስህተት አጋጥሟል፣ እባክዎ እንደገና ይሞክሩ", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "የTwitter መገለጫዎን እንደ ቻናል ለመጨመር በ\"Sign in with Twitter\" ላይ በመጫን የTwitter መገለጫዎን መረጋገጥ አለብዎት። ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "ይህ ኢንቦክስ በWhatsApp ተዋሰነ መመዝገቢያ ተገናኝቷል።.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "ይህን ኢንቦክስ ለWhatsApp ንግድ ቅንብሮች ለማዘመን መቀየር ይችላሉ።.", "WHATSAPP_RECONFIGURE_BUTTON": "እንደገና ያቀናብሩ", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "የንግድ አካውንት መለያ", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API ቁልፍ", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "ወደ WhatsApp ቢዝነስ ይገናኙ", "WHATSAPP_CONNECT_SUBHEADER": "ለቀላል አስተዳደር ወደ WhatsApp ተዋሰነ መመዝገቢያ ይዘምኑ።.", "WHATSAPP_CONNECT_DESCRIPTION": "ይህን ኢንቦክስ ወደ WhatsApp ንግድ ያገናኙ ለተጨማሪ ባህሪያትና ቀላል አስተዳደር።.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "ከWhatsApp መልእክት አብነቶች እጅግ በእጅ ማስተካከል ለእንደገና የሚገኙ አብነቶችን ያዘምኑ።.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "አብነቶችን ያዘምኑ", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "የአብነት ማስተካከያ በተሳካ ሁኔታ ተጀምሯል። ለማዘመን ጥቂት ደቂቃዎች ሊወስድ ይችላል።.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "ዝጋ", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "የስልክ ቁጥር አሳይ", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "ስልክ ቁጥር", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "ቀጥል", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/am/index.js b/app/javascript/dashboard/i18n/locale/am/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/am/index.js +++ b/app/javascript/dashboard/i18n/locale/am/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/am/integrations.json b/app/javascript/dashboard/i18n/locale/am/integrations.json index 8af05114c..c8e1fc1ca 100644 --- a/app/javascript/dashboard/i18n/locale/am/integrations.json +++ b/app/javascript/dashboard/i18n/locale/am/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "ተመዝግቧል የሆኑ ክስተቶች", "LEARN_MORE": "ስለ webhooks ተጨማሪ ያውቁ", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "ምስጢር", "COPY": "ምስጢሩን ወደ ክሊፕቦርድ ቅዳ", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "ካፕቴን", "HEADER_KNOW_MORE": "ተጨማሪ ያውቁ", + "OVERVIEW": { + "HEADER": "አጠቃላይ እይታ", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "በመጠባበቂያ ላይ ያሉ የተደጋጋሚ ጥያቄዎች", + "DOCUMENTS": "ሰነዶች" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "መጫወቻ ቦታ", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "ክፍያ", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "አገልጋዮች", "SWITCH_ASSISTANT": "በአገልጋዮች መካከል ቀይር", @@ -494,10 +577,6 @@ "PLACEHOLDER": "የእርዳታ ስም ያስገቡ", "ERROR": "ስም አስፈላጊ ነው" }, - "TEMPERATURE": { - "LABEL": "የምላሽ ሙቀት", - "DESCRIPTION": "እንዴት ፈጠራዊ ወይም ገደብ ያለ መልስ እንደሚሰጥ ያስተካክሉ። ዝቅተኛ እሴቶች ትክክለኛና ተወላጅ መልሶችን ያመነታሉ፣ ከፍተኛ እሴቶች ግን በተለያዩና ፈጠራዊ መልሶች ላይ ያስተዋውቃሉ።" - }, "DESCRIPTION": { "LABEL": "መግለጫ", "PLACEHOLDER": "እርዳታ መግለጫ ያስገቡ", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "ሰነዶች", "ADD_NEW": "አዲስ ሰነድ ፍጠር", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} ተመረጡ", "SELECT_ALL": "ሁሉንም ይምረጡ ({count})", "UNSELECT_ALL": "ሁሉንም አልምረጥም ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "ተዛማጅ የFAQ ጥያቄዎች", - "DESCRIPTION": "እነዚህ የFAQ ጥያቄዎች ቀጥተኛ ከሰነዱ ተፈጥረዋል።" + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "ቅዳ", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "ሰነዱን እንደ የእውቀት ምንጭ ለማከማቸት የሰነዱን URL ያስገቡ እና ከዚያ ጋር ለማገናኘት እገዛ አገልጋይን ይምረጡ።", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "ሰነዱን ለማስወገድ ስህተት አጋጥሟል፣ እባክዎን እንደገና ይሞክሩ።" }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "ተዛማጅ ምላሾችን እይ", + "VIEW_DETAILS": "ዝርዝሮችን እይ", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "ሰነድ ሰርዝ" diff --git a/app/javascript/dashboard/i18n/locale/am/onboarding.json b/app/javascript/dashboard/i18n/locale/am/onboarding.json index bb90a36c0..d080eb860 100644 --- a/app/javascript/dashboard/i18n/locale/am/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/am/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "ቀጥል", + "SKIP": "ይዝጉ", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "ዝግጅተዋል", + "HELP_CENTER": "የእርዳታ ማዕከል", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} ምድብ | {count} ምድቦች", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "አገናኝ", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "ድምጽ", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "አገናኝ", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/am/report.json b/app/javascript/dashboard/i18n/locale/am/report.json index 20f61f618..b61c5f565 100644 --- a/app/javascript/dashboard/i18n/locale/am/report.json +++ b/app/javascript/dashboard/i18n/locale/am/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/am/sessionLimit.json b/app/javascript/dashboard/i18n/locale/am/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/am/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/am/settings.json b/app/javascript/dashboard/i18n/locale/am/settings.json index 6264307a8..fa0100353 100644 --- a/app/javascript/dashboard/i18n/locale/am/settings.json +++ b/app/javascript/dashboard/i18n/locale/am/settings.json @@ -86,9 +86,21 @@ "NOTE": "ለመለያዎ ተጨማሪ የደህንነት ባለስልጣናት ያስተዳድሩ።.", "MFA_BUTTON": "ሁለት-አምስት ማረጋገጫ ያስተካክሉ" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "የመዳረሻ ቶክን", "NOTE": "ይህ ቶክን ከAPI በመሠረት የተደረገ አንደኛ አገናኝ ሲሆን ሊጠቀምበት ይችላል", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "ቅዳ", "RESET": "እንደገና ማስጀመር", "CONFIRM_RESET": "እርግጠኛ ነህ?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "ሁሉም ኩባንያዎች", "CAPTAIN": "ካፕቴን", "CAPTAIN_ASSISTANTS": "እርዳታ አገልጋዮች", + "CAPTAIN_OVERVIEW": "አጠቃላይ እይታ", "CAPTAIN_DOCUMENTS": "ሰነዶች", "CAPTAIN_RESPONSES": "ተደጋጋሚ ጥያቄዎች", "CAPTAIN_TOOLS": "መሣሪያዎች", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "ማስታወቂያዎች", "CANNED_RESPONSES": "ተዘጋጅቷ የሆነ መልስ", "INTEGRATIONS": "አካባቢዎች", + "DATA": "Data", "PROFILE_SETTINGS": "የመገለጫ ቅንብሮች", "ACCOUNT_SETTINGS": "የመለያ ቅንብሮች", "APPLICATIONS": "መተግበሪያዎች", @@ -379,11 +393,124 @@ "INFO_TEXT": "ሲስተሙ እርስዎን በመተግበሪያው ወይም በዳሽቦርድ ሳትጠቀሙ ራስሰር እንዲሆኑ ያደርጉ።.", "INFO_SHORT": "ሲስተሙ ሲሳለቅ ራስሰር እንዲሆኑ ያደርጉ።." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "በይፋ ያደርጉ", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "ሰነዶችን አንብቡ", "SECURITY": "ደህንነት", "CAPTAIN_AI": "ካፕቴን", "CONVERSATION_WORKFLOW": "የውይይት ስርዓት" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "አስመጣ", + "EXPORT": "ውጣ" + }, + "TYPES": { + "CONTACTS": "እውቂያዎች", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "አስመጣ" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "በቅርብ ይመጣል" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "አስመጣ", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "የተፈጠረበት", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "የተፈጠረበት", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "አልተሳካም", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "የCaptain ቅንብሮች", "DESCRIPTION": "ለCaptain የAI ሞዴሎችና ባለስልጣናት ያስተካክሉ። Captain በክሬዲት መሠረት ክፍያ ያደርጋል፣ ለእያንዳንዱ እርምጃ በሞዴሉ መሠረት ክሬዲቶች ይከፈላሉ።.", @@ -414,7 +541,9 @@ "DESCRIPTION": "የAI ኃይል ያላቸውን ባለስልጣናት አብራሪዎችን አንቀሳቅሱ ወይም ዝጋ።.", "AUDIO_TRANSCRIPTION": { "TITLE": "የድምጽ ትርጉም", - "DESCRIPTION": "የድምፅ መልእክቶችና የጥሪ መዝገቦችን በራስሰር ወደ ሊቀ መለኪያ ጽሑፍ ይቀይሩ።." + "DESCRIPTION": "የድምፅ መልእክቶችና የጥሪ መዝገቦችን በራስሰር ወደ ሊቀ መለኪያ ጽሑፍ ይቀይሩ።.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "የእርዳታ ማዕከል ፍለጋ መደበኛ እና መረጃ ማውጫ", @@ -439,7 +568,18 @@ "TITLE": "የአሁኑ እቅድ", "PLAN_NOTE": "አሁን በ**{plan}** እቅድ እና በ**{quantity}** ፈቃዶች ተመዝግበዋል", "SEAT_COUNT": "የቦታ ብዛት", - "RENEWS_ON": "በዚህ ቀን ይደገፋል" + "RENEWS_ON": "በዚህ ቀን ይደገፋል", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "ዋጋዎችን እይ", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "ክሬዲቶችን ግዛ", "LOADING": "አማራጮች እየጫኑ ነው...", "FETCH_ERROR": "የክሬዲት አማራጮችን ማስገባት አልተሳካም። እባክዎ እንደገና ይሞክሩ።.", + "RETRY": "Retry", "PURCHASE_ERROR": "ግዢውን ማካሄድ አልተሳካም። እባክዎ እንደገና ይሞክሩ።.", "PURCHASE_SUCCESS": "በተሳካ ሁኔታ {credits} ክሬዲቶች ወደ አካውንትዎ ተጨምሯል", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "ከፍተኛ ያድርጉ", "DURATION": "በእያንዳንዱ የወኪል ውይይቶች በ" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "ተጨማሪ የተላከ ሳጥኖች", "DESCRIPTION": "ለዚህ ፖሊሲ የሚሰሩ ኢንቦክሶችን ያክሉ።.", diff --git a/app/javascript/dashboard/i18n/locale/ar/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ar/advancedFilters.json index 92a5a0a4c..c2997bdfb 100644 --- a/app/javascript/dashboard/i18n/locale/ar/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ar/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "أو" }, "INPUT_PLACEHOLDER": "أدخل القيمة", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "يساوي", "not_equal_to": "لا يساوي", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "اسم المكلَّف", "INBOX_NAME": "اسم صندوق الوارد", "TEAM_NAME": "اسم الفريق", + "CONTACT": "جهات الاتصال", "CONVERSATION_IDENTIFIER": "معرف المحادثة", "CAMPAIGN_NAME": "اسم الحملة", "LABELS": "الوسوم", diff --git a/app/javascript/dashboard/i18n/locale/ar/chatlist.json b/app/javascript/dashboard/i18n/locale/ar/chatlist.json index df78ee993..d663986de 100644 --- a/app/javascript/dashboard/i18n/locale/ar/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ar/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ar/companies.json b/app/javascript/dashboard/i18n/locale/ar/companies.json index 7477c4df0..8190cd4f5 100644 --- a/app/javascript/dashboard/i18n/locale/ar/companies.json +++ b/app/javascript/dashboard/i18n/locale/ar/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { @@ -78,9 +82,9 @@ "DIALOGS": { "ADD": { "DESCRIPTION": "Search for an existing contact and link it to this company.", - "SEARCH_PLACEHOLDER": "Search contacts...", + "SEARCH_PLACEHOLDER": "البحث في جهات الاتصال...", "INITIAL": "Start typing to search contacts.", - "EMPTY": "No contacts found.", + "EMPTY": "لم يتم العثور على جهات اتصال.", "CONFIRM_TITLE": "Link contact", "CONFIRM_DESCRIPTION": "Confirm the company and contact before linking them.", "COMPANY_LABEL": "المنشأة", diff --git a/app/javascript/dashboard/i18n/locale/ar/contact.json b/app/javascript/dashboard/i18n/locale/ar/contact.json index f5db01558..d472c0574 100644 --- a/app/javascript/dashboard/i18n/locale/ar/contact.json +++ b/app/javascript/dashboard/i18n/locale/ar/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "السمات", "HISTORY": "History", "NOTES": "ملاحظات", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ar/conversation.json b/app/javascript/dashboard/i18n/locale/ar/conversation.json index 1794227c8..637357e79 100644 --- a/app/javascript/dashboard/i18n/locale/ar/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ar/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "يمكنك فقط الرد على هذه المحادثة باستخدام رسالة قالب بسبب", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "قيد نافذة الـ 24 ساعة", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "أنت ترد على:", "REMOVE_SELECTION": "إزالة التحديد", "DOWNLOAD": "تحميل", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "تعذر فتح الصوت", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "اسحب و أسقط هنا للإرفاق", + "IMAGE_UPLOAD_SUCCESS": "تم رفع الصورة بنجاح", "START_AUDIO_RECORDING": "بدء التسجيل الصوتي", "STOP_AUDIO_RECORDING": "إيقاف التسجيل الصوتي", "COPILOT_THINKING": "Copilot يفكر", @@ -303,6 +306,25 @@ "MESSAGE": "لا يمكنك التراجع عن هذا الإجراء", "DELETE": "حذف", "CANCEL": "إلغاء" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "الوصف", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "عرض الكل", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ar/emoji.json b/app/javascript/dashboard/i18n/locale/ar/emoji.json index d3fbd9848..82aa78eda 100644 --- a/app/javascript/dashboard/i18n/locale/ar/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ar/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "ابحث في الايموجي", "NOT_FOUND": "لا يوجد إيموجي يطابق بحثك", "REMOVE": "حذف" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "لا يوجد إيموجي يطابق بحثك", + "NO_ICON": "No icons match your search", + "REMOVE": "حذف", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ar/helpCenter.json b/app/javascript/dashboard/i18n/locale/ar/helpCenter.json index 5289aa444..18a7e4eda 100644 --- a/app/javascript/dashboard/i18n/locale/ar/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ar/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "نُشرت", "ARCHIVED": "أرشفة" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "البحث في المقالات...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "حذف", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "فئة جديدة", "EDIT_CATEGORY": "تعديل الفئة", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "لم يتم العثور على الفئات", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "حذف" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "الاسم" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "إضافة لغة جديدة", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "معاينة", "PUBLISH": "نشر", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "مسودة", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "العنوان" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json index 6acb48cfc..9ad9f3a19 100644 --- a/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ar/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "المتابعة مع تيكتوك", "CONNECT_YOUR_TIKTOK_PROFILE": "الاتصال بحسابك في تيكتوك", "HELP": "لإضافة ملفك الشخصي على TikTok كقناة، عليك مصادقة ملفك الشخصي على TikTok بالنقر على \"متابعة مع TikTok\".", "ERROR_MESSAGE": "حدث خطأ أثناء الاتصال بـ TikTok، يرجى المحاولة مرة أخرى", - "ERROR_AUTH": "حدث خطأ أثناء الاتصال بـ TikTok، يرجى المحاولة مرة أخرى" + "ERROR_AUTH": "حدث خطأ أثناء الاتصال بـ TikTok، يرجى المحاولة مرة أخرى", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "لإضافة حساب تويتر الخاص بك كقناة تواصل، تحتاج إلى مصادقة حسابك على تويتر بك بالنقر على زر \"تسجيل الدخول باستخدام تويتر\" ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "مُعرف حساب الأعمال", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "مفتاح API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "أغلق", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "إضافة", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "صندوق الوارد", + "PHONE_NUMBER": "رقم الهاتف", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "العودة", + "CANCEL": "إلغاء", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ar/index.js b/app/javascript/dashboard/i18n/locale/ar/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ar/index.js +++ b/app/javascript/dashboard/i18n/locale/ar/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ar/integrations.json b/app/javascript/dashboard/i18n/locale/ar/integrations.json index 2b2dfcef9..d32b99908 100644 --- a/app/javascript/dashboard/i18n/locale/ar/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ar/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "الأحداث المشتركة", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "قائد", "HEADER_KNOW_MORE": "اعرف المزيد", + "OVERVIEW": { + "HEADER": "نظرة عامة", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "تجاهل" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "تجاهل" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "ساحة اللعب", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "الفواتير", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "المساعدون", "SWITCH_ASSISTANT": "التبديل بين المساعدين", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "الوصف", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "غير متاح", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "نسخ", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "عرض التفاصيل", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/ar/onboarding.json b/app/javascript/dashboard/i18n/locale/ar/onboarding.json index 6096c7fa2..458cb8146 100644 --- a/app/javascript/dashboard/i18n/locale/ar/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ar/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "حدث خطأ ما. الرجاء المحاولة مرة أخرى.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "مركز المساعدة", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "ربط الاتصال", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "البريد الإلكتروني", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "عرض الكل", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "ربط الاتصال", + "BACK": "العودة", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ar/report.json b/app/javascript/dashboard/i18n/locale/ar/report.json index 735d2ca13..08d7d51e3 100644 --- a/app/javascript/dashboard/i18n/locale/ar/report.json +++ b/app/javascript/dashboard/i18n/locale/ar/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "لم يتم العثور على النتائج" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "غير مسند", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ar/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ar/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ar/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ar/settings.json b/app/javascript/dashboard/i18n/locale/ar/settings.json index 6bc1d348d..b8297458f 100644 --- a/app/javascript/dashboard/i18n/locale/ar/settings.json +++ b/app/javascript/dashboard/i18n/locale/ar/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "رمز المصادقة", "NOTE": "يمكن استخدام هذا رمز المصادقة إذا كنت تبني تطبيقات API للتكامل مع Chatwoot", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "نسخ", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "كل الحملات", "CAPTAIN": "قائد", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "نظرة عامة", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "الإشعارات", "CANNED_RESPONSES": "الردود الجاهزة", "INTEGRATIONS": "خيارات الربط", + "DATA": "Data", "PROFILE_SETTINGS": "إعدادات الملف الشخصي", "ACCOUNT_SETTINGS": "إعدادات الحساب", "APPLICATIONS": "التطبيقات", @@ -379,11 +393,124 @@ "INFO_TEXT": "السماح للنظام بوضع علامة غير متصل تلقائياً عند عدم استخدام التطبيق أو لوحة التحكم.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "فرز", + "SORT_BY": "ترتيب حسب", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "قراءة المستندات", "SECURITY": "Security", "CAPTAIN_AI": "قائد", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "استيراد", + "EXPORT": "تصدير" + }, + "TYPES": { + "CONTACTS": "جهات الاتصال", + "CONVERSATIONS": "المحادثات", + "MESSAGES": "الرسائل" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "إلغاء", + "IMPORT": "استيراد" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "استيراد", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "الاسم", + "TYPE": "النوع", + "STATUS": "الحالة", + "IMPORTED": "Imported", + "CREATED": "تم إنشاؤها", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "تم إنشاؤها", + "DURATION": "المدة", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "الكل", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "رسالة" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "تحديث", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "مكتمل", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "الباقة الحالية", "PLAN_NOTE": "أنت مشترك حاليا في باقة**{plan}** مع تراخيص **{quantity}**", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -772,10 +913,14 @@ }, "FAIR_DISTRIBUTION": { "LABEL": "Fair distribution policy", - "DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.", + "DESCRIPTION": "حدّد الحد الأقصى لعدد المحادثات التي يمكن إسنادها إلى كل وكيل خلال مدّة زمنية، لتجنّب تحميل أي وكيل فوق طاقته. القيمة الافتراضية لهذا الحقل الإلزامي هي 100 محادثة في الساعة.", "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/az/advancedFilters.json b/app/javascript/dashboard/i18n/locale/az/advancedFilters.json index a991cb25b..9bfc7ce93 100644 --- a/app/javascript/dashboard/i18n/locale/az/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/az/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Əlaqələrdə axtarış", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Əlaqə", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/az/chatlist.json b/app/javascript/dashboard/i18n/locale/az/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/az/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/az/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/az/companies.json b/app/javascript/dashboard/i18n/locale/az/companies.json index faf0fc573..0884877f1 100644 --- a/app/javascript/dashboard/i18n/locale/az/companies.json +++ b/app/javascript/dashboard/i18n/locale/az/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/az/contact.json b/app/javascript/dashboard/i18n/locale/az/contact.json index acf103ceb..af0512734 100644 --- a/app/javascript/dashboard/i18n/locale/az/contact.json +++ b/app/javascript/dashboard/i18n/locale/az/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Xüsusiyyətlər", "HISTORY": "Tarix", "NOTES": "Qeydlər", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/az/conversation.json b/app/javascript/dashboard/i18n/locale/az/conversation.json index eff53867c..cad515f4f 100644 --- a/app/javascript/dashboard/i18n/locale/az/conversation.json +++ b/app/javascript/dashboard/i18n/locale/az/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Bu söhbətə yalnız şablon mesajı ilə cavab verə bilərsiniz, çünki", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 saatlıq mesaj pəncərəsi məhdudiyyəti", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Bu Instagram hesabı yeni Instagram kanalının daxil olan qutusuna köçürülüb. Bütün yeni mesajlar orada görünəcək. Bu söhbətdən artıq mesaj göndərə bilməyəcəksiniz.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Siz cavab verirsiniz:", "REMOVE_SELECTION": "Seçimi sil", "DOWNLOAD": "Yüklə", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Səsi açmaq mümkün olmadı", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Qoşmaq üçün buraya sürükləyin və buraxın", + "IMAGE_UPLOAD_SUCCESS": "Şəkil uğurla yükləndi", "START_AUDIO_RECORDING": "Səs yazısını başla", "STOP_AUDIO_RECORDING": "Səs yazısını dayandırın", "COPILOT_THINKING": "Copilot düşünür", @@ -303,6 +306,25 @@ "MESSAGE": "Bu əməliyyatı geri qaytara bilməzsiniz", "DELETE": "Sil", "CANCEL": "Ləğv et" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Sifariş #{id}", diff --git a/app/javascript/dashboard/i18n/locale/az/emoji.json b/app/javascript/dashboard/i18n/locale/az/emoji.json index d5b96f0f9..00370f2ce 100644 --- a/app/javascript/dashboard/i18n/locale/az/emoji.json +++ b/app/javascript/dashboard/i18n/locale/az/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Sil", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/az/helpCenter.json b/app/javascript/dashboard/i18n/locale/az/helpCenter.json index eefb0c8da..2d25708de 100644 --- a/app/javascript/dashboard/i18n/locale/az/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/az/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Məqalələrdə axtarış edin...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Delete" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Kateqoriyasız" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json index 28af6066e..16963c3e6 100644 --- a/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/az/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram ilə əlaqədə xəta baş verdi, zəhmət olmasa yenidən cəhd edin", "ERROR_AUTH": "Instagram ilə əlaqədə xəta baş verdi, zəhmət olmasa yenidən cəhd edin", "NEW_INBOX_SUGGESTION": "Bu Instagram hesabı əvvəllər başqa bir poçt qutusu ilə əlaqələndirilmişdi və indi buraya köçürülüb. Bütün yeni mesajlar burada görünəcək. Köhnə poçt qutusu bu hesab üçün mesaj göndərmək və qəbul etmək imkanına malik olmayacaq.", - "DUPLICATE_INBOX_BANNER": "Bu Instagram hesabı yeni Instagram kanal poçt qutusuna köçürülüb. Bu poçt qutusundan Instagram mesajları göndərə və qəbul edə bilməyəcəksiniz." + "DUPLICATE_INBOX_BANNER": "Bu Instagram hesabı yeni Instagram kanal poçt qutusuna köçürülüb. Bu poçt qutusundan Instagram mesajları göndərə və qəbul edə bilməyəcəksiniz.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "TikTok ilə davam et", "CONNECT_YOUR_TIKTOK_PROFILE": "TikTok profilinizi qoşun", "HELP": "TikTok profilinizi kanal kimi əlavə etmək üçün 'TikTok ilə davam et' düyməsini klikləyərək profilinizi təsdiqləməlisiniz ", "ERROR_MESSAGE": "TikTok-a qoşularkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin", - "ERROR_AUTH": "TikTok-a qoşularkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin" + "ERROR_AUTH": "TikTok-a qoşularkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Twitter profilinizi kanal kimi əlavə etmək üçün 'Twitter ilə daxil ol' düyməsini klikləyərək Twitter profilinizi təsdiqləməlisiniz ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "Bu poçt qutusu WhatsApp daxili qeydiyyatı vasitəsilə qoşulub.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "WhatsApp Biznes parametrlərinizi yeniləmək üçün bu poçt qutusunu yenidən konfiqurasiya edə bilərsiniz.", "WHATSAPP_RECONFIGURE_BUTTON": "Yenidən konfiqurasiya et", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Biznes Hesab ID-si", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Açarı", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "WhatsApp Biznesə qoşulun", "WHATSAPP_CONNECT_SUBHEADER": "Asan idarəetmə üçün WhatsApp daxili qeydiyyatına yüksəldin.", "WHATSAPP_CONNECT_DESCRIPTION": "Bu poçt qutusunu inkişaf etmiş xüsusiyyətlər və asan idarəetmə üçün WhatsApp Biznesə qoşun.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Mövcud şablonlarınızı yeniləmək üçün WhatsApp-dan mesaj şablonlarını əl ilə sinxronlaşdırın.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Şablonları sinxronlaşdır", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Şablonların sinxronizasiyası uğurla başlandı. Yenilənməsi bir neçə dəqiqə çəkə bilər.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Bağla", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Göstərilən telefon nömrəsi", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Əlavə et", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Telefon nömrəsi", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Davam et", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/az/index.js b/app/javascript/dashboard/i18n/locale/az/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/az/index.js +++ b/app/javascript/dashboard/i18n/locale/az/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/az/integrations.json b/app/javascript/dashboard/i18n/locale/az/integrations.json index be0b09003..0cc0e160d 100644 --- a/app/javascript/dashboard/i18n/locale/az/integrations.json +++ b/app/javascript/dashboard/i18n/locale/az/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Abunə olunan hadisələr", "LEARN_MORE": "Webhooklar haqqında daha çox məlumat əldə edin", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Gizli", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Daha ətraflı", + "OVERVIEW": { + "HEADER": "Ümumi Baxış", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "Bu ay", + "LAST_MONTH": "Keçən ay" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Gözləyən FAQ-lar", + "DOCUMENTS": "Sənədlər" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Sınaq sahəsi", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Ödəniş", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Köməkçilər", "SWITCH_ASSISTANT": "Köməkçilər arasında keçid edin", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Assistent adını daxil edin", "ERROR": "Ad tələb olunur" }, - "TEMPERATURE": { - "LABEL": "Cavab Temperaturu", - "DESCRIPTION": "Assistentin cavablarının nə qədər yaradıcı və ya məhdud olacağını tənzimləyin. Aşağı dəyərlər daha fokuslanmış və deterministik cavablar verir, yüksək dəyərlər isə daha yaradıcı və müxtəlif nəticələr verir." - }, "DESCRIPTION": { "LABEL": "Təsvir", "PLACEHOLDER": "Assistent təsvirini daxil edin", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Sənədlər", "ADD_NEW": "Yeni sənəd yarat", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} seçildi", "SELECT_ALL": "Hamısını seç ({count})", "UNSELECT_ALL": "Hamısını seçmə ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Əlaqəli FAQ-lar", - "DESCRIPTION": "Bu FAQ-lar birbaşa sənəddən yaradılıb." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopyala", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Sənədi bilik mənbəyi kimi əlavə etmək üçün onun URL-ni daxil edin və əlaqələndiriləcək assistenti seçin.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Sənəd silinərkən xəta baş verdi, zəhmət olmasa yenidən cəhd edin." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Əlaqəli cavablara bax", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Sənədi sil" diff --git a/app/javascript/dashboard/i18n/locale/az/onboarding.json b/app/javascript/dashboard/i18n/locale/az/onboarding.json index 6b5455407..657d4941c 100644 --- a/app/javascript/dashboard/i18n/locale/az/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/az/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Davam et", + "SKIP": "Keç", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Kömək Mərkəzi", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Qoşul", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Səs", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Qoşul", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/az/report.json b/app/javascript/dashboard/i18n/locale/az/report.json index 5b7f5b61e..23c50bfd1 100644 --- a/app/javascript/dashboard/i18n/locale/az/report.json +++ b/app/javascript/dashboard/i18n/locale/az/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Nəticə tapılmadı" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Təyin olunmamış", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "{total} nəticədən {start} - {end} göstərilir", "PER_PAGE_TEMPLATE": "{size} / səhifə" diff --git a/app/javascript/dashboard/i18n/locale/az/sessionLimit.json b/app/javascript/dashboard/i18n/locale/az/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/az/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/az/settings.json b/app/javascript/dashboard/i18n/locale/az/settings.json index a74576641..09327bcc8 100644 --- a/app/javascript/dashboard/i18n/locale/az/settings.json +++ b/app/javascript/dashboard/i18n/locale/az/settings.json @@ -86,9 +86,21 @@ "NOTE": "Hesabınız üçün əlavə təhlükəsizlik xüsusiyyətlərini idarə edin.", "MFA_BUTTON": "İki Faktorlu Doğrulamaya Nəzarət Edin" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Giriş Tokeni", "NOTE": "Bu token API əsaslı inteqrasiya qurarkən istifadə edilə bilər", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopyala", "RESET": "Sıfırla", "CONFIRM_RESET": "Əminsiniz?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Bütün Şirkətlər", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Köməkçilər", + "CAPTAIN_OVERVIEW": "Ümumi Baxış", "CAPTAIN_DOCUMENTS": "Sənədlər", "CAPTAIN_RESPONSES": "Tez-tez verilən suallar", "CAPTAIN_TOOLS": "Alətlər", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Bildirişlər", "CANNED_RESPONSES": "Hazır Cavablar", "INTEGRATIONS": "İnteqrasiyalar", + "DATA": "Data", "PROFILE_SETTINGS": "Profil parametrləri", "ACCOUNT_SETTINGS": "Hesab parametrləri", "APPLICATIONS": "Tətbiqlər", @@ -379,11 +393,124 @@ "INFO_TEXT": "Sistem tətbiq və ya paneldən istifadə etmədiyiniz zaman sizi avtomatik olaraq offline kimi işarələsin.", "INFO_SHORT": "Tətbiqdən istifadə etmədiyiniz zaman avtomatik olaraq offline kimi işarələyin." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sırala", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Sənədləri oxuyun", "SECURITY": "Təhlükəsizlik", "CAPTAIN_AI": "Kapitan", "CONVERSATION_WORKFLOW": "Söhbət İş Axını" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "İdxal et", + "EXPORT": "İxrac et" + }, + "TYPES": { + "CONTACTS": "Əlaqələr", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Mesajlar" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "İdxal et" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Tezliklə" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "İdxal et", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Yaradılıb", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Yaradılıb", + "DURATION": "Müddət", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Kapitan Ayarları", "DESCRIPTION": "Kapitan üçün AI modellərinizi və xüsusiyyətlərinizi konfiqurasiya edin. Kapitan kredit əsaslı ödəniş sistemi ilə işləyir, seçilmiş modelə əsasən Kapitanın hər hərəkəti üçün kreditlər hesablanacaq.", @@ -414,7 +541,9 @@ "DESCRIPTION": "AI ilə işləyən xüsusiyyətləri aktivləşdirin və ya deaktiv edin.", "AUDIO_TRANSCRIPTION": { "TITLE": "Səs Yazısı", - "DESCRIPTION": "Səs mesajlarını və zəng yazılarını avtomatik olaraq axtarıla bilən mətn transkriptlərinə çevirin." + "DESCRIPTION": "Səs mesajlarını və zəng yazılarını avtomatik olaraq axtarıla bilən mətn transkriptlərinə çevirin.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Kömək Mərkəzi Axtarış İndeksləşdirilməsi", @@ -439,7 +568,18 @@ "TITLE": "Cari Plan", "PLAN_NOTE": "Hal-hazırda **{plan}** planına və **{quantity}** lisenziyaya abunəsiniz", "SEAT_COUNT": "Oturacaq sayı", - "RENEWS_ON": "Yenilənir" + "RENEWS_ON": "Yenilənir", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Qiymətləri Görüntülə", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Kreditləri satın al", "LOADING": "Seçimlər yüklənir...", "FETCH_ERROR": "Kredit seçimləri yüklənmədi. Zəhmət olmasa yenidən cəhd edin.", + "RETRY": "Retry", "PURCHASE_ERROR": "Satınalma emal edilə bilmədi. Zəhmət olmasa yenidən cəhd edin.", "PURCHASE_SUCCESS": "Hesabınıza uğurla {credits} kredit əlavə edildi", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Maksimum təyin et", "DURATION": "Hər agent üçün söhbətlər hər" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Əlavə edilmiş qutular", "DESCRIPTION": "Bu siyasətin tətbiq olunacağı qutuları əlavə edin.", diff --git a/app/javascript/dashboard/i18n/locale/bg/advancedFilters.json b/app/javascript/dashboard/i18n/locale/bg/advancedFilters.json index 955004f7e..c4fac2146 100644 --- a/app/javascript/dashboard/i18n/locale/bg/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/bg/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ИЛИ" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Равно на", "not_equal_to": "Различно от", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Етикети", diff --git a/app/javascript/dashboard/i18n/locale/bg/chatlist.json b/app/javascript/dashboard/i18n/locale/bg/chatlist.json index 35e10da82..04a2f3235 100644 --- a/app/javascript/dashboard/i18n/locale/bg/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/bg/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/bg/companies.json b/app/javascript/dashboard/i18n/locale/bg/companies.json index 59604e5f6..23858000c 100644 --- a/app/javascript/dashboard/i18n/locale/bg/companies.json +++ b/app/javascript/dashboard/i18n/locale/bg/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/bg/contact.json b/app/javascript/dashboard/i18n/locale/bg/contact.json index 8d35e6b3a..76f73e96e 100644 --- a/app/javascript/dashboard/i18n/locale/bg/contact.json +++ b/app/javascript/dashboard/i18n/locale/bg/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Бележки", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/bg/conversation.json b/app/javascript/dashboard/i18n/locale/bg/conversation.json index 43b582b2f..257660178 100644 --- a/app/javascript/dashboard/i18n/locale/bg/conversation.json +++ b/app/javascript/dashboard/i18n/locale/bg/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "You are replying to:", "REMOVE_SELECTION": "Remove Selection", "DOWNLOAD": "Download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot мисли", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Изтрий", "CANCEL": "Отмени" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Описание", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/bg/emoji.json b/app/javascript/dashboard/i18n/locale/bg/emoji.json index d5b96f0f9..f5572d569 100644 --- a/app/javascript/dashboard/i18n/locale/bg/emoji.json +++ b/app/javascript/dashboard/i18n/locale/bg/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Remove", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/bg/helpCenter.json b/app/javascript/dashboard/i18n/locale/bg/helpCenter.json index fbb944c92..b4c309488 100644 --- a/app/javascript/dashboard/i18n/locale/bg/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/bg/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Изтрий", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Изтрий" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Име" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json index 2867f4db2..0decaf12f 100644 --- a/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/bg/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "To add your Twitter profile as a channel, you need to authenticate your Twitter Profile by clicking on 'Sign in with Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Close", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Добавяне", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Входяща кутия", + "PHONE_NUMBER": "Телефон", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Отмени", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/bg/index.js b/app/javascript/dashboard/i18n/locale/bg/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/bg/index.js +++ b/app/javascript/dashboard/i18n/locale/bg/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/bg/integrations.json b/app/javascript/dashboard/i18n/locale/bg/integrations.json index 419aba43e..a4d5d1be1 100644 --- a/app/javascript/dashboard/i18n/locale/bg/integrations.json +++ b/app/javascript/dashboard/i18n/locale/bg/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Научете повече", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Площадка", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Асистенти", "SWITCH_ASSISTANT": "Превключване между асистенти", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Описание", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Няма информация", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copy", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Вижте детайлите", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/bg/onboarding.json b/app/javascript/dashboard/i18n/locale/bg/onboarding.json index d7c960002..51d511091 100644 --- a/app/javascript/dashboard/i18n/locale/bg/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/bg/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connect", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connect", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/bg/report.json b/app/javascript/dashboard/i18n/locale/bg/report.json index 1192c874e..4e057ed91 100644 --- a/app/javascript/dashboard/i18n/locale/bg/report.json +++ b/app/javascript/dashboard/i18n/locale/bg/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Няма намерени резултати" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Неназначен", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/bg/sessionLimit.json b/app/javascript/dashboard/i18n/locale/bg/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/bg/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/bg/settings.json b/app/javascript/dashboard/i18n/locale/bg/settings.json index d3079a05d..716a42153 100644 --- a/app/javascript/dashboard/i18n/locale/bg/settings.json +++ b/app/javascript/dashboard/i18n/locale/bg/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Access Token", "NOTE": "This token can be used if you are building an API based integration", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copy", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifications", "CANNED_RESPONSES": "Готови отговори", "INTEGRATIONS": "Integrations", + "DATA": "Data", "PROFILE_SETTINGS": "Profile Settings", "ACCOUNT_SETTINGS": "Account Settings", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Внасяне", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Контакти", + "CONVERSATIONS": "Разговори", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Отмени", + "IMPORT": "Внасяне" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Внасяне", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Име", + "TYPE": "Тип", + "STATUS": "Статус", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Всички", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Съобщение" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Завършено", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/bn/advancedFilters.json b/app/javascript/dashboard/i18n/locale/bn/advancedFilters.json index a991cb25b..77201345e 100644 --- a/app/javascript/dashboard/i18n/locale/bn/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/bn/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "যোগাযোগ অনুসন্ধান করুন", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "যোগাযোগ", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/bn/chatlist.json b/app/javascript/dashboard/i18n/locale/bn/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/bn/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/bn/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/bn/companies.json b/app/javascript/dashboard/i18n/locale/bn/companies.json index ae450a3c8..f19722d2b 100644 --- a/app/javascript/dashboard/i18n/locale/bn/companies.json +++ b/app/javascript/dashboard/i18n/locale/bn/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/bn/contact.json b/app/javascript/dashboard/i18n/locale/bn/contact.json index 88ff31edc..74e686470 100644 --- a/app/javascript/dashboard/i18n/locale/bn/contact.json +++ b/app/javascript/dashboard/i18n/locale/bn/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "বৈশিষ্ট্যসমূহ", "HISTORY": "ইতিহাস", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/bn/conversation.json b/app/javascript/dashboard/i18n/locale/bn/conversation.json index f79713081..5deb1527a 100644 --- a/app/javascript/dashboard/i18n/locale/bn/conversation.json +++ b/app/javascript/dashboard/i18n/locale/bn/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "আপনি শুধুমাত্র টেমপ্লেট বার্তা ব্যবহার করে এই আলাপে উত্তর দিতে পারবেন কারণ", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "২৪ ঘণ্টার বার্তা সীমাবদ্ধতা", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "এই Instagram অ্যাকাউন্টটি নতুন Instagram চ্যানেল ইনবক্সে স্থানান্তরিত হয়েছে। সব নতুন বার্তা সেখানে দেখা যাবে। আপনি আর এই কথোপকথন থেকে বার্তা পাঠাতে পারবেন না।", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "আপনি যাকে উত্তর দিচ্ছেন:", "REMOVE_SELECTION": "নির্বাচন সরান", "DOWNLOAD": "ডাউনলোড", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "অডিও খোলা যায়নি", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "সংযুক্ত করতে এখানে ড্র্যাগ ও ড্রপ করুন", + "IMAGE_UPLOAD_SUCCESS": "ছবি সফলভাবে আপলোড হয়েছে", "START_AUDIO_RECORDING": "অডিও রেকর্ডিং শুরু করুন", "STOP_AUDIO_RECORDING": "অডিও রেকর্ডিং বন্ধ করুন", "COPILOT_THINKING": "Copilot ভাবছে", @@ -303,6 +306,25 @@ "MESSAGE": "এই কাজটি পূর্বাবস্থায় ফেরানো যাবে না", "DELETE": "মুছে ফেলুন", "CANCEL": "বাতিল করুন" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "সব দেখুন", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/bn/emoji.json b/app/javascript/dashboard/i18n/locale/bn/emoji.json index d5b96f0f9..c70898320 100644 --- a/app/javascript/dashboard/i18n/locale/bn/emoji.json +++ b/app/javascript/dashboard/i18n/locale/bn/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "সরান", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/bn/helpCenter.json b/app/javascript/dashboard/i18n/locale/bn/helpCenter.json index 129a91b01..755e41a0b 100644 --- a/app/javascript/dashboard/i18n/locale/bn/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/bn/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "প্রকাশিত", "ARCHIVED": "সংরক্ষিত" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "বিভাগবিহীন" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "সমস্ত ভাষা" }, + "SEARCH_PLACEHOLDER": "নিবন্ধ অনুসন্ধান করুন...", "NEW_ARTICLE": "নতুন নিবন্ধ" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "এই বিভাগে কোনো নিবন্ধ নেই", "SUBTITLE": "এই বিভাগের নিবন্ধগুলি এখানে প্রদর্শিত হবে" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "মুছে ফেলুন", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "নতুন বিভাগ", "EDIT_CATEGORY": "বিভাগ সম্পাদনা করুন", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} বিভাগ | {n} বিভাগসমূহ", "BREADCRUMB": { "CATEGORY_LOCALE": "বিভাগসমূহ ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "কোনো বিভাগ পাওয়া যায়নি", "SUBTITLE": "বিভাগগুলো এখানে দেখানো হবে. 'নতুন বিভাগ' বোতামে ক্লিক করে আপনি একটি বিভাগ যোগ করতে পারেন." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} নিবন্ধ | {count} নিবন্ধসমূহ" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "কোনো লোকেল উপলব্ধ নেই | {n} লোকেল | {n} লোকেলসমূহ", "NEW_LOCALE_BUTTON_TEXT": "নতুন লোকেল", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} নিবন্ধ | {count} নিবন্ধসমূহ", "CATEGORIES_COUNT": "{count} বিভাগ | {count} বিভাগসমূহ", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "ডিফল্ট করুন", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "মুছে ফেলুন" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "বিভাগহীন" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "নাম" + }, + "PAGE_TITLE": { + "LABEL": "পৃষ্ঠার শিরোনাম" + }, + "HEADER_TEXT": { + "LABEL": "হেডার টেক্সট" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "নতুন লোকেল যোগ করুন", "DESCRIPTION": "এই নিবন্ধটি যে ভাষায় লেখা হবে তা নির্বাচন করুন. এটি আপনার অনুবাদ তালিকায় যোগ হবে, এবং পরে আপনি আরও ভাষা যোগ করতে পারবেন.", @@ -730,10 +791,30 @@ }, "PREVIEW": "পূর্বরূপ", "PUBLISH": "প্রকাশ করুন", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "খসড়া", "ARCHIVE": "আর্কাইভ", "BACK_TO_ARTICLES": "নিবন্ধগুলিতে ফিরে যান" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "আরও বৈশিষ্ট্য", "UNCATEGORIZED": "বিভাগবিহীন", diff --git a/app/javascript/dashboard/i18n/locale/bn/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/bn/inboxMgmt.json index 9446eee8b..736a74a1b 100644 --- a/app/javascript/dashboard/i18n/locale/bn/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/bn/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram-এ সংযোগ করতে একটি ত্রুটি হয়েছে, অনুগ্রহ করে আবার চেষ্টা করুন", "ERROR_AUTH": "Instagram-এ সংযোগ করতে একটি ত্রুটি হয়েছে, অনুগ্রহ করে আবার চেষ্টা করুন", "NEW_INBOX_SUGGESTION": "এই Instagram অ্যাকাউন্টটি পূর্বে অন্য একটি ইনবক্সের সাথে যুক্ত ছিল এবং এখন এখানে স্থানান্তরিত হয়েছে। সব নতুন বার্তা এখানে দেখা যাবে। পুরনো ইনবক্সটি আর এই অ্যাকাউন্টের জন্য বার্তা পাঠাতে বা গ্রহণ করতে পারবে না।.", - "DUPLICATE_INBOX_BANNER": "এই Instagram অ্যাকাউন্টটি নতুন Instagram চ্যানেল ইনবক্সে স্থানান্তরিত হয়েছে। আপনি আর এই ইনবক্স থেকে Instagram বার্তা পাঠাতে বা গ্রহণ করতে পারবেন না।." + "DUPLICATE_INBOX_BANNER": "এই Instagram অ্যাকাউন্টটি নতুন Instagram চ্যানেল ইনবক্সে স্থানান্তরিত হয়েছে। আপনি আর এই ইনবক্স থেকে Instagram বার্তা পাঠাতে বা গ্রহণ করতে পারবেন না।.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "TikTok দিয়ে চালিয়ে যান", "CONNECT_YOUR_TIKTOK_PROFILE": "আপনার TikTok প্রোফাইল সংযুক্ত করুন", "HELP": "আপনার TikTok প্রোফাইলকে একটি চ্যানেল হিসেবে যোগ করতে, আপনাকে 'TikTok দিয়ে চালিয়ে যান' ক্লিক করে TikTok প্রোফাইলটি প্রমাণীকরণ করতে হবে ", "ERROR_MESSAGE": "TikTok-এ সংযোগ করতে সমস্যা হয়েছে, অনুগ্রহ করে আবার চেষ্টা করুন", - "ERROR_AUTH": "TikTok-এ সংযোগ করতে সমস্যা হয়েছে, অনুগ্রহ করে আবার চেষ্টা করুন" + "ERROR_AUTH": "TikTok-এ সংযোগ করতে সমস্যা হয়েছে, অনুগ্রহ করে আবার চেষ্টা করুন", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "আপনার টুইটার প্রোফাইলকে একটি চ্যানেল হিসেবে যোগ করতে, আপনাকে 'Sign in with Twitter' ক্লিক করে আপনার টুইটার প্রোফাইল প্রমাণীকরণ করতে হবে। ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "এই ইনবক্সটি WhatsApp এম্বেডেড সাইনআপের মাধ্যমে সংযুক্ত হয়েছে।.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "আপনি এই ইনবক্সটি পুনরায় কনফিগার করে আপনার WhatsApp Business সেটিংস আপডেট করতে পারেন।.", "WHATSAPP_RECONFIGURE_BUTTON": "পুনরায় কনফিগার করুন", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "বিজনেস অ্যাকাউন্ট আইডি", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API কী", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "WhatsApp Business-এ সংযুক্ত করুন", "WHATSAPP_CONNECT_SUBHEADER": "সহজ ব্যবস্থাপনার জন্য WhatsApp এম্বেডেড সাইনআপে আপগ্রেড করুন।.", "WHATSAPP_CONNECT_DESCRIPTION": "উন্নত ফিচার ও সহজ ব্যবস্থাপনার জন্য এই ইনবক্সটি WhatsApp Business-এর সাথে সংযুক্ত করুন।.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "আপনার উপলব্ধ টেমপ্লেট আপডেট করতে WhatsApp থেকে মেসেজ টেমপ্লেটগুলো ম্যানুয়ালি সিঙ্ক করুন।.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "টেমপ্লেট সিঙ্ক করুন", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "টেমপ্লেট সিঙ্ক সফলভাবে শুরু হয়েছে। আপডেট হতে কয়েক মিনিট সময় লাগতে পারে।.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "বন্ধ করুন", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "ফোন নম্বর প্রদর্শন করুন", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "যোগ করুন", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "ফোন নম্বর", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "বাতিল করুন", + "CONTINUE": "চালিয়ে যান", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/bn/integrations.json b/app/javascript/dashboard/i18n/locale/bn/integrations.json index bcadf8389..acdd9ddc4 100644 --- a/app/javascript/dashboard/i18n/locale/bn/integrations.json +++ b/app/javascript/dashboard/i18n/locale/bn/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "সাবস্ক্রাইব করা ইভেন্ট", "LEARN_MORE": "ওয়েবহুক সম্পর্কে আরও জানুন", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "গোপন কোড", "COPY": "গোপন কোড ক্লিপবোর্ডে কপি করুন", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "ক্যাপ্টেন", "HEADER_KNOW_MORE": "আরও জানুন", + "OVERVIEW": { + "HEADER": "সারাংশ", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "এই মাস", + "LAST_MONTH": "গত মাস" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "বিচারাধীন FAQ", + "DOCUMENTS": "নথিপত্র" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "প্লেগ্রাউন্ড", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "বিলিং", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "সহকারীসমূহ", "SWITCH_ASSISTANT": "সহকারী পরিবর্তন করুন", @@ -494,10 +577,6 @@ "PLACEHOLDER": "সহকারীর নাম লিখুন", "ERROR": "নাম আবশ্যক" }, - "TEMPERATURE": { - "LABEL": "প্রতিক্রিয়ার তাপমাত্রা", - "DESCRIPTION": "সহকারীর প্রতিক্রিয়া কতটা সৃজনশীল বা সীমাবদ্ধ হবে তা সামঞ্জস্য করুন। কম মান আরও কেন্দ্রীভূত এবং নির্ধারিত প্রতিক্রিয়া তৈরি করে, যখন উচ্চ মান আরও সৃজনশীল এবং বৈচিত্র্যময় আউটপুটের অনুমতি দেয়।" - }, "DESCRIPTION": { "LABEL": "বর্ণনা", "PLACEHOLDER": "সহকারীর বর্ণনা লিখুন", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "নথিপত্র", "ADD_NEW": "নতুন নথি তৈরি করুন", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} নির্বাচিত", "SELECT_ALL": "সব নির্বাচন করুন ({count})", "UNSELECT_ALL": "সব নির্বাচন বাতিল করুন ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "সম্পর্কিত FAQ", - "DESCRIPTION": "এই FAQ গুলো সরাসরি ডকুমেন্ট থেকে তৈরি হয়েছে।" + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "কপি করুন", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "নথির URL প্রবেশ করান যাতে এটি একটি জ্ঞান উৎস হিসেবে যোগ করা যায় এবং এটি কোন সহকারীর সাথে যুক্ত হবে তা নির্বাচন করুন।", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "নথি মুছে ফেলতে একটি ত্রুটি হয়েছে, অনুগ্রহ করে আবার চেষ্টা করুন।" }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "সম্পর্কিত উত্তরসমূহ দেখুন", + "VIEW_DETAILS": "বিস্তারিত দেখুন", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "নথি মুছে ফেলুন" diff --git a/app/javascript/dashboard/i18n/locale/bn/onboarding.json b/app/javascript/dashboard/i18n/locale/bn/onboarding.json index 73130cfcd..24fb8e3fe 100644 --- a/app/javascript/dashboard/i18n/locale/bn/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/bn/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "চালিয়ে যান", + "SKIP": "এড়িয়ে যান", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "প্রস্তুত", + "HELP_CENTER": "সহায়তা কেন্দ্র", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} বিভাগ | {count} বিভাগসমূহ", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "সংযোগ করুন", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "ভয়েস", + "VIEW_ALL": "সব দেখুন", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "সংযোগ করুন", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/bn/report.json b/app/javascript/dashboard/i18n/locale/bn/report.json index c64c2edef..8577438de 100644 --- a/app/javascript/dashboard/i18n/locale/bn/report.json +++ b/app/javascript/dashboard/i18n/locale/bn/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "ফিল্টার পরিষ্কার করুন", "EMPTY_LIST": "কোনও ফলাফল পাওয়া যায়নি" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "অবরোধহীন", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/bn/sessionLimit.json b/app/javascript/dashboard/i18n/locale/bn/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/bn/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/bn/settings.json b/app/javascript/dashboard/i18n/locale/bn/settings.json index 8ff2971be..d246e7524 100644 --- a/app/javascript/dashboard/i18n/locale/bn/settings.json +++ b/app/javascript/dashboard/i18n/locale/bn/settings.json @@ -86,9 +86,21 @@ "NOTE": "আপনার অ্যাকাউন্টের জন্য অতিরিক্ত নিরাপত্তা বৈশিষ্ট্যগুলি পরিচালনা করুন।.", "MFA_BUTTON": "দ্বি-ফ্যাক্টর প্রমাণীকরণ পরিচালনা করুন" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "অ্যাক্সেস টোকেন", "NOTE": "আপনি যদি API ভিত্তিক সংযোগ তৈরি করেন, তাহলে এই টোকেন ব্যবহার করা যেতে পারে", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "কপি", "RESET": "রিসেট", "CONFIRM_RESET": "আপনি কি নিশ্চিত?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "সমস্ত কোম্পানি", "CAPTAIN": "ক্যাপ্টেন", "CAPTAIN_ASSISTANTS": "সহকারী", + "CAPTAIN_OVERVIEW": "সারাংশ", "CAPTAIN_DOCUMENTS": "ডকুমেন্ট", "CAPTAIN_RESPONSES": "প্রশ্নাবলী", "CAPTAIN_TOOLS": "টুলস", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "নোটিফিকেশন", "CANNED_RESPONSES": "সংরক্ষিত উত্তর", "INTEGRATIONS": "ইন্টিগ্রেশনসমূহ", + "DATA": "Data", "PROFILE_SETTINGS": "প্রোফাইল সেটিংস", "ACCOUNT_SETTINGS": "অ্যাকাউন্ট সেটিং", "APPLICATIONS": "অ্যাপ্লিকেশন", @@ -379,11 +393,124 @@ "INFO_TEXT": "যখন আপনি অ্যাপ বা ড্যাশবোর্ড ব্যবহার করছেন না তখন সিস্টেম স্বয়ংক্রিয়ভাবে আপনাকে অফলাইন চিহ্নিত করবে।.", "INFO_SHORT": "আপনি যখন অ্যাপ ব্যবহার করছেন না, তখন স্বয়ংক্রিয়ভাবে অফলাইন চিহ্নিত করুন।." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "ক্রম সাজান", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "ডকস পড়ুন", "SECURITY": "নিরাপত্তা", "CAPTAIN_AI": "ক্যাপ্টেন", "CONVERSATION_WORKFLOW": "কথোপকথন ওয়ার্কফ্লো" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "আমদানি করুন", + "EXPORT": "রপ্তানি করুন" + }, + "TYPES": { + "CONTACTS": "কন্টাক্টসমূহ", + "CONVERSATIONS": "Conversations", + "MESSAGES": "বার্তা" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "বাতিল করুন", + "IMPORT": "আমদানি করুন" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "শীঘ্রই আসছে" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "আমদানি করুন", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "নাম", + "TYPE": "Type", + "STATUS": "অবস্থা", + "IMPORTED": "Imported", + "CREATED": "তৈরি হয়েছে", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "তৈরি হয়েছে", + "DURATION": "সময়কাল", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "ব্যর্থ", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "ক্যাপ্টেন সেটিংস", "DESCRIPTION": "ক্যাপ্টেনের জন্য আপনার AI মডেল এবং বৈশিষ্ট্যগুলি কনফিগার করুন। ক্যাপ্টেন একটি ক্রেডিট ভিত্তিক বিলিং অনুসরণ করে, নির্বাচিত মডেলের উপর ভিত্তি করে ক্যাপ্টেন যে প্রতিটি ক্রিয়া গ্রহণ করে তার জন্য আপনাকে ক্রেডিট চার্জ করা হবে।.", @@ -414,7 +541,9 @@ "DESCRIPTION": "AI-চালিত বৈশিষ্ট্যগুলি সক্রিয় বা নিষ্ক্রিয় করুন।.", "AUDIO_TRANSCRIPTION": { "TITLE": "অডিও ট্রান্সক্রিপশন", - "DESCRIPTION": "স্বয়ংক্রিয়ভাবে ভয়েস মেসেজ এবং কল রেকর্ডিং অনুসন্ধানযোগ্য টেক্সট ট্রান্সক্রিপ্টে রূপান্তর করুন।." + "DESCRIPTION": "স্বয়ংক্রিয়ভাবে ভয়েস মেসেজ এবং কল রেকর্ডিং অনুসন্ধানযোগ্য টেক্সট ট্রান্সক্রিপ্টে রূপান্তর করুন।.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "হেল্প সেন্টার সার্চ ইনডেক্সিং", @@ -439,7 +568,18 @@ "TITLE": "বর্তমান প্ল্যান", "PLAN_NOTE": "আপনি বর্তমানে **{plan}** প্ল্যানে **{quantity}** লাইসেন্সে সাবস্ক্রাইব করেছেন", "SEAT_COUNT": "আসনের সংখ্যা", - "RENEWS_ON": "নবায়নের তারিখ" + "RENEWS_ON": "নবায়নের তারিখ", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "মূল্য দেখুন", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "ক্রেডিট ক্রয় করুন", "LOADING": "অপশনগুলি লোড হচ্ছে...", "FETCH_ERROR": "ক্রেডিট অপশনগুলি লোড করতে ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।.", + "RETRY": "Retry", "PURCHASE_ERROR": "ক্রয় প্রক্রিয়া করতে ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।.", "PURCHASE_SUCCESS": "আপনার অ্যাকাউন্টে সফলভাবে {credits} ক্রেডিট যোগ করা হয়েছে", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "সর্বোচ্চ বরাদ্দ করুন", "DURATION": "প্রতি এজেন্ট প্রতি কথোপকথন প্রতি" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "যোগ করা ইনবক্স", "DESCRIPTION": "যেসব ইনবক্সের জন্য এই নীতি প্রযোজ্য হবে সেগুলি যোগ করুন.", diff --git a/app/javascript/dashboard/i18n/locale/ca/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ca/advancedFilters.json index 9ca94f33b..5379eb0fb 100644 --- a/app/javascript/dashboard/i18n/locale/ca/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ca/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "O" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Igual a", "not_equal_to": "No és igual a", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Nom assignat", "INBOX_NAME": "Nom de la safata d'entrada", "TEAM_NAME": "Nom de l'equip", + "CONTACT": "Contacte", "CONVERSATION_IDENTIFIER": "Identificador de conversa", "CAMPAIGN_NAME": "Nom de la campanya", "LABELS": "Etiquetes", diff --git a/app/javascript/dashboard/i18n/locale/ca/chatlist.json b/app/javascript/dashboard/i18n/locale/ca/chatlist.json index 0c1c4bd4e..0701b935f 100644 --- a/app/javascript/dashboard/i18n/locale/ca/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ca/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ca/companies.json b/app/javascript/dashboard/i18n/locale/ca/companies.json index 797229f4b..2e8c26c53 100644 --- a/app/javascript/dashboard/i18n/locale/ca/companies.json +++ b/app/javascript/dashboard/i18n/locale/ca/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ca/contact.json b/app/javascript/dashboard/i18n/locale/ca/contact.json index 7cff15bb7..ce1e647ab 100644 --- a/app/javascript/dashboard/i18n/locale/ca/contact.json +++ b/app/javascript/dashboard/i18n/locale/ca/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ca/conversation.json b/app/javascript/dashboard/i18n/locale/ca/conversation.json index b9c75f2c4..2b212cb5c 100644 --- a/app/javascript/dashboard/i18n/locale/ca/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ca/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Només pots respondre a aquesta conversa mitjançant una plantilla de missatge a causa de", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restricció de finestra de missatges de 24 hores", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Estas responent a:", "REMOVE_SELECTION": "Elimina la selecció", "DOWNLOAD": "Descarrega", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "No s'ha pogut obrir l'àudio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Arrossega i deixa anar aquí per adjuntar-lo", + "IMAGE_UPLOAD_SUCCESS": "La imatge s'ha carregat correctament", "START_AUDIO_RECORDING": "Inicia la gravació d'àudio", "STOP_AUDIO_RECORDING": "Atura la gravació d'àudio", "COPILOT_THINKING": "Copilot està pensant", @@ -303,6 +306,25 @@ "MESSAGE": "No pots desfer aquesta acció", "DELETE": "Esborrar", "CANCEL": "Cancel·la" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Descripció", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Veure tot", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ca/emoji.json b/app/javascript/dashboard/i18n/locale/ca/emoji.json index 4da107aac..c7e90ffcc 100644 --- a/app/javascript/dashboard/i18n/locale/ca/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ca/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Cerca emojis", "NOT_FOUND": "Cap emoji coincideix amb la teva cerca", "REMOVE": "Suprimeix" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Cap emoji coincideix amb la teva cerca", + "NO_ICON": "No icons match your search", + "REMOVE": "Suprimeix", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ca/helpCenter.json b/app/javascript/dashboard/i18n/locale/ca/helpCenter.json index 5453c8e74..59d2c44d4 100644 --- a/app/javascript/dashboard/i18n/locale/ca/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ca/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publicat", "ARCHIVED": "Arxivat" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Cerca articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Esborrar", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nova categoria", "EDIT_CATEGORY": "Edita la categoria", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No s'han trobat categories", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Esborrar" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Sense categoria" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nom" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Afegeix una nova localització", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Vista prèvia", "PUBLISH": "Publica", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Esborrany", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Títol" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Sense categoria", diff --git a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json index e29814a00..cebbfb27e 100644 --- a/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ca/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Per afegir el teu perfil de Twitter com a canal, has d'autentificar el vostre perfil de Twitter fent clic a 'Inicieu la sessió amb Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID del compte comercial", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Tanca", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Afegir", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Safata d'entrada", + "PHONE_NUMBER": "Número de telèfon", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Enrere", + "CANCEL": "Cancel·la", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ca/index.js b/app/javascript/dashboard/i18n/locale/ca/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ca/index.js +++ b/app/javascript/dashboard/i18n/locale/ca/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ca/integrations.json b/app/javascript/dashboard/i18n/locale/ca/integrations.json index 360c3c6bf..a6ab64e6e 100644 --- a/app/javascript/dashboard/i18n/locale/ca/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ca/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Esdeveniments subscrits", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Actualitza ara", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Saber més", + "OVERVIEW": { + "HEADER": "Resum", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Descartar" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Descartar" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Zona de proves", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Facturació", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistents", "SWITCH_ASSISTANT": "Canvia entre assistents", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Descripció", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copia", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Veure detalls", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/ca/onboarding.json b/app/javascript/dashboard/i18n/locale/ca/onboarding.json index 852422299..c80d34cea 100644 --- a/app/javascript/dashboard/i18n/locale/ca/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ca/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Alguna cosa ha anat malament, torna-ho a provar.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Centre d'ajuda", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connectar", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Correu electrònic", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Veure tot", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connectar", + "BACK": "Enrere", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ca/report.json b/app/javascript/dashboard/i18n/locale/ca/report.json index 0c33997d1..45ec41f6b 100644 --- a/app/javascript/dashboard/i18n/locale/ca/report.json +++ b/app/javascript/dashboard/i18n/locale/ca/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Esborra els filtres", "EMPTY_LIST": "No s'ha trobat agents" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Sense assignar", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ca/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ca/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ca/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ca/settings.json b/app/javascript/dashboard/i18n/locale/ca/settings.json index f3d5c03eb..8d4af4296 100644 --- a/app/javascript/dashboard/i18n/locale/ca/settings.json +++ b/app/javascript/dashboard/i18n/locale/ca/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token d'accés", "NOTE": "Aquest token es pot utilitzar si creeu una integració basada en l'API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copia", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Resum", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notificacions", "CANNED_RESPONSES": "Respostes predeterminades", "INTEGRATIONS": "Integracions", + "DATA": "Data", "PROFILE_SETTINGS": "Configuració del Perfil", "ACCOUNT_SETTINGS": "Configuració del compte", "APPLICATIONS": "Aplicacions", @@ -379,11 +393,124 @@ "INFO_TEXT": "Permet que el sistema et marqui automàticament fora de línia quan no facis servir l'aplicació o el tauler.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Ordena", + "SORT_BY": "Ordenat per", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Llegir documents", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importa", + "EXPORT": "Exporta" + }, + "TYPES": { + "CONTACTS": "Contactes", + "CONVERSATIONS": "Converses", + "MESSAGES": "Missatges" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel·la", + "IMPORT": "Importa" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importa", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nom", + "TYPE": "Tipus", + "STATUS": "Estat", + "IMPORTED": "Imported", + "CREATED": "Creat", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Creat", + "DURATION": "Durada", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Totes", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Missatge" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Actualitza", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completat", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Pla actual", "PLAN_NOTE": "Actualment estàs subscrit al pla **{plan}** amb **{quantity}** llicències", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/cs/advancedFilters.json b/app/javascript/dashboard/i18n/locale/cs/advancedFilters.json index 65392275f..f53419fe3 100644 --- a/app/javascript/dashboard/i18n/locale/cs/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/cs/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Štítky", diff --git a/app/javascript/dashboard/i18n/locale/cs/chatlist.json b/app/javascript/dashboard/i18n/locale/cs/chatlist.json index a5ec68c33..61c1d86d4 100644 --- a/app/javascript/dashboard/i18n/locale/cs/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/cs/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/cs/companies.json b/app/javascript/dashboard/i18n/locale/cs/companies.json index 221918e9f..055d82548 100644 --- a/app/javascript/dashboard/i18n/locale/cs/companies.json +++ b/app/javascript/dashboard/i18n/locale/cs/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/cs/contact.json b/app/javascript/dashboard/i18n/locale/cs/contact.json index c66408198..c50f7ef83 100644 --- a/app/javascript/dashboard/i18n/locale/cs/contact.json +++ b/app/javascript/dashboard/i18n/locale/cs/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/cs/conversation.json b/app/javascript/dashboard/i18n/locale/cs/conversation.json index 09d1c5408..26fcf3290 100644 --- a/app/javascript/dashboard/i18n/locale/cs/conversation.json +++ b/app/javascript/dashboard/i18n/locale/cs/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Na tuto konverzaci můžete odpovědět pouze pomocí šablony zprávy z důvodu", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hodinové omezení okna", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Odpovídáte uživateli:", "REMOVE_SELECTION": "Odstranit výběr", "DOWNLOAD": "Stáhnout", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Zvuk se nepodařilo otevřít", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Přetažením sem připojíte", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Spustit nahrávání zvuku", "STOP_AUDIO_RECORDING": "Zastavit nahrávání zvuku", "COPILOT_THINKING": "Copilot přemýšlí", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Vymazat", "CANCEL": "Zrušit" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/cs/emoji.json b/app/javascript/dashboard/i18n/locale/cs/emoji.json index 1212069f2..9749b9f54 100644 --- a/app/javascript/dashboard/i18n/locale/cs/emoji.json +++ b/app/javascript/dashboard/i18n/locale/cs/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Odebrat" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Odebrat", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/cs/helpCenter.json b/app/javascript/dashboard/i18n/locale/cs/helpCenter.json index 7f9405422..7e2c72c5e 100644 --- a/app/javascript/dashboard/i18n/locale/cs/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/cs/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publikované", "ARCHIVED": "Archivované" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Vymazat", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Vymazat" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Název" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Náhled", "PUBLISH": "Publikovat", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Koncept", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json index 2f43b809f..300855ee3 100644 --- a/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/cs/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Chcete-li přidat svůj Twitter profil jako kanál, musíte ověřit svůj Twitter profil kliknutím na tlačítko 'Přihlásit se přes Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Zavřít", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Přidat", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Telefonní číslo", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Zpět", + "CANCEL": "Zrušit", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/cs/index.js b/app/javascript/dashboard/i18n/locale/cs/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/cs/index.js +++ b/app/javascript/dashboard/i18n/locale/cs/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/cs/integrations.json b/app/javascript/dashboard/i18n/locale/cs/integrations.json index f26b6d5bc..91e385fce 100644 --- a/app/javascript/dashboard/i18n/locale/cs/integrations.json +++ b/app/javascript/dashboard/i18n/locale/cs/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Zjistit více", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Hřiště", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistenti", "SWITCH_ASSISTANT": "Přepínání mezi asistenty", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Description", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopírovat", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Zobrazit detaily", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/cs/onboarding.json b/app/javascript/dashboard/i18n/locale/cs/onboarding.json index 4f971092c..5da3fb61c 100644 --- a/app/javascript/dashboard/i18n/locale/cs/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/cs/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connect", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-mailová adresa", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connect", + "BACK": "Zpět", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/cs/report.json b/app/javascript/dashboard/i18n/locale/cs/report.json index 62369df5e..52b4ebbf7 100644 --- a/app/javascript/dashboard/i18n/locale/cs/report.json +++ b/app/javascript/dashboard/i18n/locale/cs/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Žádné výsledky" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Nepřiřazeno", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/cs/sessionLimit.json b/app/javascript/dashboard/i18n/locale/cs/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/cs/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/cs/settings.json b/app/javascript/dashboard/i18n/locale/cs/settings.json index 6411bf614..5319c3aec 100644 --- a/app/javascript/dashboard/i18n/locale/cs/settings.json +++ b/app/javascript/dashboard/i18n/locale/cs/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Přístupový token", "NOTE": "Tento token může být použit při vytváření integrace založené na API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopírovat", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Oznámení", "CANNED_RESPONSES": "Konzervované odpovědi", "INTEGRATIONS": "Integrace", + "DATA": "Data", "PROFILE_SETTINGS": "Nastavení profilu", "ACCOUNT_SETTINGS": "Nastavení účtu", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Seřadit podle", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kontakty", + "CONVERSATIONS": "Konverzace", + "MESSAGES": "Zprávy" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Zrušit", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Název", + "TYPE": "Type", + "STATUS": "Stav", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Doba trvání", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Vše", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Zpráva" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/da/advancedFilters.json b/app/javascript/dashboard/i18n/locale/da/advancedFilters.json index d6769c8df..1c756dcae 100644 --- a/app/javascript/dashboard/i18n/locale/da/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/da/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ELLER" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Lig med", "not_equal_to": "Ikke lig med", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Indbakkens navn", "TEAM_NAME": "Team navn", + "CONTACT": "Kontakt", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Etiketter", diff --git a/app/javascript/dashboard/i18n/locale/da/chatlist.json b/app/javascript/dashboard/i18n/locale/da/chatlist.json index 019b28f14..ef3988a6b 100644 --- a/app/javascript/dashboard/i18n/locale/da/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/da/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/da/companies.json b/app/javascript/dashboard/i18n/locale/da/companies.json index 1c0430b6d..debcfefa1 100644 --- a/app/javascript/dashboard/i18n/locale/da/companies.json +++ b/app/javascript/dashboard/i18n/locale/da/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/da/contact.json b/app/javascript/dashboard/i18n/locale/da/contact.json index 0423dfac1..d08e651a0 100644 --- a/app/javascript/dashboard/i18n/locale/da/contact.json +++ b/app/javascript/dashboard/i18n/locale/da/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Noter", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/da/conversation.json b/app/javascript/dashboard/i18n/locale/da/conversation.json index 3e959a0c4..7c6b56e79 100644 --- a/app/javascript/dashboard/i18n/locale/da/conversation.json +++ b/app/javascript/dashboard/i18n/locale/da/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Du kan kun svare på denne samtale ved hjælp af en skabelon besked på grund af", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 timers beskedvindue begrænsning", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Du svarer til:", "REMOVE_SELECTION": "Fjern Markering", "DOWNLOAD": "Download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Kunne ikke åbne lyden", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Træk og slip her for at vedhæfte", + "IMAGE_UPLOAD_SUCCESS": "Billede blev uploadet", "START_AUDIO_RECORDING": "Start lydoptagelse", "STOP_AUDIO_RECORDING": "Stop lydoptagelse", "COPILOT_THINKING": "Copilot tænker", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Slet", "CANCEL": "Annuller" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Beskrivelse", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/da/emoji.json b/app/javascript/dashboard/i18n/locale/da/emoji.json index 27607b4b4..bd93e6d55 100644 --- a/app/javascript/dashboard/i18n/locale/da/emoji.json +++ b/app/javascript/dashboard/i18n/locale/da/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Søg emojis", "NOT_FOUND": "Ingen emoji matcher din søgning", "REMOVE": "Fjern" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Ingen emoji matcher din søgning", + "NO_ICON": "No icons match your search", + "REMOVE": "Fjern", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/da/helpCenter.json b/app/javascript/dashboard/i18n/locale/da/helpCenter.json index e641bd74d..16a310a50 100644 --- a/app/javascript/dashboard/i18n/locale/da/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/da/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publiceret", "ARCHIVED": "Arkiveret" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Søg efter artikler...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Slet", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Ny kategori", "EDIT_CATEGORY": "Rediger kategori", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Ingen kategorier fundet", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Slet" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Ikke Kategoriseret" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Navn" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Tilføj en ny landestandard", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Eksempelvisning", "PUBLISH": "Udgiv", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Kladde", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Titel" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Ikke Kategoriseret", diff --git a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json index f672656da..70d8a3704 100644 --- a/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/da/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "For at tilføje din Twitter-profil som en kanal, skal du godkende din Twitter-profil ved at klikke på 'Log ind med Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Konto ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Nøgle", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Luk", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Tilføj", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Indbakke", + "PHONE_NUMBER": "Telefonnummer", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Tilbage", + "CANCEL": "Annuller", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/da/index.js b/app/javascript/dashboard/i18n/locale/da/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/da/index.js +++ b/app/javascript/dashboard/i18n/locale/da/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/da/integrations.json b/app/javascript/dashboard/i18n/locale/da/integrations.json index 6e11fc565..a35c4aa31 100644 --- a/app/javascript/dashboard/i18n/locale/da/integrations.json +++ b/app/javascript/dashboard/i18n/locale/da/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Abonnerede Begivenheder", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Få mere at vide", + "OVERVIEW": { + "HEADER": "Oversigt", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Legeplads", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Fakturering", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistenter", "SWITCH_ASSISTANT": "Skift mellem assistenter", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Beskrivelse", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopiér", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Se detaljer", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/da/onboarding.json b/app/javascript/dashboard/i18n/locale/da/onboarding.json index d94ac3ffa..a38f44d2f 100644 --- a/app/javascript/dashboard/i18n/locale/da/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/da/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Tilslut", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-mail", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Tilslut", + "BACK": "Tilbage", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/da/report.json b/app/javascript/dashboard/i18n/locale/da/report.json index 8ecb08ffa..feb619131 100644 --- a/app/javascript/dashboard/i18n/locale/da/report.json +++ b/app/javascript/dashboard/i18n/locale/da/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Ingen resultater fundet" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Ikke Tildelt", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/da/sessionLimit.json b/app/javascript/dashboard/i18n/locale/da/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/da/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/da/settings.json b/app/javascript/dashboard/i18n/locale/da/settings.json index c2c75d777..26409f850 100644 --- a/app/javascript/dashboard/i18n/locale/da/settings.json +++ b/app/javascript/dashboard/i18n/locale/da/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Adgangs Token", "NOTE": "Denne token kan bruges, hvis du bygger en API-baseret integration", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopiér", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Oversigt", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifikationer", "CANNED_RESPONSES": "Standardsvar Svar", "INTEGRATIONS": "Integrationer", + "DATA": "Data", "PROFILE_SETTINGS": "Profilindstillinger", "ACCOUNT_SETTINGS": "Kontoindstillinger", "APPLICATIONS": "Applikationer", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sorter efter", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Læs dokumenter", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importér", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kontakter", + "CONVERSATIONS": "Samtaler", + "MESSAGES": "Beskeder" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Annuller", + "IMPORT": "Importér" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importér", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Navn", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Varighed", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Alle", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Besked" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Opdater", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Afsluttet", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Nuværende Abonnement", "PLAN_NOTE": "Du abonnerer i øjeblikket på **{plan}** planen med **{quantity}** licenser", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/de/advancedFilters.json b/app/javascript/dashboard/i18n/locale/de/advancedFilters.json index cdff554ae..c8d9138da 100644 --- a/app/javascript/dashboard/i18n/locale/de/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/de/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ODER" }, "INPUT_PLACEHOLDER": "Wert eintragen", + "CONTACT_SEARCH_PLACEHOLDER": "Kontakte suchen", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Gleich", "not_equal_to": "Nicht gleich", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Bearbeiter Name", "INBOX_NAME": "Posteingangsname", "TEAM_NAME": "Teamname", + "CONTACT": "Kontakt", "CONVERSATION_IDENTIFIER": "Konversation-ID", "CAMPAIGN_NAME": "Kampagnenname", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/de/chatlist.json b/app/javascript/dashboard/i18n/locale/de/chatlist.json index 166730e96..cb1cfa1b5 100644 --- a/app/javascript/dashboard/i18n/locale/de/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/de/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/de/companies.json b/app/javascript/dashboard/i18n/locale/de/companies.json index e83924080..af4107f08 100644 --- a/app/javascript/dashboard/i18n/locale/de/companies.json +++ b/app/javascript/dashboard/i18n/locale/de/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/de/contact.json b/app/javascript/dashboard/i18n/locale/de/contact.json index f1f06d269..9ad37940d 100644 --- a/app/javascript/dashboard/i18n/locale/de/contact.json +++ b/app/javascript/dashboard/i18n/locale/de/contact.json @@ -325,7 +325,7 @@ "LABEL": "CSV-Datei:", "CHOOSE_FILE": "Datei auswählen", "CHANGE": "Ändern", - "CANCEL": "Stornieren", + "CANCEL": "Abbrechen", "IMPORT": "Importieren", "SUCCESS_MESSAGE": "Sie werden per E-Mail benachrichtigt, wenn der Import abgeschlossen ist.", "ERROR_MESSAGE": "Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut" @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attribute", "HISTORY": "Verlauf", "NOTES": "Notizen", + "MEDIA": "Media", "MERGE": "Zusammenführen" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/de/conversation.json b/app/javascript/dashboard/i18n/locale/de/conversation.json index e370d3873..dfa8b51dc 100644 --- a/app/javascript/dashboard/i18n/locale/de/conversation.json +++ b/app/javascript/dashboard/i18n/locale/de/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Sie können auf diese Konversation nur mit einer Nachrichtenvorlage antworten wegen", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24-Stunden-Nachrichtenfenster-Beschränkung", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Dieser Instagram-Account wurde in den neuen Instagram-Kanal übertragen. Alle neuen Nachrichten werden dort erscheinen. Sie werden keine Nachrichten mehr von dieser Unterhaltung senden können.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Sie antworten auf:", "REMOVE_SELECTION": "Auswahl entfernen", "DOWNLOAD": "Herunterladen", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Audio konnte nicht geöffnet werden", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Zum Anhängen hierher ziehen und ablegen", + "IMAGE_UPLOAD_SUCCESS": "Bild erfolgreich hochgeladen", "START_AUDIO_RECORDING": "Audioaufzeichnung starten", "STOP_AUDIO_RECORDING": "Audioaufzeichnung stoppen", "COPILOT_THINKING": "Copilot denkt", @@ -303,6 +306,25 @@ "MESSAGE": "Sie können diese Aktion nicht rückgängig machen", "DELETE": "Löschen", "CANCEL": "Abbrechen" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Beschreibung", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Alle anzeigen", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/de/emoji.json b/app/javascript/dashboard/i18n/locale/de/emoji.json index c80d5d659..ad41b8bed 100644 --- a/app/javascript/dashboard/i18n/locale/de/emoji.json +++ b/app/javascript/dashboard/i18n/locale/de/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Emojis durchsuchen", "NOT_FOUND": "Kein Emoji entspricht deiner Suche", "REMOVE": "Entfernen" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Kein Emoji entspricht deiner Suche", + "NO_ICON": "No icons match your search", + "REMOVE": "Entfernen", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/de/helpCenter.json b/app/javascript/dashboard/i18n/locale/de/helpCenter.json index 4d416885d..40973b363 100644 --- a/app/javascript/dashboard/i18n/locale/de/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/de/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Veröffentlicht", "ARCHIVED": "Archiviert" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Artikel suchen...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Löschen", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Neue Kategorie", "EDIT_CATEGORY": "Kategorie bearbeiten", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Keine Kategorien gefunden", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Löschen" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Nicht kategorisiert" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Neues Gebietsschema hinzufügen", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Vorschau", "PUBLISH": "Veröffentlichen", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Entwürfe", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Titel" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Nicht kategorisiert", diff --git a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json index 4d5f5f71d..0b308ceff 100644 --- a/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/de/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Um Ihr Twitter-Profil als Kanal hinzuzufügen, müssen Sie Ihr Twitter-Profil authentifizieren, indem Sie auf 'Mit Twitter anmelden' klicken.", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Geschäftskonto-ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API-Schlüssel", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Schließen", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Hinzufügen", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Posteingang", + "PHONE_NUMBER": "Telefonnummer", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Zurück", + "CANCEL": "Stornieren", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." @@ -1035,7 +1115,7 @@ "PLACE_HOLDER": "Port" }, "LOGIN": { - "LABEL": "Einloggen", + "LABEL": "Login", "PLACE_HOLDER": "Einloggen" }, "PASSWORD": { diff --git a/app/javascript/dashboard/i18n/locale/de/index.js b/app/javascript/dashboard/i18n/locale/de/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/de/index.js +++ b/app/javascript/dashboard/i18n/locale/de/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/de/integrations.json b/app/javascript/dashboard/i18n/locale/de/integrations.json index 6c0f93bee..490adc458 100644 --- a/app/javascript/dashboard/i18n/locale/de/integrations.json +++ b/app/javascript/dashboard/i18n/locale/de/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Abonnierte Events", "LEARN_MORE": "Mehr über Webhooks erfahren", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Kapitän", "HEADER_KNOW_MORE": "Mehr erfahren", + "OVERVIEW": { + "HEADER": "Übersicht", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Verwerfen" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Verwerfen" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Spielwiese", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Rechnungen", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistenten", "SWITCH_ASSISTANT": "Zwischen Assistenten wechseln", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Beschreibung", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopieren", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Details anzeigen", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/de/onboarding.json b/app/javascript/dashboard/i18n/locale/de/onboarding.json index 6af0834cc..6c2798991 100644 --- a/app/javascript/dashboard/i18n/locale/de/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/de/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Etwas ist schiefgelaufen. Bitte erneut versuchen.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Hilfezentrum", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Verbinden", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-Mail", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Alle anzeigen", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Verbinden", + "BACK": "Zurück", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/de/report.json b/app/javascript/dashboard/i18n/locale/de/report.json index 8e83a1346..0eecda332 100644 --- a/app/javascript/dashboard/i18n/locale/de/report.json +++ b/app/javascript/dashboard/i18n/locale/de/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Filter löschen", "EMPTY_LIST": "Keine Ergebnisse gefunden" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Nicht zugewiesen", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/de/sessionLimit.json b/app/javascript/dashboard/i18n/locale/de/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/de/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/de/settings.json b/app/javascript/dashboard/i18n/locale/de/settings.json index 575549f0d..70084eb60 100644 --- a/app/javascript/dashboard/i18n/locale/de/settings.json +++ b/app/javascript/dashboard/i18n/locale/de/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Zugangstoken", "NOTE": "Dieses Token kann verwendet werden, wenn Sie eine API-basierte Integration erstellen", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopieren", "RESET": "Zurücksetzen", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Kapitän", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Übersicht", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Push-Benachrichtigungen", "CANNED_RESPONSES": "Vorgefertigte Antworten", "INTEGRATIONS": "Integrationen", + "DATA": "Data", "PROFILE_SETTINGS": "Profileinstellungen", "ACCOUNT_SETTINGS": "Kontoeinstellungen", "APPLICATIONS": "Anwendungen", @@ -379,11 +393,124 @@ "INFO_TEXT": "Lassen Sie sich vom System automatisch als offline markieren, wenn Sie die App oder das Dashboard nicht verwenden.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sortieren", + "SORT_BY": "Sortieren nach", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Dokumente lesen", "SECURITY": "Security", "CAPTAIN_AI": "Kapitän", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importieren", + "EXPORT": "Exportieren" + }, + "TYPES": { + "CONTACTS": "Kontakte", + "CONVERSATIONS": "Gespräche", + "MESSAGES": "Nachrichten" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Stornieren", + "IMPORT": "Importieren" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importieren", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Typ", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Erstellt", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Erstellt", + "DURATION": "Dauer", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Alle", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Nachricht" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Neu laden", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Erledigt", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Derzeitiger Plan", "PLAN_NOTE": "Sie haben derzeit den Tarif **{plan}** mit **{quantity}** Lizenzen abonniert", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Wiederholen", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/el/advancedFilters.json b/app/javascript/dashboard/i18n/locale/el/advancedFilters.json index 26a2e80a7..b92d50dca 100644 --- a/app/javascript/dashboard/i18n/locale/el/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/el/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Ίσο με", "not_equal_to": "Όχι ίσο με", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Όνομα Κιβωτίου", "TEAM_NAME": "Όνομα ομάδας", + "CONTACT": "Επαφές", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Ετικέτες", diff --git a/app/javascript/dashboard/i18n/locale/el/chatlist.json b/app/javascript/dashboard/i18n/locale/el/chatlist.json index 2831cf6b3..d95209e76 100644 --- a/app/javascript/dashboard/i18n/locale/el/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/el/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/el/companies.json b/app/javascript/dashboard/i18n/locale/el/companies.json index 6b664cad8..ca98647bc 100644 --- a/app/javascript/dashboard/i18n/locale/el/companies.json +++ b/app/javascript/dashboard/i18n/locale/el/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/el/contact.json b/app/javascript/dashboard/i18n/locale/el/contact.json index 677cd5e4e..33ec90a26 100644 --- a/app/javascript/dashboard/i18n/locale/el/contact.json +++ b/app/javascript/dashboard/i18n/locale/el/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Ιδιότητες", "HISTORY": "History", "NOTES": "Σημειώσεις", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/el/conversation.json b/app/javascript/dashboard/i18n/locale/el/conversation.json index 206bc68ab..747429e8c 100644 --- a/app/javascript/dashboard/i18n/locale/el/conversation.json +++ b/app/javascript/dashboard/i18n/locale/el/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Μπορείτε να απαντήσετε μόνο σε αυτή τη συνομιλία χρησιμοποιώντας ένα πρότυπο μήνυμα επειδή", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "του περιορισμού των 24 ωρών", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Απαντάτε στο:", "REMOVE_SELECTION": "Διαγραφή Επιλογής", "DOWNLOAD": "Κατέβασμα", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Αδυναμία ανοίγματος ήχου", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Σύρετε και αφήστε εδώ για επισύναψη", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Έναρξη ηχογράφησης", "STOP_AUDIO_RECORDING": "Διακοπή ηχογράφησης", "COPILOT_THINKING": "Ο Copilot σκέφτεται", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Διαγραφή", "CANCEL": "Άκυρο" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Περιγραφή", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/el/emoji.json b/app/javascript/dashboard/i18n/locale/el/emoji.json index 7db617212..b1630394f 100644 --- a/app/javascript/dashboard/i18n/locale/el/emoji.json +++ b/app/javascript/dashboard/i18n/locale/el/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Αναζήτηση emojis", "NOT_FOUND": "Κανένα emoji δεν ταιριάζει με την αναζήτησή σας", "REMOVE": "Διαγραφή" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Κανένα emoji δεν ταιριάζει με την αναζήτησή σας", + "NO_ICON": "No icons match your search", + "REMOVE": "Διαγραφή", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/el/helpCenter.json b/app/javascript/dashboard/i18n/locale/el/helpCenter.json index 1e3b5de1e..9b5519615 100644 --- a/app/javascript/dashboard/i18n/locale/el/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/el/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Δημοσιευμένο", "ARCHIVED": "Αρχειοθετημένο" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Διαγραφή", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Νέα κατηγορία", "EDIT_CATEGORY": "Επεξεργασία κατηγορίας", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Δεν βρέθηκαν κατηγορίες", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Διαγραφή" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Όνομα" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Προσθέστε μια νέα γλώσσα", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Προεπισκόπηση", "PUBLISH": "Δημοσιευμένο", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Πρόχειρο", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Τίτλος" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json index 516f5c6d6..2a144f2e0 100644 --- a/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/el/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Για να προσθέσετε το Προφίλ Twitter ως κανάλι, πρέπει να επικυρώστε το Προφίλ σας στο Twiter κάνοντας click στο 'Είσοδος με το Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID Λογαριασμού Επιχειρήσης", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Κλειδί API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Κλείσιμο", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Προσθήκη", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Εισερχόμενα", + "PHONE_NUMBER": "Αριθμός τηλεφώνου", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Πίσω", + "CANCEL": "Άκυρο", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/el/index.js b/app/javascript/dashboard/i18n/locale/el/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/el/index.js +++ b/app/javascript/dashboard/i18n/locale/el/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/el/integrations.json b/app/javascript/dashboard/i18n/locale/el/integrations.json index 6f2f46697..096f2e9e1 100644 --- a/app/javascript/dashboard/i18n/locale/el/integrations.json +++ b/app/javascript/dashboard/i18n/locale/el/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Εγγεγραμμένα Συμβάντα", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Μάθετε περισσότερα", + "OVERVIEW": { + "HEADER": "Επισκόπηση", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Παιδική Χαρά", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Χρεώσεις", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Βοηθοί", "SWITCH_ASSISTANT": "Εναλλαγή μεταξύ βοηθών", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Περιγραφή", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Αντιγραφή", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Προβολή λεπτομεριών", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/el/onboarding.json b/app/javascript/dashboard/i18n/locale/el/onboarding.json index 5c02b2334..4e03e505e 100644 --- a/app/javascript/dashboard/i18n/locale/el/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/el/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Κάτι πήγε στραβά. Παρακαλώ προσπαθήστε ξανά.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Σύνδεση", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Σύνδεση", + "BACK": "Πίσω", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/el/report.json b/app/javascript/dashboard/i18n/locale/el/report.json index 80f2c0aae..0aa6f0f80 100644 --- a/app/javascript/dashboard/i18n/locale/el/report.json +++ b/app/javascript/dashboard/i18n/locale/el/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Δεν βρέθηκαν αποτελέσματα" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Χωρίς Αντιστοίχιση", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/el/sessionLimit.json b/app/javascript/dashboard/i18n/locale/el/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/el/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/el/settings.json b/app/javascript/dashboard/i18n/locale/el/settings.json index 9079729db..4494c50a1 100644 --- a/app/javascript/dashboard/i18n/locale/el/settings.json +++ b/app/javascript/dashboard/i18n/locale/el/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Κώδικας Πρόσβασης (Access Token)", "NOTE": "Χρησιμοποιείται σε περίπτωση εξωτερικής ενοποίησης της εφαρμογής με κώδικα (API)", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Αντιγραφή", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Επισκόπηση", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Ειδοποιήσεις", "CANNED_RESPONSES": "Έτοιμες Απαντήσεις", "INTEGRATIONS": "Ενοποιήσεις", + "DATA": "Data", "PROFILE_SETTINGS": "Ρυθμίσεις Προφίλ", "ACCOUNT_SETTINGS": "Ρυθμίσεις Λογαριασμού", "APPLICATIONS": "Εφαρμογές", @@ -379,11 +393,124 @@ "INFO_TEXT": "Αφήστε το σύστημα να σας σηματοδοτήσει αυτόματα εκτός σύνδεσης, όταν δεν χρησιμοποιείτε την εφαρμογή ή τον πίνακα ελέγχου.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Ταξινόμηση κατά", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Ανάγνωση εγγράφων", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Εισαγωγή", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Επαφές", + "CONVERSATIONS": "Συζητήσεις", + "MESSAGES": "Μηνύματα" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Άκυρο", + "IMPORT": "Εισαγωγή" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Εισαγωγή", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Όνομα", + "TYPE": "Τύπος", + "STATUS": "Κατάσταση", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Διάρκεια", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Όλες", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Μήνυμα" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Ανανέωση", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Ολοκληρώθηκε", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Τρέχον Πλάνο", "PLAN_NOTE": "Αυτή τη στιγμή έχετε εγγραφεί στο πλάνο **{plan}** με **{quantity}** άδειες", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/es/advancedFilters.json b/app/javascript/dashboard/i18n/locale/es/advancedFilters.json index 1208bebf3..acc51df43 100644 --- a/app/javascript/dashboard/i18n/locale/es/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/es/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "O" }, "INPUT_PLACEHOLDER": "Introducir valor", + "CONTACT_SEARCH_PLACEHOLDER": "Buscar contactos", + "CONTACT_FALLBACK": "Contacto #{id}", "OPERATOR_LABELS": { "equal_to": "Igual a", "not_equal_to": "No igual a", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Nombre Asignado", "INBOX_NAME": "Nombre de la bandeja de entrada", "TEAM_NAME": "Nombre del equipo", + "CONTACT": "Contacto", "CONVERSATION_IDENTIFIER": "Identificador de conversacion", "CAMPAIGN_NAME": "Nombre de Campaña", "LABELS": "Etiquetas", diff --git a/app/javascript/dashboard/i18n/locale/es/automation.json b/app/javascript/dashboard/i18n/locale/es/automation.json index c428f489a..3af864136 100644 --- a/app/javascript/dashboard/i18n/locale/es/automation.json +++ b/app/javascript/dashboard/i18n/locale/es/automation.json @@ -130,7 +130,7 @@ "ATLEAST_ONE_ACTION_REQUIRED": "Se requiere al menos una acción" }, "NONE_OPTION": "Ninguna", - "LAST_RESPONDING_AGENT": "Last Responding Agent", + "LAST_RESPONDING_AGENT": "Último agente de respuesta", "EVENTS": { "CONVERSATION_CREATED": "Conversación creada", "CONVERSATION_UPDATED": "Conversación actualizada", diff --git a/app/javascript/dashboard/i18n/locale/es/bulkActions.json b/app/javascript/dashboard/i18n/locale/es/bulkActions.json index b8840aecf..8db99c2ac 100644 --- a/app/javascript/dashboard/i18n/locale/es/bulkActions.json +++ b/app/javascript/dashboard/i18n/locale/es/bulkActions.json @@ -3,8 +3,8 @@ "CONVERSATIONS_SELECTED": "{conversationCount} conversaciones seleccionadas", "NONE": "Ninguna", "CLEAR_SELECTION": "Limpiar", - "ASSIGN_AGENT_CONFIRMATION_LABEL": "Are you sure you want to assign {n} conversation to {agentName}? | Are you sure you want to assign {n} conversations to {agentName}?", - "UNASSIGN_AGENT_CONFIRMATION_LABEL": "Are you sure you want to unassign {n} conversation? | Are you sure you want to unassign {n} conversations?", + "ASSIGN_AGENT_CONFIRMATION_LABEL": "¿Estás seguro de que quieres asignar {n} conversación a {agentName}? | ¿Estás seguro de que quieres asignar {n} conversaciones a {agentName}?", + "UNASSIGN_AGENT_CONFIRMATION_LABEL": "¿Estás seguro de que quieres desasignar {n} conversación? | ¿Estás seguro de que quieres desasignar las {n} conversaciones?", "YES": "Si", "CANCEL": "Cancelar", "SEARCH_INPUT_PLACEHOLDER": "Buscar", @@ -27,18 +27,18 @@ }, "LABELS": { "ASSIGN_LABELS": "Asignar etiqueta", - "REMOVE_LABELS": "Remove labels", + "REMOVE_LABELS": "Quitar etiquetas", "ASSIGN_SELECTED_LABELS": "Asignar etiquetas seleccionadas", - "REMOVE_SELECTED_LABELS": "Remove selected labels", + "REMOVE_SELECTED_LABELS": "Remover etiquetas seleccionadas", "ASSIGN_SUCCESFUL": "Etiquetas asignadas correctamente.", "ASSIGN_FAILED": "Error al asignar etiquetas, inténtalo de nuevo.", - "REMOVE_SUCCESFUL": "Labels removed successfully.", - "REMOVE_FAILED": "Failed to remove labels. Please try again." + "REMOVE_SUCCESFUL": "Etiquetas removidas con éxito.", + "REMOVE_FAILED": "Error al quitar las etiquetas. Por favor, inténtalo de nuevo." }, "TEAMS": { "NONE": "Ninguna", - "ASSIGN_TEAM_CONFIRMATION_LABEL": "Are you sure you want to assign {n} conversation to {teamName}? | Are you sure you want to assign {n} conversations to {teamName}?", - "UNASSIGN_TEAM_CONFIRMATION_LABEL": "Are you sure you want to unassign {n} conversation? | Are you sure you want to unassign {n} conversations?", + "ASSIGN_TEAM_CONFIRMATION_LABEL": "¿Estás seguro de que quieres asignar {n} conversación a {teamName}? | ¿Estás seguro de que quieres asignar {n} conversaciones a {teamName}?", + "UNASSIGN_TEAM_CONFIRMATION_LABEL": "¿Estás seguro de que quieres desasignar {n} conversación? | ¿Estás seguro de que quieres desasignar las {n} conversaciones?", "ASSIGN_SUCCESFUL": "Equipos asignados correctamente.", "ASSIGN_FAILED": "Error al asignar equipo, inténtelo de nuevo." } diff --git a/app/javascript/dashboard/i18n/locale/es/chatlist.json b/app/javascript/dashboard/i18n/locale/es/chatlist.json index 9112b89d2..6f2b3e4eb 100644 --- a/app/javascript/dashboard/i18n/locale/es/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/es/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Conteo de no leídos: el más alto primero" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/es/companies.json b/app/javascript/dashboard/i18n/locale/es/companies.json index 0767b6cae..2fa2476b2 100644 --- a/app/javascript/dashboard/i18n/locale/es/companies.json +++ b/app/javascript/dashboard/i18n/locale/es/companies.json @@ -23,23 +23,27 @@ "UNNAMED": "Empresa sin nombre", "CONTACTS_COUNT": "{n} contacto | {n} contactos", "ACTIONS": { - "CREATE": "Add company" + "CREATE": "Añadir empresa" + }, + "SELECTOR": { + "PLACEHOLDER": "Seleccionar empresa", + "CREATE_OPTION": "Añadir \"{name}\"" }, "CREATE": { - "TITLE": "Add company details", + "TITLE": "Añadir detalles de la empresa", "ACTIONS": { - "SAVE": "Add company" + "SAVE": "Añadir empresa" }, "MESSAGES": { - "SUCCESS": "Company created.", - "ERROR": "Could not create the company." + "SUCCESS": "Empresa creada.", + "ERROR": "No se pudo crear la empresa." } }, "DETAIL": { - "LOADING": "Loading company details...", + "LOADING": "Cargando detalles de la empresa...", "EMPTY_STATE": { - "TITLE": "Company not found", - "SUBTITLE": "This company may have been removed or is no longer available in this account." + "TITLE": "Empresa no encontrada", + "SUBTITLE": "Esta empresa puede haber sido eliminada o ya no está disponible en esta cuenta." }, "SIDEBAR": { "TABS": { @@ -50,73 +54,73 @@ } }, "HISTORY": { - "EMPTY": "No conversations found for this company's contacts yet." + "EMPTY": "Aún no se han encontrado conversaciones para los contactos de esta empresa." }, "NOTES": { - "EMPTY": "No notes found for this company's contacts yet." + "EMPTY": "Aún no se han encontrado notas para los contactos de esta empresa." }, "ATTRIBUTES": { "SEARCH_PLACEHOLDER": "Buscar atributos...", - "EMPTY_STATE": "There are no company custom attributes configured yet.", - "NO_ATTRIBUTES": "No matching attributes found.", - "UNUSED_ATTRIBUTES": "{count} unused attribute | {count} unused attributes", + "EMPTY_STATE": "Aún no hay atributos personalizados de la empresa configurados.", + "NO_ATTRIBUTES": "No se encontraron atributos coincidentes.", + "UNUSED_ATTRIBUTES": "{count} atributo no utilizado | {count} atributos no utilizados", "MESSAGES": { - "UPDATE_SUCCESS": "Company attribute updated.", - "UPDATE_ERROR": "Could not update company attribute.", - "DELETE_SUCCESS": "Company attribute removed.", - "DELETE_ERROR": "Could not remove company attribute." + "UPDATE_SUCCESS": "Atributo de la empresa actualizado.", + "UPDATE_ERROR": "No se pudo actualizar el atributo de la empresa.", + "DELETE_SUCCESS": "Atributo de la empresa eliminado.", + "DELETE_ERROR": "No se pudo eliminar el atributo de la empresa." } }, "CONTACTS": { "LOADING": "Cargando contactos...", - "EMPTY": "No contacts are linked to this company yet.", - "UNNAMED_CONTACT": "Unnamed contact", + "EMPTY": "Aún no hay contactos vinculados a esta empresa.", + "UNNAMED_CONTACT": "Contacto sin nombre", "ACTIONS": { "ADD": "Añadir contacto", - "REMOVE": "Remove contact" + "REMOVE": "Eliminar contacto" }, "DIALOGS": { "ADD": { - "DESCRIPTION": "Search for an existing contact and link it to this company.", + "DESCRIPTION": "Busque un contacto existente y enláguelo a esta empresa.", "SEARCH_PLACEHOLDER": "Buscar contactos...", - "INITIAL": "Start typing to search contacts.", + "INITIAL": "Empieza a escribir para buscar contactos.", "EMPTY": "No se encontraron contactos.", - "CONFIRM_TITLE": "Link contact", - "CONFIRM_DESCRIPTION": "Confirm the company and contact before linking them.", + "CONFIRM_TITLE": "Vincular contacto", + "CONFIRM_DESCRIPTION": "Confirme la empresa y el contacto antes de enlazarlos.", "COMPANY_LABEL": "Empresa", "CONTACT_LABEL": "Contacto", - "CURRENT_COMPANY": "Currently linked to {companyName}", - "ADD": "Link contact", + "CURRENT_COMPANY": "Actualmente enlazado a {companyName}", + "ADD": "Vincular contacto", "CANCEL": "Cancelar" } }, "MESSAGES": { - "ADD_SUCCESS": "Contact linked to company.", - "ADD_ERROR": "Could not link contact to company.", - "REASSIGN_SUCCESS": "Contact reassigned to company.", - "REASSIGN_ERROR": "Could not reassign contact to company.", - "REMOVE_SUCCESS": "Contact removed from company.", - "REMOVE_ERROR": "Could not remove contact from company." + "ADD_SUCCESS": "Contacto vinculado a la empresa.", + "ADD_ERROR": "No se pudo vincular el contacto con la empresa.", + "REASSIGN_SUCCESS": "Contacto reasignado a la empresa.", + "REASSIGN_ERROR": "No se pudo reasignar el contacto a la empresa.", + "REMOVE_SUCCESS": "Contacto eliminado de la empresa.", + "REMOVE_ERROR": "No se pudo eliminar el contacto de la empresa." } }, "AVATAR": { - "UPDATING": "Updating company avatar...", - "UPLOAD_SUCCESS": "Company avatar updated.", - "UPLOAD_ERROR": "Could not update the company avatar.", - "DELETE_SUCCESS": "Company avatar removed.", - "DELETE_ERROR": "Could not remove the company avatar." + "UPDATING": "Actualizando avatar de la empresa...", + "UPLOAD_SUCCESS": "Avatar de la empresa actualizado.", + "UPLOAD_ERROR": "No se pudo actualizar el avatar de la empresa.", + "DELETE_SUCCESS": "Avatar de la empresa eliminado.", + "DELETE_ERROR": "No se pudo eliminar el avatar de la empresa." }, "PROFILE": { - "TITLE": "Edit company details", + "TITLE": "Editar detalles de la empresa", "CREATED_AT": "Creado {date}", "LAST_ACTIVE": "Última actividad {date}", - "DESCRIPTION_PLACEHOLDER": "Add a short description for this company", + "DESCRIPTION_PLACEHOLDER": "Añadir una breve descripción para esta empresa", "ACTIONS": { - "SAVE": "Update company" + "SAVE": "Actualizar empresa" }, "MESSAGES": { - "UPDATE_SUCCESS": "Company updated.", - "UPDATE_ERROR": "Could not update the company." + "UPDATE_SUCCESS": "Empresa actualizada.", + "UPDATE_ERROR": "No se pudo actualizar la empresa." }, "FIELDS": { "NAME": "Nombre", @@ -124,16 +128,16 @@ } }, "DELETE": { - "SECTION_TITLE": "Danger zone", - "SECTION_DESCRIPTION": "Delete this company and unlink its contacts. The contacts will remain in the account.", - "BUTTON": "Delete company", - "TITLE": "Delete company?", - "DESCRIPTION": "This will remove the company and unlink all associated contacts. Contacts themselves will be preserved.", - "DESCRIPTION_WITH_NAME": "This will remove {companyName} and unlink all associated contacts. Contacts themselves will be preserved.", - "CONFIRM": "Delete company", + "SECTION_TITLE": "Zona de peligro", + "SECTION_DESCRIPTION": "Eliminar esta empresa y desvincular sus contactos. Los contactos permanecerán en la cuenta.", + "BUTTON": "Eliminar empresa", + "TITLE": "¿Eliminar compañía?", + "DESCRIPTION": "Esto eliminará la empresa y desvinculará todos los contactos asociados. Se conservarán los propios contactos.", + "DESCRIPTION_WITH_NAME": "Esto eliminará {companyName} y desvinculará todos los contactos asociados. Se conservarán los propios contactos.", + "CONFIRM": "Eliminar empresa", "MESSAGES": { - "SUCCESS": "Company deleted.", - "ERROR": "Could not delete the company." + "SUCCESS": "Empresa eliminada.", + "ERROR": "No se pudo eliminar la empresa." } } }, diff --git a/app/javascript/dashboard/i18n/locale/es/components.json b/app/javascript/dashboard/i18n/locale/es/components.json index cebd9a390..1b984ea38 100644 --- a/app/javascript/dashboard/i18n/locale/es/components.json +++ b/app/javascript/dashboard/i18n/locale/es/components.json @@ -64,6 +64,6 @@ "BULLET_LIST": "Bullet List", "ORDERED_LIST": "Ordered List", "TABLE": "Table", - "IMAGE": "Image" + "IMAGE": "Imagen" } } diff --git a/app/javascript/dashboard/i18n/locale/es/contact.json b/app/javascript/dashboard/i18n/locale/es/contact.json index 8978dc0c8..2523c0033 100644 --- a/app/javascript/dashboard/i18n/locale/es/contact.json +++ b/app/javascript/dashboard/i18n/locale/es/contact.json @@ -20,8 +20,8 @@ "CALL": "Llamar", "CALL_INITIATED": "Llamando al contacto…", "CALL_FAILED": "No se puede iniciar la llamada. Por favor, inténtelo de nuevo.", - "WHATSAPP_CALL_PERMISSION_REQUESTED": "Sent a call permission request to the contact. Try again once they accept.", - "WHATSAPP_CALL_PERMISSION_PENDING": "Call permission request already sent recently. Try again once the contact accepts.", + "WHATSAPP_CALL_PERMISSION_REQUESTED": "Solicitud de permiso de llamada al contacto enviada. Inténtalo de nuevo una vez que acepten.", + "WHATSAPP_CALL_PERMISSION_PENDING": "Solicitud de permiso de llamada ya enviada recientemente. Inténtelo de nuevo una vez que el contacto acepte.", "CLICK_TO_EDIT": "Click to edit", "VOICE_INBOX_PICKER": { "TITLE": "Seleccionar un buzón de entrada" @@ -510,6 +510,7 @@ "ATTRIBUTES": "Atributos", "HISTORY": "Historial", "NOTES": "Notas", + "MEDIA": "Media", "MERGE": "Combinar" }, "HISTORY": { @@ -585,11 +586,11 @@ }, "CONTACTS_BULK_ACTIONS": { "ASSIGN_LABELS": "Asignar etiquetas", - "REMOVE_LABELS": "Remove Labels", + "REMOVE_LABELS": "Quitar etiquetas", "ASSIGN_LABELS_SUCCESS": "Etiquetas asignadas correctamente.", "ASSIGN_LABELS_FAILED": "Failed to assign labels", - "REMOVE_LABELS_SUCCESS": "Labels removed successfully.", - "REMOVE_LABELS_FAILED": "Failed to remove labels", + "REMOVE_LABELS_SUCCESS": "Etiquetas removidas con éxito.", + "REMOVE_LABELS_FAILED": "Error al eliminar las etiquetas", "DESCRIPTION": "Select the labels you want to add to the selected contacts.", "NO_LABELS_FOUND": "No labels available yet.", "SELECTED_COUNT": "{count} selected", diff --git a/app/javascript/dashboard/i18n/locale/es/conversation.json b/app/javascript/dashboard/i18n/locale/es/conversation.json index cb0e2df70..03d4e69a4 100644 --- a/app/javascript/dashboard/i18n/locale/es/conversation.json +++ b/app/javascript/dashboard/i18n/locale/es/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Sólo puede responder a esta conversación usando una plantilla de mensaje debido a", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restricción de la ventana de mensajes de 24 horas", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Esta cuenta de Instagram fue migrada a la nueva bandeja de entrada del canal Instagram. Todos los nuevos mensajes aparecerán allí. Ya no podrás enviar mensajes de esta conversación.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram está restringido. Algunos mensajes o acciones pueden retrasarse o no estar disponibles mientras restauramos el soporte completo.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "Ver actualización de estado", "REPLYING_TO": "Esta respondiendo a:", "REMOVE_SELECTION": "Eliminar selección", "DOWNLOAD": "Descargar", @@ -62,7 +64,7 @@ "UNSUPPORTED_MESSAGE_FACEBOOK": "Este mensaje no es compatible. Puedes ver este mensaje en la aplicación de Facebook Messenger.", "UNSUPPORTED_MESSAGE_INSTAGRAM": "Este mensaje no es compatible. Puedes ver este mensaje en la aplicación de Instagram.", "UNSUPPORTED_MESSAGE_TIKTOK": "This message is unsupported. You can view this message on the TikTok app.", - "UNSUPPORTED_MESSAGE_WHATSAPP": "This message is unsupported. You can view this message on the WhatsApp app.", + "UNSUPPORTED_MESSAGE_WHATSAPP": "Este mensaje no es compatible. Puedes ver este mensaje en la aplicación de WhatsApp.", "SUCCESS_DELETE_MESSAGE": "Mensaje eliminado correctamente", "FAIL_DELETE_MESSSAGE": "¡No se pudo eliminar el mensaje! Inténtalo de nuevo", "NO_RESPONSE": "No hay respuesta", @@ -73,7 +75,7 @@ "CARD": { "SHOW_LABELS": "Mostrar etiquetas", "HIDE_LABELS": "Ocultar etiquetas", - "LABELS_COUNT": "{count} labels" + "LABELS_COUNT": "{count} etiquetas" }, "VOICE_CALL": { "INCOMING_CALL": "Incoming call", @@ -81,21 +83,21 @@ "CALL_IN_PROGRESS": "Call in progress", "NO_ANSWER": "No answer", "NO_ANSWER_OUTBOUND_LABEL": "No answer", - "NO_ANSWER_OUTBOUND_SUBTEXT": "Contact didn't pick up", + "NO_ANSWER_OUTBOUND_SUBTEXT": "El contacto no ha atendido", "MISSED_CALL": "Missed call", - "MISSED_CALL_INBOUND_SUBTEXT": "No agent picked up", - "MISSED_CALL_DECLINED_BY": "Declined by {agentName}", + "MISSED_CALL_INBOUND_SUBTEXT": "Ningún agente escogido", + "MISSED_CALL_DECLINED_BY": "Denegado por {agentName}", "CALL_ENDED": "Call ended", - "HANDLED_BY": "Handled by {agentName}", + "HANDLED_BY": "Manejado por {agentName}", "NOT_ANSWERED_YET": "Not answered yet", - "CALLING": "Calling…", + "CALLING": "Llamando…", "THEY_ANSWERED": "They answered", "YOU_ANSWERED": "You answered", - "AGENT_ANSWERED": "{agentName} answered", + "AGENT_ANSWERED": "{agentName} respondió", "JOIN_CALL": "Unirse a la llamada", - "CALL_BACK": "Call back", - "TRANSCRIPT_SHOW_MORE": "Show more", - "TRANSCRIPT_SHOW_LESS": "Show less" + "CALL_BACK": "Llamar de vuelta", + "TRANSCRIPT_SHOW_MORE": "Mostrar más", + "TRANSCRIPT_SHOW_LESS": "Mostrar menos" }, "HEADER": { "RESOLVE_ACTION": "Resolver", @@ -105,17 +107,17 @@ "OPEN": "Más", "CLOSE": "Cerrar", "DETAILS": "detalles", - "COPY_ID_SUCCESS": "Conversation ID copied to clipboard", + "COPY_ID_SUCCESS": "ID de conversación copiado al portapapeles", "SNOOZED_UNTIL": "Posponer hasta", "SNOOZED_UNTIL_TOMORROW": "Pospuesto hasta mañana", "SNOOZED_UNTIL_NEXT_WEEK": "Pospuesto hasta la próxima semana", "SNOOZED_UNTIL_NEXT_REPLY": "Posponer hasta la siguiente respuesta", - "WHATSAPP_CALL": "Start WhatsApp call", - "WHATSAPP_CALL_FAILED": "Could not start the WhatsApp call.", - "VOICE_CALL": "Start call", - "VOICE_CALL_FAILED": "Could not start the call.", - "WHATSAPP_CALL_PERMISSION_REQUESTED": "Sent a call permission request to the contact. Try again once they accept.", - "WHATSAPP_CALL_PERMISSION_PENDING": "Call permission request already sent recently. Try again once the contact accepts.", + "WHATSAPP_CALL": "Iniciar llamada de WhatsApp", + "WHATSAPP_CALL_FAILED": "No se pudo iniciar la llamada de WhatsApp.", + "VOICE_CALL": "Iniciar llamada", + "VOICE_CALL_FAILED": "No se pudo iniciar la llamada.", + "WHATSAPP_CALL_PERMISSION_REQUESTED": "Solicitud de permiso de llamada al contacto enviada. Inténtalo de nuevo una vez que acepten.", + "WHATSAPP_CALL_PERMISSION_PENDING": "Solicitud de permiso de llamada ya enviada recientemente. Inténtelo de nuevo una vez que el contacto acepte.", "SLA_STATUS": { "FRT": "FRT {status}", "NRT": "NRT {status}", @@ -231,8 +233,9 @@ "TIP_AUDIORECORDER_ICON": "Grabar audio", "TIP_AUDIORECORDER_PERMISSION": "Permitir el acceso a audio", "TIP_AUDIORECORDER_ERROR": "No se pudo abrir el audio", - "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", + "AUDIO_CONVERSION_FAILED": "Error al convertir audio. Vuelve a intentarlo.", "DRAG_DROP": "Arrastra y suelta aquí para adjuntar", + "IMAGE_UPLOAD_SUCCESS": "Imagen subida con éxito", "START_AUDIO_RECORDING": "Iniciar grabación de audio", "STOP_AUDIO_RECORDING": "Detener grabación de audio", "COPILOT_THINKING": "Copilot está pensando", @@ -303,6 +306,25 @@ "MESSAGE": "No puede deshacer esta acción", "DELETE": "Eliminar", "CANCEL": "Cancelar" + }, + "REPORT_MESSAGE": { + "LABEL": "Reportar mensaje", + "TITLE": "Reportar mensaje de Capitán", + "DESCRIPTION": "¿Ha encontrado un problema con esta respuesta de IA? Háganos saber qué salió mal y nuestro equipo lo revisará para ayudar a mejorar la precisión del Capitán.", + "PROBLEM_TYPE": "Tipo de problema", + "PROBLEM_TYPE_PLACEHOLDER": "Seleccione un tipo de problema", + "DESCRIPTION_LABEL": "Descripción", + "DESCRIPTION_PLACEHOLDER": "Describa el problema en detalle", + "SUBMIT": "Reportar", + "SUCCESS": "Gracias por reportar. Nuestro equipo echará un vistazo.", + "ERROR": "No se pudo reportar este mensaje. Por favor, inténtelo de nuevo.", + "REASONS": { + "incorrect_information": "Información incorrecta", + "inappropriate_response": "Respuesta inapropiada", + "incomplete_response": "Respuesta incompleta", + "outdated_information": "Información desactualizada", + "other": "Otro" + } } }, "SIDEBAR": { @@ -319,10 +341,10 @@ "DISMISS_CALL": "Descartar", "JOIN_CALL": "Unirse a la llamada", "END_CALL": "Terminar llamada", - "MUTE": "Mute mic", - "UNMUTE": "Unmute mic", - "VIEW_CHAT_HISTORY": "View chat history", - "GO_TO_CONVERSATION": "Go to conversation thread" + "MUTE": "Silenciar micrófono", + "UNMUTE": "Reactivar micrófono", + "VIEW_CHAT_HISTORY": "Ver historial de chat", + "GO_TO_CONVERSATION": "Ir al hilo de conversación" } }, "EMAIL_TRANSCRIPT": { @@ -389,18 +411,19 @@ "MACROS": "Macros", "LINEAR_ISSUES": "Problemas lineales vinculados", "SHOPIFY_ORDERS": "Shopify Orders", - "SHARED_FILES": "Attachments" + "SHARED_FILES": "Adjuntos" }, "SHARED_FILES": { - "EMPTY": "No attachments yet", - "DOWNLOAD": "Download file", - "DOWNLOAD_ERROR": "Could not download the file. Please try again.", + "EMPTY": "No hay archivos adjuntos aún", + "DOWNLOAD": "Descargar archivo", + "DOWNLOAD_ERROR": "No se pudo descargar el archivo. Por favor, inténtelo de nuevo.", "MEDIA_HEADING": "Media", - "FILES_HEADING": "Files", + "FILES_HEADING": "Archivos", "VIEW_ALL": "Ver todo", - "SHOW_LESS": "Show less", + "SHOW_LESS": "Mostrar menos", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Archivo sin título", + "JUMP_TO_MESSAGE": "Ir al mensaje" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/es/emoji.json b/app/javascript/dashboard/i18n/locale/es/emoji.json index c1cedd25e..c48049db6 100644 --- a/app/javascript/dashboard/i18n/locale/es/emoji.json +++ b/app/javascript/dashboard/i18n/locale/es/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Buscar emojis", "NOT_FOUND": "Ningún emoji coincide con tu búsqueda", "REMOVE": "Eliminar" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Iconos", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Buscar emoji…", + "SEARCH_ICON": "Buscar iconos…", + "FREQUENTLY_USED": "Usado con frecuencia", + "NO_EMOJI": "Ningún emoji coincide con tu búsqueda", + "NO_ICON": "No hay iconos que coincidan con tu búsqueda", + "REMOVE": "Eliminar", + "STYLE": { + "OUTLINE": "Iconos de salida", + "FILLED": "Iconos rellenados" + }, + "COLORS": { + "SLATE": "Pizarra", + "RED": "Rojo", + "ORANGE": "Naranja", + "AMBER": "Ámbar", + "GREEN": "Verde", + "TEAL": "Cereal", + "BLUE": "Azul", + "INDIGO": "Índigo", + "VIOLET": "Violeta", + "PINK": "Rosa" + } } } diff --git a/app/javascript/dashboard/i18n/locale/es/helpCenter.json b/app/javascript/dashboard/i18n/locale/es/helpCenter.json index 4b13441ee..53de602e6 100644 --- a/app/javascript/dashboard/i18n/locale/es/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/es/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publicado", "ARCHIVED": "Archivado" }, + "PENDING_EDITS": "Ediciones sin publicar", + "PENDING_EDITS_TOOLTIP": "Este artículo publicado tiene ediciones sin publicar", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Buscar artículos...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,51 +582,58 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No hay artículos coincidentes", + "SUBTITLE": "No pudimos encontrar ningún artículo que coincida con tu búsqueda. Prueba con un término diferente." } }, "BULK_TRANSLATE": { - "TITLE": "Translate article | Translate {count} articles", - "DESCRIPTION": "Translate the selected article to another language. | Translate the selected articles to another language.", - "LOCALE_LABEL": "Target language", - "LOCALE_PLACEHOLDER": "Select a language", - "CATEGORY_LABEL": "Target category", - "CATEGORY_PLACEHOLDER": "Select a category", - "OPTIONAL": "(optional)", + "TITLE": "Traducir artículo | Traducir {count} artículos", + "DESCRIPTION": "Traducir el artículo seleccionado a otro idioma. | Traducir los artículos seleccionados a otro idioma.", + "LOCALE_LABEL": "Idioma destino", + "LOCALE_PLACEHOLDER": "Seleccione un idioma", + "CATEGORY_LABEL": "Categoría de destino", + "CATEGORY_PLACEHOLDER": "Seleccione una categoría", + "OPTIONAL": "(opcional)", "CONFIRM": "Traducir", - "SELECT_ALL": "Select all ({count})", - "SELECTED_COUNT": "{count} selected", - "CLEAR_SELECTION": "Clear selection", + "SELECT_ALL": "Seleccionar todo ({count})", + "SELECTED_COUNT": "{count} seleccionados", + "CLEAR_SELECTION": "Borrar selección", "TRANSLATE_BUTTON": "Traducir", - "CONFIRM_OVERWRITE": "Overwrite and translate", - "DUPLICATE_WARNING": "A translation already exists for this article in the selected language. | Translations already exist for {count} articles in the selected language.", - "DUPLICATE_CONFIRM_HINT": "Click translate again to overwrite the existing translation.", + "CONFIRM_OVERWRITE": "Sobrescribir y traducir", + "DUPLICATE_WARNING": "Ya existe una traducción para este artículo en el idioma seleccionado. | Ya existen traducciones para los artículos {count} en el idioma seleccionado.", + "DUPLICATE_CONFIRM_HINT": "Haga clic en traducir de nuevo para sobrescribir la traducción existente.", "API": { - "SUCCESS_MESSAGE": "Translation in progress. The article will appear as a draft once ready.", - "ERROR_MESSAGE": "Failed to start translation. Please try again." + "SUCCESS_MESSAGE": "Traducción en progreso. El artículo aparecerá como borrador una vez listo.", + "ERROR_MESSAGE": "Error al iniciar la traducción. Por favor, inténtalo de nuevo." } }, "BULK_ACTIONS": { "PUBLISH": "Publicar", "DRAFT": "Borrador", - "ARCHIVE": "Archive", + "ARCHIVE": "Archivar", "TRANSLATE": "Traducir", "MOVE_TO_CATEGORY": "Categoría", "DELETE": "Eliminar", - "STATUS_SUCCESS": "Articles updated successfully", - "STATUS_ERROR": "Failed to update articles", - "CATEGORY_SUCCESS": "Articles moved successfully", - "CATEGORY_ERROR": "Failed to move articles", - "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", - "DELETE_CONFIRM_DESCRIPTION": "This will permanently delete the selected article. This action cannot be undone. | This will permanently delete {count} selected articles. This action cannot be undone.", + "STATUS_SUCCESS": "Artículos actualizados correctamente", + "STATUS_ERROR": "No se pudo actualizar artículos", + "STATUS_SKIPPED": "Se omitió 1 artículo con ediciones inéditas — ábrelo para publicarlo o descartar. | {count} artículos con ediciones sin publicar se omitieron — ábrelos para publicarlos o descartarlos.", + "STATUS_SKIPPED_ALL": "Estos artículos tienen ediciones inéditas — abren cada una para publicar o descartar.", + "CATEGORY_SUCCESS": "Artículos movidos con éxito", + "CATEGORY_ERROR": "No se pudo mover artículos", + "DELETE_CONFIRM_TITLE": "Eliminar artículo | Eliminar artículos {count}", + "DELETE_CONFIRM_DESCRIPTION": "Esto eliminará permanentemente el artículo seleccionado. Esta acción no se puede deshacer. | Esto eliminará permanentemente los {count} artículos seleccionados. Esta acción no se puede deshacer.", "DELETE_CONFIRM": "Eliminar", - "DELETE_SUCCESS": "Articles deleted successfully", - "DELETE_ERROR": "Failed to delete articles" + "DELETE_SUCCESS": "Artículos eliminados correctamente", + "DELETE_ERROR": "Error al eliminar artículos" } }, "CATEGORY_PAGE": { "CATEGORY_HEADER": { "NEW_CATEGORY": "Nueva categoría", "EDIT_CATEGORY": "Editar categoría", + "SEARCH_PLACEHOLDER": "Buscar categorías...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No se encontraron categorías", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No hay categorías coincidentes", + "SUBTITLE": "No pudimos encontrar ninguna categoría que coincida con tu búsqueda. Prueba con un término diferente." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Buscar locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No hay idiomas coincidentes", + "SUBTITLE": "No pudimos encontrar ningún local que coincida con tu búsqueda. Prueba con un término diferente." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localizar contenido", + "SELECT_POPULAR_CONTENT": "Seleccionar contenido recomendado", "DELETE": "Eliminar" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Contenido recomendado", + "DESCRIPTION": "Recoge hasta 3 categorías y 6 artículos para que aparezcan en la página principal del centro de ayuda local. Arrastra el orden que quieres que los visitantes puedan ver.", + "SEARCH": "Buscar...", + "EMPTY": "No hay resultados coincidentes", + "ADD_ANOTHER": "Añadir otro...", + "SLOTS_LEFT": "Ranuras {count} restantes", + "OVERRIDING_DEFAULTS": "Reemplazar el valor predeterminado de este local", + "CONFIRM": "Guardar recomendaciones", + "CATEGORIES": { + "LABEL": "Categorías recomendadas", + "ARTICLES_COUNT": "Ningún artículo | {count} artículo | {count} artículos" + }, + "ARTICLES": { + "LABEL": "Artículos recomendados", + "IN_CATEGORY": "en {category}", + "UNCATEGORIZED": "Sin categoría" + }, + "API": { + "SUCCESS_MESSAGE": "Contenido recomendado actualizado correctamente", + "ERROR_MESSAGE": "No se puede actualizar el contenido recomendado. Inténtelo de nuevo." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localizar contenido", + "DESCRIPTION": "Establece los valores específicos de este idioma. Cualquier cosa que quede en blanco vuelve a la configuración local por defecto.", + "NAME": { + "LABEL": "Nombre" + }, + "PAGE_TITLE": { + "LABEL": "Título de la página" + }, + "HEADER_TEXT": { + "LABEL": "Texto del encabezado" + }, + "API": { + "SUCCESS_MESSAGE": "Contenido local actualizado correctamente", + "ERROR_MESSAGE": "No se puede actualizar el contenido de la localización. Vuelve a intentarlo." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Añadir un nuevo idioma", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Previsualizar", "PUBLISH": "Publicar", + "PUBLISH_CHANGES": "Publicar cambios", + "PUBLISH_CHANGES_SUCCESS": "Cambios publicados con éxito", + "PUBLISH_CHANGES_ERROR": "No se pudo publicar los cambios", + "SAVE_IN_PROGRESS": "Todavía guarda tus últimos cambios — por favor inténtalo de nuevo en un momento.", + "DISCARD_CHANGES": "Descartar cambios", + "DISCARD_CHANGES_SUCCESS": "Cambios descartados", + "DISCARD_CHANGES_ERROR": "No se pudo descartar los cambios", + "PENDING_CHANGES": "Cambios pendientes", + "VIEW_CHANGES": "Ver cambios no publicados", "DRAFT": "Borrador", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Cambios no publicados", + "DESCRIPTION": "Este artículo tiene borradores de cambios que aún no están en vivo. ¿Aplicarlos antes de cambiar el estado, o descartarlos?", + "APPLY": "Aplicar cambios", + "DISCARD": "Descartar cambios" + }, + "DIFF_DIALOG": { + "TITLE": "Cambios no publicados", + "DESCRIPTION": "Compara tu borrador con la versión que está en vivo.", + "TITLE_LABEL": "Título" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Sin categoría", @@ -871,25 +952,25 @@ }, "LAYOUT_CONTENT": { "HEADER": "Apariencia", - "DESCRIPTION": "Pick the layout that fits how your visitors read.", + "DESCRIPTION": "Elija el diseño que se ajuste a la lectura de sus visitantes.", "LAYOUT": { "CLASSIC": { - "TITLE": "Classic", - "DESCRIPTION": "A welcoming home page with search and featured topics." + "TITLE": "Clásico", + "DESCRIPTION": "Una página de inicio acogedora con temas destacados y búsqueda." }, "SIDEBAR": { - "TITLE": "Documentation", - "DESCRIPTION": "Side-by-side navigation that keeps every guide a click away." + "TITLE": "Documentación", + "DESCRIPTION": "Navegación lateral a lado que mantiene a cada guía a un clic de distancia." } }, "SOCIAL_LINKS": { - "HEADER": "Social links", - "DESCRIPTION": "Add the handle for each network and your help center builds the full link. Shown in the documentation layout footer.", - "PLACEHOLDER": "handle", - "ADD": "Add social link", + "HEADER": "Enlaces Sociales", + "DESCRIPTION": "Agregue el manejador para cada red y su centro de ayuda construya el enlace completo. Mostrar en el pie de página de la documentación.", + "PLACEHOLDER": "mango", + "ADD": "Añadir enlace social", "REMOVE": "Eliminar" }, - "SAVE": "Save changes" + "SAVE": "Guardar cambios" }, "API": { "CREATE_PORTAL": { diff --git a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json index 1138e4abf..40cc69767 100644 --- a/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/es/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram está restringido. Algunos mensajes o acciones pueden retrasarse o no estar disponibles mientras restauramos el soporte completo.", + "STATUS_LINK": "Ver actualización de estado" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "Las conexiones de TikTok para cuentas norteamericanas no están disponibles temporalmente mientras esperamos una actualización del equipo de TikTok." }, "TWITTER": { "HELP": "Para añadir tu perfil de Twitter como un canal, necesitas autenticar tu perfil de Twitter haciendo clic en 'Iniciar sesión con Twitter' ", @@ -308,7 +311,7 @@ "AUTH_PROCESSING": "Authenticating with Meta", "WAITING_FOR_BUSINESS_INFO": "Please complete business setup in the Meta window...", "PROCESSING": "Setting up your WhatsApp Business Account", - "ENABLING_CALLING": "Enabling WhatsApp Calling on your number…", + "ENABLING_CALLING": "Activando llamadas de WhatsApp en tu número…", "LOADING_SDK": "Loading Facebook SDK...", "CANCELLED": "WhatsApp Signup was cancelled", "SUCCESS_TITLE": "WhatsApp Business Account Connected!", @@ -319,7 +322,7 @@ "SUCCESS_FALLBACK": "WhatsApp Business Account has been successfully configured", "MANUAL_FALLBACK": "If your number is already connected to the WhatsApp Business Platform (API), or if you’re a tech provider onboarding your own number, please use the {link} flow", "MANUAL_LINK_TEXT": "manual setup flow", - "CALLING_ENABLE_FAILED": "Your WhatsApp inbox is ready, but voice calling couldn't be turned on — this number isn't enrolled in the WhatsApp Business Calling API yet. Reach out to Meta or your WhatsApp Business Solution Provider to onboard it, then turn calling on from the inbox's Calls settings." + "CALLING_ENABLE_FAILED": "Tu bandeja de entrada de WhatsApp está lista, pero las llamadas de voz no se pudieron activar — este número aún no está inscrito en la API de llamadas empresariales de WhatsApp. Llega a Meta o a tu proveedor de soluciones empresariales de WhatsApp a bordo, luego enciende la llamada desde la configuración de las llamadas de la bandeja de entrada." }, "API": { "ERROR_MESSAGE": "No pudimos guardar el canal de WhatsApp" @@ -468,8 +471,8 @@ "DESCRIPTION": "Support your customers on WhatsApp" }, "WHATSAPP_CALL": { - "TITLE": "WhatsApp Call", - "DESCRIPTION": "Take voice calls on your WhatsApp number" + "TITLE": "Llamada de WhatsApp", + "DESCRIPTION": "Responde llamadas de voz en tu número de WhatsApp" }, "EMAIL": { "TITLE": "E-mail", @@ -643,36 +646,40 @@ "BOT_CONFIGURATION": "Configuración del bot", "ACCOUNT_HEALTH": "Account Health", "CSAT": "Encuestas de Satisfacción", - "VOICE": "Voice", - "CALLS": "Calls" + "VOICE": "Voz", + "CALLS": "Llamadas" }, "VOICE_CONFIGURATION": { "ENABLE_VOICE": { - "LABEL": "Enable Voice Calling", - "DESCRIPTION": "Enable voice calling on this inbox. Agents will be able to make and receive phone calls." + "LABEL": "Habilitar llamadas de voz", + "DESCRIPTION": "Activar llamadas de voz en esta bandeja de entrada. Los agentes podrán hacer y recibir llamadas telefónicas." }, "CREDENTIALS": { - "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + "DESCRIPTION": "Llamada de voz requiere credenciales de Clave de Twilio API. Estas se utilizan para generar tokens para las conexiones de voz del agente." + }, + "INBOUND": { + "LABEL": "Permitir llamadas entrantes", + "DESCRIPTION": "Permitir que los clientes llamen a este número. Cuando se desactivan, las llamadas entrantes son rechazadas automáticamente: los agentes no son notificados y no se crea ninguna conversación. Los agentes todavía pueden realizar llamadas salientes." } }, "WHATSAPP_CALLING": { "ENABLE": { - "LABEL": "Enable WhatsApp Calling", - "DESCRIPTION": "Allow agents to receive and place WhatsApp Cloud calls on this inbox. Customers can call this business number directly from WhatsApp." + "LABEL": "Habilitar llamadas de WhatsApp", + "DESCRIPTION": "Permitir a los agentes recibir y hacer llamadas a WhatsApp Cloud en esta bandeja de entrada. Los clientes pueden llamar a este número de negocio directamente desde WhatsApp." }, - "ENABLE_FAILED": "Voice calling couldn't be turned on for this number — it isn't enrolled in the WhatsApp Business Calling API yet. Reach out to Meta or your WhatsApp Business Solution Provider to onboard it, then try again.", + "ENABLE_FAILED": "No se pudo activar la llamada de voz para este número — aún no está inscrito en la API de llamadas empresariales de WhatsApp. Llega a Meta o a tu proveedor de soluciones de negocios de WhatsApp a bordo de él, luego vuelve a intentarlo.", "PHONE_NUMBER": { - "LABEL": "Business phone number", - "HELP_TEXT": "WhatsApp number that customers will call." + "LABEL": "Número de teléfono empresarial", + "HELP_TEXT": "Número de WhatsApp al que llamarán los clientes." }, "HOW_IT_WORKS": { - "LABEL": "How it works", - "DESCRIPTION": "Calls are placed peer-to-peer between the agent's browser and Meta — no extra credentials are required. Make sure the agent's browser has microphone permission for this site." + "LABEL": "Cómo funciona", + "DESCRIPTION": "Las llamadas se colocan entre el navegador y el Meta del agente, no se requieren credenciales adicionales. Asegúrese de que el navegador del agente tiene permiso de micrófono para este sitio." }, "PERMISSION_REQUEST_BODY": { - "LABEL": "Call permission request message", - "HELP_TEXT": "Shown to the contact when they haven't yet consented to receive calls. Leave blank to use the default.", - "PLACEHOLDER": "We would like to call you regarding your conversation." + "LABEL": "Mensaje de solicitud de permiso de llamada", + "HELP_TEXT": "Mostrar al contacto cuando aún no han aceptado recibir llamadas. Dejar en blanco para usar el valor predeterminado.", + "PLACEHOLDER": "Nos gustaría llamarte en relación con tu conversación." } }, "CHANNEL_PREFERENCES": "Channel Preferences", @@ -782,7 +789,7 @@ "SENDER_NAME_SECTION_TEXT": "Habilitar/Deshabilitar mostrando el nombre del agente en el correo electrónico, si está deshabilitado, mostrará el nombre del negocio", "ENABLE_CONTINUITY_VIA_EMAIL": "Habilitar continuidad de conversación por correo electrónico", "ENABLE_CONTINUITY_VIA_EMAIL_SUB_TEXT": "Las conversaciones continuarán por correo electrónico si la dirección de correo electrónico de contacto está disponible.", - "ENABLE_CONTINUITY_VIA_EMAIL_DISABLED_TEXT": "This feature is available on a paid plan. Upgrade to enable conversation continuity via email.", + "ENABLE_CONTINUITY_VIA_EMAIL_DISABLED_TEXT": "Esta función está disponible en un plan de pago. Actualiza para habilitar la continuidad de la conversación por correo electrónico.", "LOCK_TO_SINGLE_CONVERSATION": "Conversation Routing", "LOCK_TO_SINGLE_CONVERSATION_SUB_TEXT": "Configure conversation creation for existing contacts", "INBOX_UPDATE_TITLE": "Ajustes de la Bandeja de Entrada", @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Cambiar a Configuración Manual", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "Esta bandeja de entrada fue conectada a través del registro incrustado de WhatsApp, que ya no es compatible. Introduzca las credenciales API de WhatsApp Cloud de su propia aplicación Meta, para cambiar esta bandeja de entrada a una configuración manual. Configure el webhook en su aplicación Meta, utilizando el token de verificación de arriba antes de cambiar.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "ID de número de teléfono", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID de cuenta de negocio", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Clave de API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Introduzca un token de acceso permanente desde su aplicación Meta", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Cambiar a Configuración Manual", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "La bandeja de entrada cambió a la configuración manual con éxito.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "No se pudo cambiar a la configuración manual. Por favor, compruebe las credenciales e inténtelo de nuevo.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,9 +843,73 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Configuración manual recomendada", + "DESCRIPTION": "Esta bandeja de entrada se conecta a través de la aplicación Meta compartida utilizada para el registro incrustado, que las recientes restricciones Meta han afectado. Para evitar problemas similares en el futuro, recomendamos volver a conectarlo con tu propia aplicación Meta.", + "START": "Iniciar migración manual", + "GUIDE": "Ver guía" + }, + "DIALOG": { + "EYEBROW": "Migración manual de WhatsApp", + "TITLE": "Volver a conectar la bandeja de entrada de WhatsApp", + "CLOSE": "Cerrar", + "ACTION_REQUIRED_TITLE": "Volver a conectar con tu propia aplicación Meta", + "ACTION_REQUIRED_DESCRIPTION": "Las bandejas conectadas a través de tu propia aplicación Meta, no se ven afectadas por restricciones en la aplicación de registro compartida. Este flujo guiado actualiza la conexión API de WhatsApp sin crear una nueva bandeja de entrada.", + "GUIDE_LINK": "Abrir la guía de configuración manual", + "PRESERVED_TITLE": "Preservado", + "PRESERVED_DESCRIPTION": "Conversaciones, contactos, colaboradores, enrutamiento, horas de trabajo y ajustes de bandeja de entrada.", + "UPDATED_TITLE": "Actualizado", + "UPDATED_DESCRIPTION": "WABA ID, número de teléfono ID, token de acceso y configuración de webhook.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Introduzca ID de WABA", + "WABA_HELP": "La cuenta de negocios de WhatsApp que posee este número de teléfono.", + "PHONE_NUMBER_ID": "ID de número de teléfono", + "PHONE_NUMBER_PLACEHOLDER": "Ingrese el ID del número de teléfono", + "PHONE_NUMBER_HELP": "ID único de Meta para el número de WhatsApp conectado a esta bandeja de entrada.", + "DISPLAY_PHONE_NUMBER": "Número de teléfono visible", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Ingrese el número de teléfono visible", + "DISPLAY_PHONE_NUMBER_HELP": "El número WhatsApp orientado al cliente. Esto no se puede cambiar durante la migración.", + "ACCESS_TOKEN": "Token de acceso permanente o token de usuario del sistema", + "ACCESS_TOKEN_PLACEHOLDER": "Pegar token de acceso", + "TOKEN_HELP_PREFIX": "El token debe incluir", + "TOKEN_HELP_MIDDLE": "Añadir", + "TOKEN_HELP_SUFFIX": "para sincronización de plantillas y gestión de plantillas.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Revisar antes de volver a conectar", + "INBOX": "Bandeja de entrada", + "PHONE_NUMBER": "Número de teléfono", + "NOT_ENTERED": "No ingresado", + "VERIFY_NOTICE": "Chatwoot verificará estas credenciales con Meta antes de aplicar cualquier cambio. Si la verificación falla, la configuración actual se deja sin tocar.", + "BACK": "Atrás", + "CANCEL": "Cancelar", + "CONTINUE": "Continuar", + "REVIEW_MIGRATION": "Revisar migración", + "RECONNECT": "Volver a conectar la bandeja de entrada de WhatsApp" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Antes de empezar", + "DESCRIPTION": "Esto vuelve a conectar los detalles de la API de WhatsApp para esta bandeja de entrada. Se conservarán las conversaciones, colaboradores, enrutamiento, horas laborables, CSAT y configuración del bot." + }, + "BUSINESS_DETAILS": { + "TITLE": "Detalles del negocio", + "DESCRIPTION": "Introduzca los activos de WhatsApp de la cuenta de cliente Meta Business." + }, + "ACCESS_TOKEN": { + "TITLE": "Token de acceso", + "DESCRIPTION": "Pegue un token de acceso permanente o un token de usuario del sistema con permisos de WhatsApp." + }, + "REVIEW_MIGRATION": { + "TITLE": "Revisar migración", + "DESCRIPTION": "Confirme los detalles de conexión antes de volver a conectar esta bandeja de entrada. Chatwoot verificará el token, WABA y el número de teléfono con Meta antes de aplicar los cambios." + } + } + }, "WHATSAPP_CALLING_ENABLED": { - "LABEL": "Enable voice calling", - "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." + "LABEL": "Habilitar llamadas de voz", + "DESCRIPTION": "Permitir a los agentes iniciar y recibir llamadas de voz de WhatsApp en esta bandeja de entrada. Disponible sólo en canales de registro embebido de WhatsApp Cloud con permiso de llamada concedido por Meta." }, "UPDATE_PRE_CHAT_FORM_SETTINGS": "Actualizar configuración de Formulario de Chat" }, diff --git a/app/javascript/dashboard/i18n/locale/es/index.js b/app/javascript/dashboard/i18n/locale/es/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/es/index.js +++ b/app/javascript/dashboard/i18n/locale/es/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/es/integrationApps.json b/app/javascript/dashboard/i18n/locale/es/integrationApps.json index 6c2269aff..6982814c2 100644 --- a/app/javascript/dashboard/i18n/locale/es/integrationApps.json +++ b/app/javascript/dashboard/i18n/locale/es/integrationApps.json @@ -46,7 +46,7 @@ "PLACEHOLDER": "Seleccione una bandeja de entrada" }, "SUBMIT": "Crear", - "VALIDATING_OPENAI": "Validating with OpenAI...", + "VALIDATING_OPENAI": "Validando con OpenAI...", "CANCEL": "Cancelar" }, "API": { diff --git a/app/javascript/dashboard/i18n/locale/es/integrations.json b/app/javascript/dashboard/i18n/locale/es/integrations.json index c04f79403..eb3fcc265 100644 --- a/app/javascript/dashboard/i18n/locale/es/integrations.json +++ b/app/javascript/dashboard/i18n/locale/es/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Eventos suscritos", "LEARN_MORE": "Aprenda más sobre webhooks", + "PAYWALL": { + "TITLE": "Los webhooks están disponibles en planes de pago", + "AVAILABLE_ON": "Usa webhooks para recibir eventos en tiempo real de tu cuenta de Chatwoot.", + "UPGRADE_PROMPT": "Actualice a Startups, Business, o Enterprise planea usar webhooks.", + "UPGRADE_NOW": "Actualizar ahora", + "CANCEL_ANYTIME": "Cambie o cancele su plan en cualquier momento." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -58,7 +65,7 @@ "CONTACT_UPDATED": "Contacto actualizado", "CONVERSATION_TYPING_ON": "Conversation Typing On", "CONVERSATION_TYPING_OFF": "Conversation Typing Off", - "INBOX_UPDATED": "Inbox updated" + "INBOX_UPDATED": "Bandeja de entrada actualizada" } }, "NAME": { @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Capitán", "HEADER_KNOW_MORE": "Más información", + "OVERVIEW": { + "HEADER": "Resumen", + "WELCOME": { + "LABEL": "Resumen del capitán", + "LOADING": "Generando resumen…" + }, + "INBOX_BANNER": { + "TEXT": "Este asistente aún no está conectado a ninguna bandeja de entrada, por lo que no responderá a las conversaciones.", + "ACTION": "Conectar bandeja de entrada", + "DISMISS": "Descartar" + }, + "COVERAGE_BANNER": { + "TEXT": "Las Preguntas Frecuentes {count} están pendientes de revisión, manteniendo la cobertura en {coverage}%. Aprovéchalas para que tu asistente pueda resolver más por sí solo.", + "ACTION": "Revisar FAQs", + "DISMISS": "Descartar" + }, + "RANGES": { + "LAST_DAYS": "Últimos {count} días", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversaciones manejadas", + "HINT": "Distintas conversaciones en las que respondió este asistente." + }, + "AUTO_RESOLUTION": { + "LABEL": "Tasa de resolución automática", + "HINT": "Compartido de conversaciones manejadas cerradas sin una respuesta humana." + }, + "HANDOFF": { + "LABEL": "Tasa de desconexión", + "HINT": "Comparte las conversaciones manipuladas escaladas a un agente humano." + }, + "HOURS_SAVED": { + "LABEL": "Tiempo ahorrado", + "HINT": "Estimado: El Capitán responde veces ~2 minutos de esfuerzo de agente asumido por respuesta. Trabajo direccional, no medido." + }, + "REOPEN": { + "LABEL": "Reabrir tasa", + "HINT": "Conversaciones resueltas automáticamente que se reabrieron después." + }, + "DEPTH": { + "LABEL": "Mensajes / conversación", + "HINT": "Promedio de respuestas que el asistente envía por conversación." + } + }, + "DRILLDOWN": { + "CLOSE": "Detalles de cierre", + "EMPTY": "No se encontraron registros para esta métrica.", + "ERROR": "No se pudo cargar los registros. Por favor, inténtelo de nuevo.", + "LOAD_MORE": "Cargar más", + "RESULT_COUNT_CONVERSATION": "Conversación {count} | Conversaciones {count}" + }, + "KNOWLEDGE": { + "TITLE": "Cobertura del conocimiento", + "COVERAGE": "{pct}% aprobado", + "APPROVED": "FAQs Aprobadas", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Capitán documentos", + "DESCRIPTION": "Guías y cómo para el Capitán" + }, + "PLAYGROUND": { + "TITLE": "Zona de pruebas", + "DESCRIPTION": "Probar las respuestas de este asistente" + }, + "BILLING": { + "TITLE": "Facturación", + "DESCRIPTION": "Gestionar créditos y plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistentes", "SWITCH_ASSISTANT": "Cambiar entre asistentes", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Descripción", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "Preguntas frecuentes {n} | Preguntas frecuentes {n}", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -752,53 +832,73 @@ "ERROR_MESSAGE": "There was an error deleting the documents, please try again." }, "BULK_SYNC": { - "SUCCESS_MESSAGE_ONE": "Refresh queued for 1 document", - "SUCCESS_MESSAGE": "Refresh queued for {count} documents", - "ZERO_MESSAGE": "No documents marked for refresh.", - "ERROR_MESSAGE": "There was an error queuing the refresh, please try again." + "SUCCESS_MESSAGE_ONE": "Actualizar en cola para 1 documento", + "SUCCESS_MESSAGE": "Actualizar en cola para {count} documentos", + "ZERO_MESSAGE": "No hay documentos marcados para refrescar.", + "ERROR_MESSAGE": "Hubo un error al poner en cola la actualización, por favor inténtalo de nuevo." }, "SYNC": { - "QUEUED_MESSAGE": "Refresh queued. We'll update the document shortly.", - "ERROR_MESSAGE": "Could not queue refresh, please try again." + "QUEUED_MESSAGE": "Actualización en cola. Actualizaremos el documento en breve.", + "ERROR_MESSAGE": "No se pudo actualizar la cola, por favor inténtalo de nuevo." }, "FILTERS": { "SOURCE": { - "ALL": "All sources", - "WEB": "Web pages", + "ALL": "Todas las fuentes", + "WEB": "Páginas web", "PDF": "PDFs" }, "STATUS": { - "ANY": "Any status", - "UPDATED": "Updated", - "NEEDS_UPDATE": "Needs update", - "UPDATING": "Updating", + "ANY": "Cualquier estado", + "UPDATED": "Actualizado", + "NEEDS_UPDATE": "Necesita actualización", + "UPDATING": "Actualizando", "FAILED": "Failed" }, "SORT": { - "RECENTLY_UPDATED": "Recently updated", - "RECENTLY_CREATED": "Recently created" + "RECENTLY_UPDATED": "Actualizado recientemente", + "RECENTLY_CREATED": "Creado recientemente" }, "SEARCH_PLACEHOLDER": "Buscar..." }, "SYNC_STATUS": { - "SYNCED": "last updated {time}", + "SYNCED": "última actualización {time}", "SYNCING": "actualizando...", - "STALE_SYNC": "update stalled", - "FAILED": "Failed to sync", - "NEVER_SYNCED": "not updated yet" + "STALE_SYNC": "actualización bloqueada", + "FAILED": "Fallo al sincronizar", + "NEVER_SYNCED": "no actualizado aún" }, "SYNC_ERRORS": { "NOT_FOUND": "Página no encontrada", - "ACCESS_DENIED": "Access denied", - "TIMEOUT": "Page took too long to respond", - "CONTENT_EMPTY": "Page returned empty content", - "FETCH_FAILED": "Could not fetch page", - "SYNC_ERROR": "Unexpected error", - "DEFAULT": "Sync error" + "ACCESS_DENIED": "Acceso denegado", + "TIMEOUT": "La página tardó demasiado en responder", + "CONTENT_EMPTY": "La página devolvió contenido vacío", + "FETCH_FAILED": "No se pudo obtener la página", + "SYNC_ERROR": "Error inesperado", + "DEFAULT": "Error de sincronización" }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "Aún no se han generado FAQs de este documento." + }, + "DETAILS": { + "DESCRIPTION": "Revise el contenido acumulado y las preguntas frecuentes generadas a partir de esta fuente.", + "SOURCE": "Fuente", + "GENERATED_FAQS": "FAQs generadas", + "LAST_UPDATED": "Última actualización", + "NOT_AVAILABLE": "No disponible", + "CONTENT_TAB": "Contenido arrastrado", + "PDF_TAB": "Detalles PDF", + "CONTENT_TITLE": "Contenido arrastrado", + "PDF_TITLE": "Archivo PDF", + "PDF_DESCRIPTION": "Revise la fuente PDF original.", + "CHARACTER_COUNT": "{count} caracteres extraídos", + "COPY_CONTENT": "Copiar", + "COPY_SUCCESS": "Contenido arrastrado copiado al portapapeles", + "COPY_ERROR": "No se pudo copiar el contenido", + "VIEW_RAW": "Ver crudo", + "VIEW_PREVIEW": "Ver vista previa", + "UNREADABLE_CONTENT": "El contenido legible no se pudo extraer de este documento. Puede ver el contenido extraído en bruto.", + "EMPTY_CONTENT": "Aún no hay contenido grabado disponible para este documento." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,16 +938,16 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", - "SYNC_NOW": "Refresh now", - "RETRY_SYNC": "Retry refresh", + "VIEW_DETAILS": "Ver detalles", + "SYNC_NOW": "Refrescar ahora", + "RETRY_SYNC": "Reintentar refresco", "DELETE_DOCUMENT": "Delete Document" }, "EMPTY_STATE": { "TITLE": "No documents available", "SUBTITLE": "Documents are used by your assistant to generate FAQs. You can import documents to provide context for your assistant.", - "FILTERED_TITLE": "No matching documents", - "FILTERED_SUBTITLE": "Try changing the source, status, or search term.", + "FILTERED_TITLE": "No hay documentos coincidentes", + "FILTERED_SUBTITLE": "Intenta cambiar la fuente, el estado o el término de búsqueda.", "FEATURE_SPOTLIGHT": { "TITLE": "Captain Document", "NOTE": "A document in Captain serves as a knowledge resource for the assistant. By connecting your help center or guides, Captain can analyze the content and provide accurate responses for customer inquiries." diff --git a/app/javascript/dashboard/i18n/locale/es/macros.json b/app/javascript/dashboard/i18n/locale/es/macros.json index 42c628897..62754ea50 100644 --- a/app/javascript/dashboard/i18n/locale/es/macros.json +++ b/app/javascript/dashboard/i18n/locale/es/macros.json @@ -50,7 +50,7 @@ } }, "VIEW": { - "TOOLTIP": "View macro" + "TOOLTIP": "Ver macro" }, "EDIT": { "TOOLTIP": "Editar macro", @@ -70,8 +70,8 @@ "GLOBAL": { "LABEL": "Público", "DESCRIPTION": "Esta macro está disponible públicamente para todos los agentes de esta cuenta.", - "CREATE_DISABLED_DESCRIPTION": "Only administrators can create public macros.", - "EDIT_DISABLED_DESCRIPTION": "Only administrators can edit public macros." + "CREATE_DISABLED_DESCRIPTION": "Sólo los administradores pueden crear macros públicas.", + "EDIT_DISABLED_DESCRIPTION": "Sólo los administradores pueden editar macros públicas." }, "PERSONAL": { "LABEL": "Privado", diff --git a/app/javascript/dashboard/i18n/locale/es/mfa.json b/app/javascript/dashboard/i18n/locale/es/mfa.json index 0a395e2bc..137dd18cf 100644 --- a/app/javascript/dashboard/i18n/locale/es/mfa.json +++ b/app/javascript/dashboard/i18n/locale/es/mfa.json @@ -57,8 +57,8 @@ "OTP_CODE_PLACEHOLDER": "000000", "BACKUP_CODE": "Backup Code", "BACKUP_CODE_PLACEHOLDER": "Enter one of your backup codes", - "USE_BACKUP_CODE": "Lost access to your authenticator? Use a backup code instead", - "USE_OTP_CODE": "Use a verification code from your authenticator app", + "USE_BACKUP_CODE": "¿Perdiste el acceso a su autenticador? Utilice un código de respaldo en su lugar", + "USE_OTP_CODE": "Usa un código de verificación de tu aplicación de autenticación", "CONFIRM": "Disable 2FA", "CANCEL": "Cancelar", "SUCCESS": "Two-factor authentication has been disabled", diff --git a/app/javascript/dashboard/i18n/locale/es/onboarding.json b/app/javascript/dashboard/i18n/locale/es/onboarding.json index 9f2ceb5f3..0ea430fee 100644 --- a/app/javascript/dashboard/i18n/locale/es/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/es/onboarding.json @@ -1,34 +1,88 @@ { "ONBOARDING_NEXT": { - "GREETING": "Hello {name}!", - "SUBTITLE": "Please review the following details", - "YOUR_DETAILS": "Your details", - "COMPANY_DETAILS": "Company details", + "GREETING": "¡Hola {name}!", + "SUBTITLE": "Por favor, revise los siguientes detalles", + "YOUR_DETAILS": "Sus datos", + "COMPANY_DETAILS": "Detalles de la empresa", "FIELDS": { "EMAIL": "E-mail", - "YOUR_ROLE": "Your Role", + "YOUR_ROLE": "Tu rol", "WEBSITE": "Sitio web", "LANGUAGE": "Idioma", "TIMEZONE": "Timezone", - "COMPANY_SIZE": "Company Size", - "INDUSTRY": "Industry", - "REFERRAL_SOURCE": "Where did you find us?" + "COMPANY_SIZE": "Tamaño de la empresa", + "INDUSTRY": "Industria", + "REFERRAL_SOURCE": "¿Dónde nos encontraron?" }, "PLACEHOLDERS": { - "SELECT_ROLE": "Select your role", - "ENTER_WEBSITE": "www.example.com", - "SELECT_LANGUAGE": "Select language", + "SELECT_ROLE": "Seleccione su rol", + "ENTER_WEBSITE": "www.ejemplo.com", + "SELECT_LANGUAGE": "Seleccionar idioma", "SELECT_TIMEZONE": "Seleccione la zona horaria", - "SELECT_COMPANY_SIZE": "Select company size", - "SELECT_INDUSTRY": "Select industry", - "SELECT_REFERRAL_SOURCE": "Select source" + "SELECT_COMPANY_SIZE": "Seleccione el tamaño de la empresa", + "SELECT_INDUSTRY": "Seleccionar industria", + "SELECT_REFERRAL_SOURCE": "Seleccionar fuente" }, - "EMAIL_VERIFIED": "Email verified", - "SETTING_UP": "Setting up your account...", + "EMAIL_VERIFIED": "Email verificado", + "SETTING_UP": "Configurando tu cuenta...", "CONTINUE": "Continue", "SAVING": "Guardando...", - "VALIDATION_ERROR": "Please fill in all required fields", - "SUCCESS": "Details saved successfully", - "ERROR": "Could not save details. Please try again." + "VALIDATION_ERROR": "Por favor, rellene todos los campos requeridos", + "SUCCESS": "Detalles guardados correctamente", + "ERROR": "No se pudo guardar los detalles. Por favor, inténtelo de nuevo." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Vamos a configurar algunas cosas", + "SUBTITLE": "Esto le dará inicio en su área de trabajo", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Algo salió mal. Por favor, inténtalo de nuevo.", + "WHATSAPP_CONNECTED": "WhatsApp se ha conectado correctamente", + "FACEBOOK_CONNECTED": "Facebook conectado correctamente", + "CREATED_FOR_YOU": { + "TITLE": "Hemos creado lo siguiente para ti", + "LIVE_CHAT": "Widget de Live Chat", + "LIVE_CHAT_DESCRIPTION": "Mensajero instantáneo para tu sitio web", + "LIVE_CHAT_STATUS": "Casi listo…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Centro de ayuda", + "HELP_CENTER_DESCRIPTION": "Tu enciclopedia digital", + "HELP_CENTER_GENERATING": "Creando tu centro de ayuda…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analizando tu sitio web…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Configurando categorías…", + "HELP_CENTER_CURATING_ARTICLES": "Curando artículos…", + "HELP_CENTER_ARTICLES": "Artículo {count} creado | Artículos {count} creados", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Artículo {count} creado a través de {categories} | Creado {count} artículos a través de {categories}" + }, + "CHANNELS": { + "TITLE": "Conecta todos tus canales de conversación", + "HEADER": "Encontramos algunos canales que puedes conectar", + "CONNECT": "Conectar", + "CONNECTED": "Conectado", + "MORE_CHANNELS_NOTE": "Configurar los canales {email} y {voice} más adelante dentro de la aplicación", + "MORE_CHANNELS_EMAIL": "E-mail", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Ver todo", + "GMAIL": "Gmail", + "OUTLOOK": "Mirador", + "OTHER_EMAIL": "Otros proveedores de correo" + }, + "CHANNELS_DIALOG": { + "TITLE": "Conecta todos tus canales al instante", + "SUBTITLE": "Gestiona todos desde un solo panel. También puedes configurar y editar las bandejas de entrada más adelante dentro de la aplicación.", + "NOTE": "SMS, API, Voice, y otros proveedores de correo electrónico pueden configurarse más tarde desde su panel de control.", + "CONNECT_TITLE": "Conecta tu cuenta de {name}", + "CONNECT_SUBTITLE": "Rellena estos detalles rápidos", + "CONNECT": "Conectar", + "BACK": "Atrás", + "SETUP_LATER": "Configurar más tarde en la aplicación", + "FACEBOOK_SUBTITLE": "Autorizar el acceso y elegir una página para conectar.", + "FACEBOOK_LAUNCH": "Continuar con Facebook", + "FACEBOOK_SELECT_PAGE": "Seleccione una página para conectar", + "FACEBOOK_LOADING": "Cargando tus páginas de Facebook…", + "FACEBOOK_NO_PAGES": "No se encontraron páginas conectables. Todas sus páginas ya están conectadas.", + "FACEBOOK_ERROR": "No se pudo conectar a Facebook. Por favor, inténtalo de nuevo." + } } } diff --git a/app/javascript/dashboard/i18n/locale/es/report.json b/app/javascript/dashboard/i18n/locale/es/report.json index 9d04c80c6..d8564202f 100644 --- a/app/javascript/dashboard/i18n/locale/es/report.json +++ b/app/javascript/dashboard/i18n/locale/es/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Limpiar filtros", "EMPTY_LIST": "No se encontraron resultados" }, + "DRILLDOWN": { + "TITLE": "Detalles de {metric}", + "RESULT_COUNT_CONVERSATION": "Conversación {count} | Conversaciones {count}", + "RESULT_COUNT_MESSAGE": "Mensaje {count} | Mensajes {count}", + "EMPTY": "No se encontraron registros para esta barra.", + "ERROR": "No se pudo cargar los registros. Por favor, inténtelo de nuevo.", + "ADMIN_ONLY": "Sólo los administradores pueden perforar en registros de reporte.", + "LOAD_MORE": "Cargar más", + "CLOSE": "Cerrar detalles", + "PREVIOUS_BUCKET": "Barra anterior", + "NEXT_BUCKET": "Barra siguiente", + "UNKNOWN_CONTACT": "Contacto desconocido", + "UNKNOWN_INBOX": "Bandeja de entrada desconocida", + "UNASSIGNED_AGENT": "Sin asignar", + "NO_MESSAGE_CONTENT": "Sin contenido de mensaje", + "MESSAGE_CREATED_AT": "Mensaje creado a la {time}", + "EVENT_OCCURRED_AT": "El evento se produjo en {time}", + "INCOMING_MESSAGE": "Mensaje entrante", + "OUTGOING_MESSAGE": "Mensaje saliente" + }, "PAGINATION": { "RESULTS": "Mostrando {start} a {end} de {total} resultados", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/es/sessionLimit.json b/app/javascript/dashboard/i18n/locale/es/sessionLimit.json new file mode 100644 index 000000000..db4a9ef73 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/es/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Límite de sesión activa alcanzado", + "DESCRIPTION": "Ha alcanzado su límite de sesiones activas. Por favor, finalice una sesión antes de iniciar sesión.", + "END": "Finalizar", + "END_ALL": "Finalizar todas las sesiones", + "LOG_IN": "Iniciar sesión", + "CANCEL": "Volver a iniciar sesión", + "UNKNOWN_DEVICE": "Dispositivo desconocido", + "STARTED": "Iniciado" + } +} diff --git a/app/javascript/dashboard/i18n/locale/es/settings.json b/app/javascript/dashboard/i18n/locale/es/settings.json index be7747902..666da9aed 100644 --- a/app/javascript/dashboard/i18n/locale/es/settings.json +++ b/app/javascript/dashboard/i18n/locale/es/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Sesiones activas", + "NOTE": "Estos son los dispositivos conectados actualmente a tu cuenta.", + "CURRENT": "Sesión actual", + "REVOKE": "Revocar", + "REVOKE_SUCCESS": "Sesión revocada con éxito", + "REVOKE_ERROR": "No se puede revocar la sesión. Por favor, inténtalo de nuevo.", + "FETCH_ERROR": "No se pueden recuperar las sesiones. Por favor, inténtalo de nuevo.", + "LAST_ACTIVE": "Última actividad", + "UNKNOWN_DEVICE": "Dispositivo desconocido" + }, "ACCESS_TOKEN": { "TITLE": "Token de acceso", "NOTE": "Este token puede ser usado si estás construyendo una integración basada en API", + "PAID_PLAN_NOTE": "Los tokens de acceso API están disponibles en planes de pago.", "COPY": "Copiar", "RESET": "Reset", "CONFIRM_RESET": "¿Está seguro?", @@ -252,7 +264,7 @@ "EMAIL_VERIFICATION_SENT": "El correo electrónico de verificación ha sido enviado. Por favor, comprueba tu bandeja de entrada.", "ACCOUNT_SUSPENDED": { "TITLE": "Cuenta suspendida", - "MESSAGE": "Tu cuenta está suspendida. Comuníquese con el equipo de soporte para obtener más información." + "MESSAGE": "Tu cuenta ha sido suspendida debido a actividades que pueden violar nuestras políticas. Si crees que esto es un error, ponte en contacto con nuestro equipo de soporte." }, "NO_ACCOUNTS": { "TITLE": "No account found", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Capitán", "CAPTAIN_ASSISTANTS": "Asistentes", + "CAPTAIN_OVERVIEW": "Resumen", "CAPTAIN_DOCUMENTS": "Documentos", "CAPTAIN_RESPONSES": "Preguntas frecuentes", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notificaciones", "CANNED_RESPONSES": "Respuestas predefinidas", "INTEGRATIONS": "Integraciones", + "DATA": "Datos", "PROFILE_SETTINGS": "Ajustes del perfil", "ACCOUNT_SETTINGS": "Configuración de la cuenta", "APPLICATIONS": "Aplicaciones", @@ -379,11 +393,124 @@ "INFO_TEXT": "Permite que el sistema te marque automáticamente sin conexión cuando no estás usando la aplicación o el tablero.", "INFO_SHORT": "Marcar automáticamente sin conexión cuando no está usando la aplicación." }, + "SORT_TOOLTIP": "Ordenar", + "SORT_BY": "Ordenar por", + "SORT_GROUPS": { + "CREATED": "Ordenar por fecha de creación", + "ALPHABETICAL": "Ordenar en orden alfabético", + "UNREAD_COUNT": "Ordenar por número de no leídos" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Más nuevo primero", + "CREATED_ASC": "Lo más antiguo primero", + "ALPHABETICAL_ASC": "Ascendente (A - Z)", + "ALPHABETICAL_DESC": "Descendente (Z - A)", + "UNREAD_COUNT_DESC": "Más alto primero", + "UNREAD_COUNT_ASC": "Más bajo primero" + }, "DOCS": "Leer documentos", "SECURITY": "Security", "CAPTAIN_AI": "Capitán", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Datos", + "DESCRIPTION": "Trae tus contactos y conversaciones pasadas a esta cuenta desde otra herramienta de soporte. Cada importación se ejecuta en segundo plano, así que puedes seguir trabajando mientras termina, rastrea su progreso y revisa cualquier cosa que se haya omitido a lo largo del camino.", + "LOADING": "Obteniendo importaciones", + "DEFAULT_IMPORT_NAME": "Importar Intercom", + "TABS": { + "IMPORT": "Importar", + "EXPORT": "Exportar" + }, + "TYPES": { + "CONTACTS": "Contactos", + "CONVERSATIONS": "Conversaciones", + "MESSAGES": "Mensajes" + }, + "DRAWER": { + "TITLE": "Nueva importación", + "SOURCE": "Fuente", + "NAME": "Importar nombre", + "NAME_PLACEHOLDER": "Migración de julio de Intercom", + "ACCESS_KEY": "Clave de acceso Intercom", + "ACCESS_KEY_PLACEHOLDER": "Pegue su clave de acceso Intercom", + "DATA_TYPES": "Datos a importar", + "VALIDATING": "Validando clave de acceso...", + "VALID_KEY": "Clave de acceso validada.", + "INVALID_KEY": "No se pudo validar esta clave de acceso.", + "ACTIVE_IMPORT": "Espere a que finalice la importación activa antes de comenzar otra.", + "CANCEL": "Cancelar", + "IMPORT": "Importar" + }, + "EXPORT": { + "TITLE": "Las exportaciones están en camino", + "DESCRIPTION": "Exporta tus contactos y conversaciones desde esta cuenta. Este flujo de trabajo estará disponible pronto.", + "COMING_SOON": "Próximamente" + }, + "TABLE": { + "TITLE": "Importaciones recientes", + "EMPTY": "Aún no hay importaciones", + "EMPTY_DESCRIPTION": "Iniciar una importación para traer su historial de clientes existente a esta cuenta.", + "NEW_IMPORT": "Importar", + "COUNT": "{count} importaciones", + "UNNAMED": "Importar sin título", + "IMPORTED_COUNT": "{count} importados", + "VIEW": "Ver importación", + "NAME": "Nombre", + "TYPE": "Tipo", + "STATUS": "Estado", + "IMPORTED": "Importado", + "CREATED": "Creado", + "ABANDON": "Abandonar" + }, + "DETAIL": { + "BACK": "Volver a las importaciones", + "ERRORS": "Errores", + "SKIP_LOGS": "Saltar registros", + "SOURCE": "Fuente", + "IMPORT_TYPES": "Importar tipos", + "CREATED": "Creado", + "DURATION": "Duración", + "INITIATED_BY": "Iniciado por", + "PROGRESS": "Progreso de importación", + "PROGRESS_WITH_TOTAL": "{imported} de {total} importados", + "PROGRESS_WITHOUT_TOTAL": "{imported} importados", + "PROGRESS_OF_TOTAL": "de {total} importados", + "PROGRESS_IMPORTED": "importado", + "LAST_UPDATED_TOOLTIP": "Última actualización {time}", + "NO_SKIP_LOGS": "No se han grabado registros saltados o fallidos.", + "DOWNLOAD_SKIP_LOGS": "Descargar CSV", + "DOWNLOAD_ERROR_LOGS": "Descargar CSV", + "ALL_SKIP_LOGS": "Todos", + "KIND": "Clase", + "NO_ERRORS": "No se han registrado errores.", + "ERROR_CODE": "Código", + "SOURCE_OBJECT": "Objeto origen", + "MESSAGE": "Mensaje" + }, + "MONITOR": { + "LIVE": "Actualizaciones en vivo cada {seconds}s", + "LAST_UPDATED": "Última actualización {time}", + "REFRESH": "Actualizar", + "REFRESHING": "Actualizando", + "STAGES": { + "unknown": "Esperando actualización", + "queued": "En cola", + "contacts": "Importando contactos", + "conversations": "Importando conversaciones", + "finalizing": "Finalizando importación", + "completed": "Completado", + "completed_with_errors": "Completado con errores", + "failed": "Fallido", + "abandoned": "Abandonado" + } + }, + "ALERTS": { + "IMPORT_STARTED": "La importación de Intercom ha comenzado.", + "IMPORT_ABANDONED": "La importación de Intercom ha sido abandonada.", + "IMPORT_FAILED": "No se pudo iniciar la importación de Intercom." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Modelo de Transcripción de Audio", + "MODEL_DESCRIPTION": "Seleccione el modelo de IA a utilizar para convertir mensajes de audio en transcripciones de texto" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Plan actual", "PLAN_NOTE": "Actualmente está suscrito al plan **{plan}** con **{quantity}** licencias", "SEAT_COUNT": "Número de asientos", - "RENEWS_ON": "Renueva el" + "RENEWS_ON": "Renueva el", + "CURRENCY": "Moneda" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Elige tu moneda de facturación", + "DESCRIPTION": "Selecciona la moneda en la que te gustaría ser facturado. Esto no se puede cambiar una vez creada tu suscripción." + }, + "OPTIONS": { + "USD": "Dólar US (USD)", + "BRL": "Real Brasileño (BRL)" + } }, "VIEW_PRICING": "Ver precios", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Reintentar", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -772,10 +913,14 @@ }, "FAIR_DISTRIBUTION": { "LABEL": "Fair distribution policy", - "DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.", + "DESCRIPTION": "Limita las conversaciones por agente dentro de una ventana de tiempo para evitar sobrecargas. Por defecto es 100 por hora.", "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Saltar conversaciones obsoletas", + "DESCRIPTION": "Saltar conversaciones no asignadas más antiguas que esto. Por defecto es 7 días; borrar para desactivar." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/et/advancedFilters.json b/app/javascript/dashboard/i18n/locale/et/advancedFilters.json index a991cb25b..ad12aeacf 100644 --- a/app/javascript/dashboard/i18n/locale/et/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/et/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Otsi kontakte", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Kontakt", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/et/chatlist.json b/app/javascript/dashboard/i18n/locale/et/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/et/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/et/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/et/companies.json b/app/javascript/dashboard/i18n/locale/et/companies.json index 598dfd5d6..6d813696d 100644 --- a/app/javascript/dashboard/i18n/locale/et/companies.json +++ b/app/javascript/dashboard/i18n/locale/et/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/et/contact.json b/app/javascript/dashboard/i18n/locale/et/contact.json index 4400ac26e..1e1c95887 100644 --- a/app/javascript/dashboard/i18n/locale/et/contact.json +++ b/app/javascript/dashboard/i18n/locale/et/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Atribuudid", "HISTORY": "Ajalugu", "NOTES": "Märkmed", + "MEDIA": "Media", "MERGE": "Ühenda" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/et/conversation.json b/app/javascript/dashboard/i18n/locale/et/conversation.json index 16923b08c..697d0f6f3 100644 --- a/app/javascript/dashboard/i18n/locale/et/conversation.json +++ b/app/javascript/dashboard/i18n/locale/et/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Sellele vestlusele saate vastata ainult mallisõnumi abil, sest", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24-tunnine sõnumiakna piirang", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "See Instagram konto on üle viidud uude Instagrami kanalipostkasti. Kõik uued sõnumid kuvatakse seal. Sa ei saa enam sellest vestlusest sõnumeid saata.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Vastate sellele:", "REMOVE_SELECTION": "Eemalda valik", "DOWNLOAD": "Laadi alla", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Heli avamine ebaõnnestus", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Lohista siia manusena lisamiseks", + "IMAGE_UPLOAD_SUCCESS": "Pilt edukalt üles laaditud", "START_AUDIO_RECORDING": "Alusta heli salvestamist", "STOP_AUDIO_RECORDING": "Peata heli salvestamine", "COPILOT_THINKING": "Copilot mõtleb", @@ -303,6 +306,25 @@ "MESSAGE": "Seda toimingut ei saa tagasi võtta", "DELETE": "Kustuta", "CANCEL": "Tühista" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Tellimus #{id}", diff --git a/app/javascript/dashboard/i18n/locale/et/emoji.json b/app/javascript/dashboard/i18n/locale/et/emoji.json index d5b96f0f9..0135062f8 100644 --- a/app/javascript/dashboard/i18n/locale/et/emoji.json +++ b/app/javascript/dashboard/i18n/locale/et/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Eemalda", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/et/helpCenter.json b/app/javascript/dashboard/i18n/locale/et/helpCenter.json index fd4e98413..786fdceb8 100644 --- a/app/javascript/dashboard/i18n/locale/et/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/et/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Avaldatud", "ARCHIVED": "Arhiveeritud" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Kategooriata" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Kõik keeled" }, + "SEARCH_PLACEHOLDER": "Otsi artikleid...", "NEW_ARTICLE": "Uus artikkel" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Selles kategoorias pole artikleid", "SUBTITLE": "Selles kategoorias olevad artiklid kuvatakse siin" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Uus kategooria", "EDIT_CATEGORY": "Muuda kategooriat", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} kategooria | {n} kategooriat", "BREADCRUMB": { "CATEGORY_LOCALE": "Kategooriad ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Kategooriaid ei leitud", "SUBTITLE": "Kategooriad kuvatakse siin. Kategooria lisamiseks klõpsake nuppu „Uus kategooria“." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} artikkel | {count} artiklit" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Ühtegi keelt pole saadaval | {n} keel | {n} keelt", "NEW_LOCALE_BUTTON_TEXT": "Uus keel", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} artikkel | {count} artiklit", "CATEGORIES_COUNT": "{count} kategooria | {count} kategooriat", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Määra vaikimisi", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Kustuta" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Kategooriata" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Lehe pealkiri" + }, + "HEADER_TEXT": { + "LABEL": "Päise tekst" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Lisa uus keel", "DESCRIPTION": "Vali keel, milles see artikkel kirjutatakse. See lisatakse sinu tõlkelisti ja hiljem saad lisada veel.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Eelvaade", "PUBLISH": "Avalda", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Mustand", "ARCHIVE": "Arhiiv", "BACK_TO_ARTICLES": "Tagasi artiklite juurde" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Rohkem omadusi", "UNCATEGORIZED": "Kategooriata", diff --git a/app/javascript/dashboard/i18n/locale/et/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/et/inboxMgmt.json index 16b86dcae..1ef1f4cd6 100644 --- a/app/javascript/dashboard/i18n/locale/et/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/et/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagramiga ühendamisel tekkis viga, palun proovige uuesti", "ERROR_AUTH": "Instagramiga ühendamisel tekkis viga, palun proovige uuesti", "NEW_INBOX_SUGGESTION": "See Instagrami konto oli varem seotud teise postkastiga ja on nüüd siia üle viidud. Kõik uued sõnumid kuvatakse siin. Vana postkast ei saa selle konto jaoks enam sõnumeid saata ega vastu võtta.", - "DUPLICATE_INBOX_BANNER": "See Instagrami konto viidi üle uue Instagrami kanali postkasti. Sellest postkastist ei saa te enam Instagrami sõnumeid saata ega vastu võtta." + "DUPLICATE_INBOX_BANNER": "See Instagrami konto viidi üle uue Instagrami kanali postkasti. Sellest postkastist ei saa te enam Instagrami sõnumeid saata ega vastu võtta.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Twitteri profiili kanalina lisamiseks peate autentima oma Twitteri profiili, klõpsates 'Logi sisse Twitteriga' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Ärikonto ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API võti", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Sulge", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Lisa", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Telefoninumber", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Jätka", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/et/index.js b/app/javascript/dashboard/i18n/locale/et/index.js index 31486a247..b318934d9 100644 --- a/app/javascript/dashboard/i18n/locale/et/index.js +++ b/app/javascript/dashboard/i18n/locale/et/index.js @@ -31,6 +31,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -76,6 +77,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/et/integrations.json b/app/javascript/dashboard/i18n/locale/et/integrations.json index a65ce7301..31c1673c6 100644 --- a/app/javascript/dashboard/i18n/locale/et/integrations.json +++ b/app/javascript/dashboard/i18n/locale/et/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Tellitud sündmused", "LEARN_MORE": "Lisateave veebikonksude kohta", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Kapten", "HEADER_KNOW_MORE": "Lisateave", + "OVERVIEW": { + "HEADER": "Ülevaade", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "Käesolev kuu", + "LAST_MONTH": "Eelmine kuu" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Dokumendid" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Mänguväljak", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Arveldamine", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Abilised", "SWITCH_ASSISTANT": "Vaheta assistentide vahel", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Sisesta assistendi nimi", "ERROR": "Nimi on kohustuslik" }, - "TEMPERATURE": { - "LABEL": "Vastuse loovus", - "DESCRIPTION": "Reguleeri, kui loomingulised või piiratud peaksid assistendi vastused olema. Madalam väärtus annab täpsemaid ja ennustatavamaid vastuseid, kõrgem väärtus võimaldab loomingulisemaid ja mitmekesisemaid tulemusi." - }, "DESCRIPTION": { "LABEL": "Kirjeldus", "PLACEHOLDER": "Sisesta assistendi kirjeldus", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Dokumendid", "ADD_NEW": "Loo uus dokument", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} valitud", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Seotud KKK-d", - "DESCRIPTION": "Need KKK-d on loodud otse dokumendist." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Pole saadaval", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopeeri", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Sisesta dokumendi URL, et lisada see teadmiste allikana ja vali abiline, kellega see seostada.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Dokumendi kustutamisel tekkis viga, palun proovi uuesti." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Vaata seotud vastuseid", + "VIEW_DETAILS": "Vaata üksikasju", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Kustuta dokument" diff --git a/app/javascript/dashboard/i18n/locale/et/onboarding.json b/app/javascript/dashboard/i18n/locale/et/onboarding.json index d604cd3b1..a670c181a 100644 --- a/app/javascript/dashboard/i18n/locale/et/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/et/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Jätka", + "SKIP": "Jäta vahele", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Valmis", + "HELP_CENTER": "Abi keskus", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} kategooria | {count} kategooriat", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Ühenda", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Hääl", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Ühenda", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/et/report.json b/app/javascript/dashboard/i18n/locale/et/report.json index ceedfa5be..d2afcd6e1 100644 --- a/app/javascript/dashboard/i18n/locale/et/report.json +++ b/app/javascript/dashboard/i18n/locale/et/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Tühjenda filter", "EMPTY_LIST": "Tulemusi ei leitud" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Määramata", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Kuvatakse {start} kuni {end} {total} tulemusest", "PER_PAGE_TEMPLATE": "{size} / lehekülg" diff --git a/app/javascript/dashboard/i18n/locale/et/sessionLimit.json b/app/javascript/dashboard/i18n/locale/et/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/et/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/et/settings.json b/app/javascript/dashboard/i18n/locale/et/settings.json index a4ba6ac6e..a79053f65 100644 --- a/app/javascript/dashboard/i18n/locale/et/settings.json +++ b/app/javascript/dashboard/i18n/locale/et/settings.json @@ -86,9 +86,21 @@ "NOTE": "Halda oma konto täiendavaid turvafunktsioone.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Juurdepääsu token", "NOTE": "Seda tokenit saab kasutada API-põhise integratsiooni loomisel.", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopeeri", "RESET": "Lähtesta", "CONFIRM_RESET": "Oled kindel?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Kõik ettevõtted", "CAPTAIN": "Kapten", "CAPTAIN_ASSISTANTS": "Abilised", + "CAPTAIN_OVERVIEW": "Ülevaade", "CAPTAIN_DOCUMENTS": "Dokumendid", "CAPTAIN_RESPONSES": "KKK", "CAPTAIN_TOOLS": "Tööriistad", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Teavitused", "CANNED_RESPONSES": "Eelmääratud vastused", "INTEGRATIONS": "Integratsioonid", + "DATA": "Data", "PROFILE_SETTINGS": "Profiili seaded", "ACCOUNT_SETTINGS": "Konto seaded", "APPLICATIONS": "Rakendused", @@ -379,11 +393,124 @@ "INFO_TEXT": "Lase süsteemil automaatselt sind võrguühenduseta märkida, kui sa rakendust või juhtpaneeli ei kasuta.", "INFO_SHORT": "Märgi automaatselt võrguühenduseta, kui sa rakendust ei kasuta." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sorteeri", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Loe dokumentatsiooni", "SECURITY": "Turvalisus", "CAPTAIN_AI": "Kapten", "CONVERSATION_WORKFLOW": "Vestluse töövoog" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Impordi", + "EXPORT": "Ekspordi" + }, + "TYPES": { + "CONTACTS": "Kontaktid", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Sõnumid" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Impordi" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Varsti saadaval" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Impordi", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Loodud", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Loodud", + "DURATION": "Kestus", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Sõnum" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Ebaõnnestus", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Seadista oma AI mudelid ja funktsioonid Captainile. Captain kasutab krediidipõhist arveldamist, iga Captaini tegevuse eest valitud mudeli alusel võetakse krediite.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Luba või keela AI-põhised funktsioonid.", "AUDIO_TRANSCRIPTION": { "TITLE": "Heli transkriptsioon", - "DESCRIPTION": "Muutke automaatselt hääl- ja kõnesalvestused otsitavateks tekstikirjeldusteks." + "DESCRIPTION": "Muutke automaatselt hääl- ja kõnesalvestused otsitavateks tekstikirjeldusteks.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Abi keskuse otsingu indekseerimine", @@ -439,7 +568,18 @@ "TITLE": "Praegune plaan", "PLAN_NOTE": "Oled hetkel tellinud **{plan}** plaani **{quantity}** litsentsiga", "SEAT_COUNT": "Istmete arv", - "RENEWS_ON": "Uueneb kuupäeval" + "RENEWS_ON": "Uueneb kuupäeval", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Vaata hindu", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Osta krediite", "LOADING": "Valikute laadimine...", "FETCH_ERROR": "Krediidivalikute laadimine ebaõnnestus. Palun proovi uuesti.", + "RETRY": "Retry", "PURCHASE_ERROR": "Ostu töötlemine ebaõnnestus. Palun proovi uuesti.", "PURCHASE_SUCCESS": "Kontole lisati edukalt {credits} krediiti", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Määra maksimaalne", "DURATION": "Vestlused agendi kohta iga" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Lisatud postkastid", "DESCRIPTION": "Lisa postkastid, millele see reegel kehtib.", diff --git a/app/javascript/dashboard/i18n/locale/fa/advancedFilters.json b/app/javascript/dashboard/i18n/locale/fa/advancedFilters.json index c46bbac70..46c1dc367 100644 --- a/app/javascript/dashboard/i18n/locale/fa/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/fa/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "یا" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "جستجوی مخاطبین", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "مساوی با", "not_equal_to": "مساوی نیست با", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "نام مسئول", "INBOX_NAME": "نام صندوق ورودی", "TEAM_NAME": "نام تیم", + "CONTACT": "مخاطب", "CONVERSATION_IDENTIFIER": "شناسه گفتگو", "CAMPAIGN_NAME": "نام کمپین", "LABELS": "برچسب‌ها", diff --git a/app/javascript/dashboard/i18n/locale/fa/chatlist.json b/app/javascript/dashboard/i18n/locale/fa/chatlist.json index b590b604c..8e72d5153 100644 --- a/app/javascript/dashboard/i18n/locale/fa/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/fa/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/fa/companies.json b/app/javascript/dashboard/i18n/locale/fa/companies.json index 91b7f1fad..589b42872 100644 --- a/app/javascript/dashboard/i18n/locale/fa/companies.json +++ b/app/javascript/dashboard/i18n/locale/fa/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/fa/contact.json b/app/javascript/dashboard/i18n/locale/fa/contact.json index 57e6c5488..5bd274afc 100644 --- a/app/javascript/dashboard/i18n/locale/fa/contact.json +++ b/app/javascript/dashboard/i18n/locale/fa/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "ویژگی ها", "HISTORY": "History", "NOTES": "یادداشت‌ها", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/fa/conversation.json b/app/javascript/dashboard/i18n/locale/fa/conversation.json index b965cf4dd..f69b84dbe 100644 --- a/app/javascript/dashboard/i18n/locale/fa/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fa/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "شما فقط می توانید با استفاده از یک پیام الگو به این مکالمه پاسخ دهید", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "محدودیت ۲۴ ساعته پنجره پیام", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "شما در حال پاسخ دادن به:", "REMOVE_SELECTION": "حذف انتخاب‌شده‌ها", "DOWNLOAD": "دانلود", @@ -114,7 +116,7 @@ "WHATSAPP_CALL_FAILED": "Could not start the WhatsApp call.", "VOICE_CALL": "Start call", "VOICE_CALL_FAILED": "Could not start the call.", - "WHATSAPP_CALL_PERMISSION_REQUESTED": "Sent a call permission request to the contact. Try again once they accept.", + "WHATSAPP_CALL_PERMISSION_REQUESTED": "درخواست اجازه تماس برای مخاطب ارسال شد. پس از پذیرش، دوباره امتحان کنید.", "WHATSAPP_CALL_PERMISSION_PENDING": "Call permission request already sent recently. Try again once the contact accepts.", "SLA_STATUS": { "FRT": "FRT {status}", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "صدا را نمی‌توان باز کند", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "برای ضمیمه کردن درگ و درآپ کنید", + "IMAGE_UPLOAD_SUCCESS": "تصویر با موفقیت آپلود شد", "START_AUDIO_RECORDING": "در حال شروع ضبط صدا", "STOP_AUDIO_RECORDING": "در حال توقف ضبط صدا", "COPILOT_THINKING": "Copilot در حال فکر کردن است", @@ -303,6 +306,25 @@ "MESSAGE": "شما نمی توانید این عمل را لغو کنید", "DELETE": "حذف", "CANCEL": "انصراف" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "توضیحات", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "مشاهده همه", "SHOW_LESS": "نمایش کمتر", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/fa/emoji.json b/app/javascript/dashboard/i18n/locale/fa/emoji.json index ec186a2e0..743eca628 100644 --- a/app/javascript/dashboard/i18n/locale/fa/emoji.json +++ b/app/javascript/dashboard/i18n/locale/fa/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "جستجوی اموجی", "NOT_FOUND": "هیچ اموجی با جستجوی شما مطابقت ندارد", "REMOVE": "حذف" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "هیچ اموجی با جستجوی شما مطابقت ندارد", + "NO_ICON": "No icons match your search", + "REMOVE": "حذف", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/fa/helpCenter.json b/app/javascript/dashboard/i18n/locale/fa/helpCenter.json index e2ce47b87..791296462 100644 --- a/app/javascript/dashboard/i18n/locale/fa/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/fa/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "منتشر شد", "ARCHIVED": "بایگانی شد" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "جستجو مقالات...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "حذف", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "دسته‌بندی جدید", "EDIT_CATEGORY": "ویرایش دسته‌بندی", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "هیچ دسته‌بندی‌ای یافت نشد", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "حذف" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "دسته بندی نشده" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "نام" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "یک محل جدید اضافه کنید", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "پیش‌نمایش", "PUBLISH": "انتشار", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "پیش‌نویس", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "عنوان" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "دسته بندی نشده", diff --git a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json index 479e8a4b8..414c7376e 100644 --- a/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fa/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "برای اضافه کردن امکان گفتگو از صفحه پروفایل توییترتان، لازم است با زدن دکمه `ورود با توییتر` پروفایل توییتر خود را شناسایی کنید' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "شناسه حساب تجاری", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "بستن", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "افزودن", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "صندوق ورودی", + "PHONE_NUMBER": "شماره تلفن", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "بازگشت", + "CANCEL": "انصراف", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/fa/index.js b/app/javascript/dashboard/i18n/locale/fa/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/fa/index.js +++ b/app/javascript/dashboard/i18n/locale/fa/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/fa/integrations.json b/app/javascript/dashboard/i18n/locale/fa/integrations.json index d81daa580..a37b3c950 100644 --- a/app/javascript/dashboard/i18n/locale/fa/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fa/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "رویدادهای مشترک شده", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "حالا ارتقا دهید", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "اطلاعات بیشتر", + "OVERVIEW": { + "HEADER": "بررسی اجمالی", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "نادیده بگیر" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "نادیده بگیر" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "زمین بازی", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "صورتحساب", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "دستیارها", "SWITCH_ASSISTANT": "جابه‌جایی بین دستیارها", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "توضیحات", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "خارج از دسترس", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "کپی", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "مشاهده جزئیات", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/fa/onboarding.json b/app/javascript/dashboard/i18n/locale/fa/onboarding.json index 0d82fc988..9bf3e4471 100644 --- a/app/javascript/dashboard/i18n/locale/fa/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/fa/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "مشکلی پیش آمد. لطفا دوباره تلاش کنید.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "مرکز راهنما", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "اتصال", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "ایمیل", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "مشاهده همه", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "اتصال", + "BACK": "بازگشت", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/fa/report.json b/app/javascript/dashboard/i18n/locale/fa/report.json index 7dcb86b77..8a8503a20 100644 --- a/app/javascript/dashboard/i18n/locale/fa/report.json +++ b/app/javascript/dashboard/i18n/locale/fa/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "پاک کردن فیلتر", "EMPTY_LIST": "نتیجه‌ای یافت نشد" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "تخصیص داده نشده", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/fa/sessionLimit.json b/app/javascript/dashboard/i18n/locale/fa/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/fa/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/fa/settings.json b/app/javascript/dashboard/i18n/locale/fa/settings.json index 49ec42840..45e8b1184 100644 --- a/app/javascript/dashboard/i18n/locale/fa/settings.json +++ b/app/javascript/dashboard/i18n/locale/fa/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "توکن دسترسی", "NOTE": "از این توکن برای دسترسی از طریق API استفاده می‌شود", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "کپی", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "بررسی اجمالی", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "اعلان ها", "CANNED_RESPONSES": "پاسخ‌های آماده", "INTEGRATIONS": "برنامه‌های تلفیق شده", + "DATA": "Data", "PROFILE_SETTINGS": "تنظیمات پروفایل", "ACCOUNT_SETTINGS": "تنظیمات حساب", "APPLICATIONS": "برنامه های کاربردی", @@ -379,11 +393,124 @@ "INFO_TEXT": "هنگامی که از برنامه یا پیشخوان استفاده نمی‌کنید، به سیستم اجازه دهید به طور خودکار شما را به صورت آفلاین علامت گذاری کند.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "ترتیب", + "SORT_BY": "مرتب‌سازی براساس", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "اسناد را بخوانید", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "تزریق کردن", + "EXPORT": "خروجی گرفتن" + }, + "TYPES": { + "CONTACTS": "مخاطبین", + "CONVERSATIONS": "گفتگوها", + "MESSAGES": "پیام‌ها" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "انصراف", + "IMPORT": "تزریق کردن" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "تزریق کردن", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "نام", + "TYPE": "نوع", + "STATUS": "وضعیت", + "IMPORTED": "Imported", + "CREATED": "ایجاد شده", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "ایجاد شده", + "DURATION": "مدت زمان", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "همه", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "پیام" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "تازه کردن", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "تکمیل شد", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "طرح فعلی", "PLAN_NOTE": "شما در حال حاضر مشترک طرح **{plan}** با مجوز **{quantity}** هستید", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/fi/advancedFilters.json b/app/javascript/dashboard/i18n/locale/fi/advancedFilters.json index f8d4e2f29..dfbfac3f9 100644 --- a/app/javascript/dashboard/i18n/locale/fi/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/fi/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Tunnisteet", diff --git a/app/javascript/dashboard/i18n/locale/fi/chatlist.json b/app/javascript/dashboard/i18n/locale/fi/chatlist.json index 3ba1e9bf0..a0f2be866 100644 --- a/app/javascript/dashboard/i18n/locale/fi/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/fi/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/fi/companies.json b/app/javascript/dashboard/i18n/locale/fi/companies.json index dbdf39f8b..2bd202e54 100644 --- a/app/javascript/dashboard/i18n/locale/fi/companies.json +++ b/app/javascript/dashboard/i18n/locale/fi/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/fi/contact.json b/app/javascript/dashboard/i18n/locale/fi/contact.json index ac8d32016..8c187d642 100644 --- a/app/javascript/dashboard/i18n/locale/fi/contact.json +++ b/app/javascript/dashboard/i18n/locale/fi/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/fi/conversation.json b/app/javascript/dashboard/i18n/locale/fi/conversation.json index 8dcc36570..902eb3a69 100644 --- a/app/javascript/dashboard/i18n/locale/fi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fi/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24h vastausikkuna", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Olet vastaamassa:", "REMOVE_SELECTION": "Poista valinnat", "DOWNLOAD": "Lataa", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot ajattelee", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Poista", "CANCEL": "Peruuta" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Kuvaus", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/fi/emoji.json b/app/javascript/dashboard/i18n/locale/fi/emoji.json index 813862946..82810fb42 100644 --- a/app/javascript/dashboard/i18n/locale/fi/emoji.json +++ b/app/javascript/dashboard/i18n/locale/fi/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Poista" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Poista", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/fi/helpCenter.json b/app/javascript/dashboard/i18n/locale/fi/helpCenter.json index 3da9cffb1..0d9d02c82 100644 --- a/app/javascript/dashboard/i18n/locale/fi/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/fi/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Poista", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Poista" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nimi" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json index acd660eb0..3355af766 100644 --- a/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fi/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Lisätäksesi twitter-profiilin kanavaksesi, sinun tulee autentikoida twitter-tilisi klikkaamalla \"Kirjaudu sisään Twitterillä\" ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Sulje", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Puhelinnumero", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Takaisin", + "CANCEL": "Peruuta", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/fi/index.js b/app/javascript/dashboard/i18n/locale/fi/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/fi/index.js +++ b/app/javascript/dashboard/i18n/locale/fi/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/fi/integrations.json b/app/javascript/dashboard/i18n/locale/fi/integrations.json index b990f68e1..6fb3dc367 100644 --- a/app/javascript/dashboard/i18n/locale/fi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fi/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Lisätietoja", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Leikkikenttä", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistentit", "SWITCH_ASSISTANT": "Vaihda assistenttien välillä", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Kuvaus", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopioi", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/fi/onboarding.json b/app/javascript/dashboard/i18n/locale/fi/onboarding.json index af744d505..aeb94639f 100644 --- a/app/javascript/dashboard/i18n/locale/fi/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/fi/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Yhdistä", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Sähköposti", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Yhdistä", + "BACK": "Takaisin", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/fi/report.json b/app/javascript/dashboard/i18n/locale/fi/report.json index 107589f21..53c380db3 100644 --- a/app/javascript/dashboard/i18n/locale/fi/report.json +++ b/app/javascript/dashboard/i18n/locale/fi/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Tuloksia ei löytynyt" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Osoittamaton", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/fi/sessionLimit.json b/app/javascript/dashboard/i18n/locale/fi/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/fi/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/fi/settings.json b/app/javascript/dashboard/i18n/locale/fi/settings.json index 5c70b7459..3bb6541e0 100644 --- a/app/javascript/dashboard/i18n/locale/fi/settings.json +++ b/app/javascript/dashboard/i18n/locale/fi/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Access Token", "NOTE": "Tätä tunnusta voidaan käyttää, jos olet rakentamassa API-pohjaista integraatiota", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopioi", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Ilmoitukset", "CANNED_RESPONSES": "Tallennetut vastaukset", "INTEGRATIONS": "Integraatiot", + "DATA": "Data", "PROFILE_SETTINGS": "Profiilin asetukset", "ACCOUNT_SETTINGS": "Tilin asetukset", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Yhteystiedot", + "CONVERSATIONS": "Keskustelut", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Peruuta", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nimi", + "TYPE": "Type", + "STATUS": "Tila", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Kaikki", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Viesti" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/fr/advancedFilters.json b/app/javascript/dashboard/i18n/locale/fr/advancedFilters.json index 55455689b..71975648e 100644 --- a/app/javascript/dashboard/i18n/locale/fr/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/fr/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OU" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Égal à", "not_equal_to": "Pas égal à", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Nom du responsable", "INBOX_NAME": "Nom de la boîte de réception", "TEAM_NAME": "Nom de l'équipe", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Identifiant de la conversation", "CAMPAIGN_NAME": "Nom de la campagne", "LABELS": "Étiquettes", diff --git a/app/javascript/dashboard/i18n/locale/fr/chatlist.json b/app/javascript/dashboard/i18n/locale/fr/chatlist.json index 54c508fcf..5fc81f8fd 100644 --- a/app/javascript/dashboard/i18n/locale/fr/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/fr/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/fr/companies.json b/app/javascript/dashboard/i18n/locale/fr/companies.json index e5a8472b4..522aabed2 100644 --- a/app/javascript/dashboard/i18n/locale/fr/companies.json +++ b/app/javascript/dashboard/i18n/locale/fr/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/fr/contact.json b/app/javascript/dashboard/i18n/locale/fr/contact.json index cefa7d0af..875be1393 100644 --- a/app/javascript/dashboard/i18n/locale/fr/contact.json +++ b/app/javascript/dashboard/i18n/locale/fr/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributs", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Média", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/fr/conversation.json b/app/javascript/dashboard/i18n/locale/fr/conversation.json index 8a5df6eb5..d340a7c75 100644 --- a/app/javascript/dashboard/i18n/locale/fr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/fr/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Vous pouvez seulement répondre à cette conversation en utilisant un modèle de message en raison de", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restriction de fenêtre de message de 24 heures", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Ce compte Instagram a été migré vers la nouvelle boîte de réception du canal Instagram. Tous les nouveaux messages y apparaîtront. Vous ne pourrez plus envoyer de messages depuis cette conversation.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Vous répondez à :", "REMOVE_SELECTION": "Supprimer la sélection", "DOWNLOAD": "Télécharger", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Impossible d'ouvrir l'audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Glissez et déposez ici pour lier", + "IMAGE_UPLOAD_SUCCESS": "Image téléchargée avec succès", "START_AUDIO_RECORDING": "Démarrer l'enregistrement audio", "STOP_AUDIO_RECORDING": "Arrêter l'enregistrement audio", "COPILOT_THINKING": "Copilot réfléchit", @@ -303,6 +306,25 @@ "MESSAGE": "Vous ne pouvez pas annuler cette action", "DELETE": "Supprimer", "CANCEL": "Annuler" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Tout afficher", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/fr/emoji.json b/app/javascript/dashboard/i18n/locale/fr/emoji.json index 4917bf08f..12c620211 100644 --- a/app/javascript/dashboard/i18n/locale/fr/emoji.json +++ b/app/javascript/dashboard/i18n/locale/fr/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Rechercher des émojis", "NOT_FOUND": "Aucun émoji ne correspond à votre recherche", "REMOVE": "Supprimer" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Aucun émoji ne correspond à votre recherche", + "NO_ICON": "No icons match your search", + "REMOVE": "Supprimer", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/fr/helpCenter.json b/app/javascript/dashboard/i18n/locale/fr/helpCenter.json index 80eac8126..33d251306 100644 --- a/app/javascript/dashboard/i18n/locale/fr/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/fr/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publié", "ARCHIVED": "Archivé" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Rechercher des articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Supprimer", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nouvelle catégorie", "EDIT_CATEGORY": "Modifier la catégorie", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Aucune catégorie trouvée", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Supprimer" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Non catégorisé" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nom" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Ajouter une nouvelle langue", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Aperçu", "PUBLISH": "Publier", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Brouillon", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Titre" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Non catégorisé", diff --git a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json index f90a67fa8..b8241b564 100644 --- a/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/fr/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Une erreur est survenue lors de la connexion à Instagram, veuillez réessayer", "ERROR_AUTH": "Une erreur est survenue lors de la connexion à Instagram, veuillez réessayer", "NEW_INBOX_SUGGESTION": "Ce compte Instagram était précédemment lié à une autre boîte de réception et a maintenant été migré ici. Tous les nouveaux messages apparaîtront ici. L'ancienne boîte de réception ne pourra plus envoyer ni recevoir de messages pour ce compte.", - "DUPLICATE_INBOX_BANNER": "Ce compte Instagram a été migré vers la nouvelle boîte de réception du canal Instagram. Vous ne pourrez plus envoyer ni recevoir de messages Instagram depuis cette boîte de réception." + "DUPLICATE_INBOX_BANNER": "Ce compte Instagram a été migré vers la nouvelle boîte de réception du canal Instagram. Vous ne pourrez plus envoyer ni recevoir de messages Instagram depuis cette boîte de réception.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Pour ajouter votre profil Twitter en tant que canal, vous devez lier votre profil Twitter en cliquant sur 'Se connecter avec Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Identifiant du compte professionnel", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Clé de l'API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Fermer", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Ajouter", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Boîte de réception", + "PHONE_NUMBER": "Numéro de téléphone", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Précédent", + "CANCEL": "Annuler", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/fr/index.js b/app/javascript/dashboard/i18n/locale/fr/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/fr/index.js +++ b/app/javascript/dashboard/i18n/locale/fr/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/fr/integrations.json b/app/javascript/dashboard/i18n/locale/fr/integrations.json index 557365f36..2876782d7 100644 --- a/app/javascript/dashboard/i18n/locale/fr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fr/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Événements suivis", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "En savoir plus", + "OVERVIEW": { + "HEADER": "Vue d'ensemble", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Rejeter" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Rejeter" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Terrain de jeu", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Facturation", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistants IA", "SWITCH_ASSISTANT": "Changer d’assistant", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Entrez le nom de l'assistant", "ERROR": "Le nom est requis" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Description", "PLACEHOLDER": "Entrez la description de l'assistant", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Non disponible", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copier", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Voir les détails", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/fr/onboarding.json b/app/javascript/dashboard/i18n/locale/fr/onboarding.json index 3aa5f93e9..49e986a51 100644 --- a/app/javascript/dashboard/i18n/locale/fr/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/fr/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Les informations ont été enregistrées avec succès", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Une erreur s'est produite. Veuillez réessayer.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Centre d'aide", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connecter", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Courriel", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Tout afficher", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connecter", + "BACK": "Précédent", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/fr/report.json b/app/javascript/dashboard/i18n/locale/fr/report.json index 8d610113d..d5d0bc6e4 100644 --- a/app/javascript/dashboard/i18n/locale/fr/report.json +++ b/app/javascript/dashboard/i18n/locale/fr/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Aucun résultat trouvé" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Non assigné", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/fr/sessionLimit.json b/app/javascript/dashboard/i18n/locale/fr/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/fr/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/fr/settings.json b/app/javascript/dashboard/i18n/locale/fr/settings.json index 5629b0351..20928320a 100644 --- a/app/javascript/dashboard/i18n/locale/fr/settings.json +++ b/app/javascript/dashboard/i18n/locale/fr/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Jeton d'accès", "NOTE": "Ce jeton peut être utilisé si vous construisez une intégration basée sur l'API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copier", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Vue d'ensemble", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Outils", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifications", "CANNED_RESPONSES": "Réponses standardisées", "INTEGRATIONS": "Intégrations", + "DATA": "Data", "PROFILE_SETTINGS": "Paramètres de profil", "ACCOUNT_SETTINGS": "Paramètres du compte", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Laissez le système vous passer automatiquement hors ligne lorsque vous n'utilisez pas l'application ou le tableau de bord.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Trier", + "SORT_BY": "Trier par", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Lire la documentation", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importer", + "EXPORT": "Exporter" + }, + "TYPES": { + "CONTACTS": "Contacts", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Annuler", + "IMPORT": "Importer" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importer", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nom", + "TYPE": "Type", + "STATUS": "État", + "IMPORTED": "Imported", + "CREATED": "Créé", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Créé", + "DURATION": "Durée", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Tous", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Actualiser", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Terminé", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Abonnement actuel", "PLAN_NOTE": "Vous êtes actuellement abonné à l'offre **{plan}** avec **{quantity}** licences", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/he/advancedFilters.json b/app/javascript/dashboard/i18n/locale/he/advancedFilters.json index 8574134f9..f594c96c5 100644 --- a/app/javascript/dashboard/i18n/locale/he/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/he/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "או" }, "INPUT_PLACEHOLDER": "הכנס ערך", + "CONTACT_SEARCH_PLACEHOLDER": "חפש אנשי קשר", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "שווה ל", "not_equal_to": "לא שווה ל", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "שם מוקצה", "INBOX_NAME": "שם תיבת דואר נכנס", "TEAM_NAME": "שם צוות", + "CONTACT": "איש קשר", "CONVERSATION_IDENTIFIER": "מזהה שיחה", "CAMPAIGN_NAME": "שם קמפיין", "LABELS": "תוויות", diff --git a/app/javascript/dashboard/i18n/locale/he/chatlist.json b/app/javascript/dashboard/i18n/locale/he/chatlist.json index 7eb97523e..4b01f5d63 100644 --- a/app/javascript/dashboard/i18n/locale/he/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/he/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/he/companies.json b/app/javascript/dashboard/i18n/locale/he/companies.json index 902286c76..552495949 100644 --- a/app/javascript/dashboard/i18n/locale/he/companies.json +++ b/app/javascript/dashboard/i18n/locale/he/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/he/contact.json b/app/javascript/dashboard/i18n/locale/he/contact.json index 4203d154b..90c4df03e 100644 --- a/app/javascript/dashboard/i18n/locale/he/contact.json +++ b/app/javascript/dashboard/i18n/locale/he/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "מאפיינים", "HISTORY": "היסטוריה", "NOTES": "הערות", + "MEDIA": "מדיה", "MERGE": "מזג" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/he/conversation.json b/app/javascript/dashboard/i18n/locale/he/conversation.json index 0ce06cd72..6208100c5 100644 --- a/app/javascript/dashboard/i18n/locale/he/conversation.json +++ b/app/javascript/dashboard/i18n/locale/he/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "אתה יכול להשיב לשיחה זו רק באמצעות הודעת תבנית בשל", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "הגבלת חלון הודעות של 24 שעות", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "אתה משיב ל:", "REMOVE_SELECTION": "הסר בחירה", "DOWNLOAD": "הורד", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "לא יכול לפתוח אודיו", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "גרור ושחרר כאן להוספת קובץ מצורף", + "IMAGE_UPLOAD_SUCCESS": "התמונה הועלתה בהצלחה", "START_AUDIO_RECORDING": "התחל הקלטת אודיו", "STOP_AUDIO_RECORDING": "עצור הקלטת אודיו", "COPILOT_THINKING": "Copilot חושב", @@ -303,6 +306,25 @@ "MESSAGE": "לא ניתן לבטל פעולה זו", "DELETE": "מחק", "CANCEL": "ביטול" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "תיאור", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "הצג הכל", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "הזמנה #{id}", diff --git a/app/javascript/dashboard/i18n/locale/he/emoji.json b/app/javascript/dashboard/i18n/locale/he/emoji.json index da67df544..94da2a3e6 100644 --- a/app/javascript/dashboard/i18n/locale/he/emoji.json +++ b/app/javascript/dashboard/i18n/locale/he/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "חפש אימוג'י", "NOT_FOUND": "אין אמוג'י שתואם את החיפוש שלך", "REMOVE": "הסר" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "אין אמוג'י שתואם את החיפוש שלך", + "NO_ICON": "No icons match your search", + "REMOVE": "הסר", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/he/helpCenter.json b/app/javascript/dashboard/i18n/locale/he/helpCenter.json index e1e793f92..0aad044f5 100644 --- a/app/javascript/dashboard/i18n/locale/he/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/he/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "יצא לאור", "ARCHIVED": "בארכיון" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "ללא קטגוריה" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "כל האזורים" }, + "SEARCH_PLACEHOLDER": "חפש מאמרים...", "NEW_ARTICLE": "מאמר חדש" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "אין מאמרים בקטגוריה זו", "SUBTITLE": "מאמרים בקטגוריה זו יופיעו כאן" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "מחק", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "קטגוריה חדשה", "EDIT_CATEGORY": "ערוך קטגוריה", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} קטגוריה | {n} קטגוריות", "BREADCRUMB": { "CATEGORY_LOCALE": "קטגוריות ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "לא נמצאו קטגוריות", "SUBTITLE": "קטגוריות יופיעו כאן. תוכל להוסיף קטגוריה על ידי לחיצה על כפתור 'קטגוריה חדשה'." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} מאמר | {count} מאמרים" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "אין אזורים זמינים | {n} אזור | {n} אזורים", "NEW_LOCALE_BUTTON_TEXT": "אזור חדש", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} מאמר | {count} מאמרים", "CATEGORIES_COUNT": "{count} קטגוריה | {count} קטגוריות", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "הפוך לברירת מחדל", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "מחק" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "חיפוש...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "ללא קטגוריה" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "שם" + }, + "PAGE_TITLE": { + "LABEL": "כותרת עמוד" + }, + "HEADER_TEXT": { + "LABEL": "טקסט כותרת עליונה" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "הוסף מקום חדש", "DESCRIPTION": "בחר את השפה שבה מאמר זה ייכתב. זו תתווסף לרשימת התרגומים שלך, ותוכל להוסיף נוספים מאוחר יותר.", @@ -730,10 +791,30 @@ }, "PREVIEW": "תצוגה מקדימה", "PUBLISH": "פרסם", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "טיוטה", "ARCHIVE": "ארכיון", "BACK_TO_ARTICLES": "חזור למאמרים" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "כותרת" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "מאפיינים נוספים", "UNCATEGORIZED": "ללא קטגוריה", diff --git a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json index 64e5f9a6c..98e43e509 100644 --- a/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/he/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "אירעה שגיאה בחיבור לאינסטגרם, אנא נסה שוב", "ERROR_AUTH": "אירעה שגיאה בחיבור לאינסטגרם, אנא נסה שוב", "NEW_INBOX_SUGGESTION": "חשבון אינסטגרם זה היה מקושר בעבר לתיבת דואר נכנס אחרת והועבר כעת לכאן. כל ההודעות החדשות יופיעו כאן. תיבת הדואר הנכנס הישנה לא תוכל יותר לשלוח או לקבל הודעות עבור חשבון זה.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "כדי להוסיף את פרופיל הטוויטר שלך כערוץ, עליך לאמת את פרופיל הטוויטר שלך על ידי לחיצה על 'היכנס באמצעות טוויטר' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "תיבת דואר נכנס זו מחוברת באמצעות הרשמה משובצת של WhatsApp.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "תוכל להגדיר מחדש תיבת דואר נכנס זו כדי לעדכן את הגדרות WhatsApp העסקי שלך.", "WHATSAPP_RECONFIGURE_BUTTON": "הגדר מחדש", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "מזהה חשבון עסקי", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "מפתח API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "התחבר ל-WhatsApp עסקי", "WHATSAPP_CONNECT_SUBHEADER": "שדרג להרשמה משובצת של WhatsApp לניהול קל יותר.", "WHATSAPP_CONNECT_DESCRIPTION": "חבר תיבת דואר נכנס זו ל-WhatsApp עסקי עבור תכונות משופרות וניהול קל יותר.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "סנכרן תבניות הודעות מ-WhatsApp באופן ידני כדי לעדכן את התבניות הזמינות שלך.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "סנכרן תבניות", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "סנכרון התבניות הופעל בהצלחה. העדכון עשוי להימשך כמה דקות.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "סגור", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "מספר טלפון לתצוגה", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "הוסף", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "תיבת הדואר הנכנס", + "PHONE_NUMBER": "מספר טלפון", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "חזור", + "CANCEL": "ביטול", + "CONTINUE": "המשך", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/he/index.js b/app/javascript/dashboard/i18n/locale/he/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/he/index.js +++ b/app/javascript/dashboard/i18n/locale/he/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/he/integrations.json b/app/javascript/dashboard/i18n/locale/he/integrations.json index 420882e16..83b3b7b79 100644 --- a/app/javascript/dashboard/i18n/locale/he/integrations.json +++ b/app/javascript/dashboard/i18n/locale/he/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "אירועים מנויים", "LEARN_MORE": "למד עוד על Webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "שדרג עכשיו", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "קפטן", "HEADER_KNOW_MORE": "דע יותר", + "OVERVIEW": { + "HEADER": "סקירה כללית", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "סגור" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "סגור" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "החודש", + "LAST_MONTH": "חודש שעבר" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "טען עוד", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "שאלות נפוצות ממתינות", + "DOCUMENTS": "מסמכים" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "מגרש משחקים", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "חיוב", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "עוזרים", "SWITCH_ASSISTANT": "החלף בין עוזרים", @@ -494,10 +577,6 @@ "PLACEHOLDER": "הזן שם עוזר", "ERROR": "השם נדרש" }, - "TEMPERATURE": { - "LABEL": "טמפרטורת תגובה", - "DESCRIPTION": "התאם עד כמה התגובות של העוזר צריכות להיות יצירתיות או מגבילות. ערכים נמוכים יותר מייצרים תגובות ממוקדות ודטרמיניסטיות יותר, בעוד שערכים גבוהים יותר מאפשרים תוצאות יצירתיות ומגוונות יותר." - }, "DESCRIPTION": { "LABEL": "תיאור", "PLACEHOLDER": "הזן תיאור עוזר", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "מסמכים", "ADD_NEW": "צור מסמך חדש", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} נבחרו", "SELECT_ALL": "בחר הכל ({count})", "UNSELECT_ALL": "בטל בחירת הכל ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "שאלות נפוצות קשורות", - "DESCRIPTION": "שאלות נפוצות אלה נוצרו ישירות מהמסמך." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "לא זמין", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "עותק", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "הזן את כתובת ה-URL של המסמך כדי להוסיף אותו כמקור ידע ובחר את העוזר לשייך אליו.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "אירעה שגיאה במחיקת המסמך, אנא נסה שוב." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "הצג תגובות קשורות", + "VIEW_DETAILS": "הצג פרטים", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "מחק מסמך" diff --git a/app/javascript/dashboard/i18n/locale/he/onboarding.json b/app/javascript/dashboard/i18n/locale/he/onboarding.json index c04751001..a43b082cc 100644 --- a/app/javascript/dashboard/i18n/locale/he/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/he/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "המשך", + "SKIP": "Skip", + "ERROR": "משהו השתבש. אנא נסה שוב.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "מוכן", + "HELP_CENTER": "מרכז עזרה", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} קטגוריה | {count} קטגוריות", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "התחבר", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "אימייל", + "MORE_CHANNELS_VOICE": "קול", + "VIEW_ALL": "הצג הכל", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "התחבר", + "BACK": "חזור", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/he/report.json b/app/javascript/dashboard/i18n/locale/he/report.json index a80c5bee4..d9552c48d 100644 --- a/app/javascript/dashboard/i18n/locale/he/report.json +++ b/app/javascript/dashboard/i18n/locale/he/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "נקה מסנן", "EMPTY_LIST": "לא נמצאו תוצאות" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "טען עוד", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "לא הוקצתה", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "מציג {start} עד {end} מתוך {total} תוצאות", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/he/sessionLimit.json b/app/javascript/dashboard/i18n/locale/he/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/he/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/he/settings.json b/app/javascript/dashboard/i18n/locale/he/settings.json index 8aa405c49..5050e245c 100644 --- a/app/javascript/dashboard/i18n/locale/he/settings.json +++ b/app/javascript/dashboard/i18n/locale/he/settings.json @@ -86,9 +86,21 @@ "NOTE": "נהל תכונות אבטחה נוספות עבור חשבונך.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "אסימון", "NOTE": "משמש לחיבורי API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "עותק", "RESET": "איפוס", "CONFIRM_RESET": "האם אתה בטוח?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "קפטן", "CAPTAIN_ASSISTANTS": "עוזרים", + "CAPTAIN_OVERVIEW": "סקירה כללית", "CAPTAIN_DOCUMENTS": "מסמכים", "CAPTAIN_RESPONSES": "שאלות נפוצות", "CAPTAIN_TOOLS": "כלים", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "התראות", "CANNED_RESPONSES": "תגובות מוכנות", "INTEGRATIONS": "אינטגרציות", + "DATA": "Data", "PROFILE_SETTINGS": "הגדרות פרופיל", "ACCOUNT_SETTINGS": "הגדרות חשבון", "APPLICATIONS": "יישומים", @@ -379,11 +393,124 @@ "INFO_TEXT": "תן למערכת לסמן אותך באופן אוטומטי במצב לא מקוון כשאתה לא משתמש באפליקציה או בלוח המחוונים.", "INFO_SHORT": "סמן אוטומטית כלא מקוון כאשר אינך משתמש באפליקציה." }, + "SORT_TOOLTIP": "מיין", + "SORT_BY": "מיין לפי", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "קרא מסמכים", "SECURITY": "אבטחה", "CAPTAIN_AI": "קפטן", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "ייבוא", + "EXPORT": "ייצא" + }, + "TYPES": { + "CONTACTS": "איש קשר", + "CONVERSATIONS": "שיחות", + "MESSAGES": "הודעות" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "ביטול", + "IMPORT": "ייבוא" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "ייבוא", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "שם", + "TYPE": "סוג", + "STATUS": "מצב", + "IMPORTED": "Imported", + "CREATED": "נוצר", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "נוצר", + "DURATION": "משך", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "הכל", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "הודעה" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "רענן", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "הושלם", + "completed_with_errors": "Completed with errors", + "failed": "נכשל", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "תוכנית נוכחית", "PLAN_NOTE": "אתה רשום כעת לתוכנית **{plan}** עם רישיונות **{quantity}**", "SEAT_COUNT": "מספר מושבים", - "RENEWS_ON": "מתחדש ב-" + "RENEWS_ON": "מתחדש ב-", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "הצג תמחור", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "נסה שוב", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "הקצה מקסימום", "DURATION": "שיחות לכל סוכן בכל" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "תיבות דואר נכנס שנוספו", "DESCRIPTION": "הוסף תיבות דואר נכנס שעבורן מדיניות זו תחול.", diff --git a/app/javascript/dashboard/i18n/locale/hi/advancedFilters.json b/app/javascript/dashboard/i18n/locale/hi/advancedFilters.json index 4b9226f8f..502909f34 100644 --- a/app/javascript/dashboard/i18n/locale/hi/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/hi/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/hi/chatlist.json b/app/javascript/dashboard/i18n/locale/hi/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/hi/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/hi/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/hi/companies.json b/app/javascript/dashboard/i18n/locale/hi/companies.json index 534205038..d4cd0b72f 100644 --- a/app/javascript/dashboard/i18n/locale/hi/companies.json +++ b/app/javascript/dashboard/i18n/locale/hi/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/hi/contact.json b/app/javascript/dashboard/i18n/locale/hi/contact.json index 93ff820eb..a73b9229d 100644 --- a/app/javascript/dashboard/i18n/locale/hi/contact.json +++ b/app/javascript/dashboard/i18n/locale/hi/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/hi/conversation.json b/app/javascript/dashboard/i18n/locale/hi/conversation.json index 509afd4e7..bb6c2af8d 100644 --- a/app/javascript/dashboard/i18n/locale/hi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hi/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "You are replying to:", "REMOVE_SELECTION": "Remove Selection", "DOWNLOAD": "Download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot सोच रहा है", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/hi/emoji.json b/app/javascript/dashboard/i18n/locale/hi/emoji.json index d5b96f0f9..f5572d569 100644 --- a/app/javascript/dashboard/i18n/locale/hi/emoji.json +++ b/app/javascript/dashboard/i18n/locale/hi/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Remove", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/hi/helpCenter.json b/app/javascript/dashboard/i18n/locale/hi/helpCenter.json index f80deb4fb..400e37b70 100644 --- a/app/javascript/dashboard/i18n/locale/hi/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/hi/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Delete" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json index 3b3bdfa93..8a22d871a 100644 --- a/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hi/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "To add your Twitter profile as a channel, you need to authenticate your Twitter Profile by clicking on 'Sign in with Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Close", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Phone number", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/hi/index.js b/app/javascript/dashboard/i18n/locale/hi/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/hi/index.js +++ b/app/javascript/dashboard/i18n/locale/hi/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/hi/integrations.json b/app/javascript/dashboard/i18n/locale/hi/integrations.json index 0438ba3d1..8c158c30f 100644 --- a/app/javascript/dashboard/i18n/locale/hi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hi/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "और जानें", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "परीक्षण क्षेत्र", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "सहायक", "SWITCH_ASSISTANT": "सहायकों के बीच स्विच करें", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Description", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copy", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/hi/onboarding.json b/app/javascript/dashboard/i18n/locale/hi/onboarding.json index d7c960002..51d511091 100644 --- a/app/javascript/dashboard/i18n/locale/hi/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/hi/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connect", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connect", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/hi/report.json b/app/javascript/dashboard/i18n/locale/hi/report.json index 45c40de58..846c181a2 100644 --- a/app/javascript/dashboard/i18n/locale/hi/report.json +++ b/app/javascript/dashboard/i18n/locale/hi/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/hi/sessionLimit.json b/app/javascript/dashboard/i18n/locale/hi/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/hi/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/hi/settings.json b/app/javascript/dashboard/i18n/locale/hi/settings.json index 51f673f15..f6288d714 100644 --- a/app/javascript/dashboard/i18n/locale/hi/settings.json +++ b/app/javascript/dashboard/i18n/locale/hi/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Access Token", "NOTE": "This token can be used if you are building an API based integration", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copy", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifications", "CANNED_RESPONSES": "Canned Responses", "INTEGRATIONS": "Integrations", + "DATA": "Data", "PROFILE_SETTINGS": "Profile Settings", "ACCOUNT_SETTINGS": "Account Settings", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Contacts", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/hr/advancedFilters.json b/app/javascript/dashboard/i18n/locale/hr/advancedFilters.json index 6ab65f22e..a0242cd43 100644 --- a/app/javascript/dashboard/i18n/locale/hr/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/hr/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ILI" }, "INPUT_PLACEHOLDER": "Unesite vrijednost", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Jednako", "not_equal_to": "Nije jednako", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Ime dodijeljenog", "INBOX_NAME": "Naziv sandučića", "TEAM_NAME": "Naziv tima", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Identifikator razgovora", "CAMPAIGN_NAME": "Naziv kampanje", "LABELS": "Oznake", diff --git a/app/javascript/dashboard/i18n/locale/hr/chatlist.json b/app/javascript/dashboard/i18n/locale/hr/chatlist.json index a7574ef2c..06cf82d96 100644 --- a/app/javascript/dashboard/i18n/locale/hr/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/hr/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/hr/companies.json b/app/javascript/dashboard/i18n/locale/hr/companies.json index d93ebe563..aba07b420 100644 --- a/app/javascript/dashboard/i18n/locale/hr/companies.json +++ b/app/javascript/dashboard/i18n/locale/hr/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/hr/contact.json b/app/javascript/dashboard/i18n/locale/hr/contact.json index 25609fce2..da90039d5 100644 --- a/app/javascript/dashboard/i18n/locale/hr/contact.json +++ b/app/javascript/dashboard/i18n/locale/hr/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/hr/conversation.json b/app/javascript/dashboard/i18n/locale/hr/conversation.json index a268b80c6..26a4d2a09 100644 --- a/app/javascript/dashboard/i18n/locale/hr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hr/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "You are replying to:", "REMOVE_SELECTION": "Remove Selection", "DOWNLOAD": "Download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot razmišlja", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Izbriši", "CANCEL": "Odustani" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/hr/emoji.json b/app/javascript/dashboard/i18n/locale/hr/emoji.json index cec8c96d4..0d28ec6d5 100644 --- a/app/javascript/dashboard/i18n/locale/hr/emoji.json +++ b/app/javascript/dashboard/i18n/locale/hr/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Izbaci" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Izbriši", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/hr/helpCenter.json b/app/javascript/dashboard/i18n/locale/hr/helpCenter.json index 6d7a9b027..f25bbcd22 100644 --- a/app/javascript/dashboard/i18n/locale/hr/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/hr/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Arhivirano" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Izbriši", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nisu pronađene kategorije", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Izbriši" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Ime" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Pretpregled", "PUBLISH": "Objavi", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Skica", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json index abb3e7433..bb690b7f5 100644 --- a/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hr/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "To add your Twitter profile as a channel, you need to authenticate your Twitter Profile by clicking on 'Sign in with Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Close", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Phone number", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Odustani", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/hr/index.js b/app/javascript/dashboard/i18n/locale/hr/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/hr/index.js +++ b/app/javascript/dashboard/i18n/locale/hr/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/hr/integrations.json b/app/javascript/dashboard/i18n/locale/hr/integrations.json index d35941385..78bef5a22 100644 --- a/app/javascript/dashboard/i18n/locale/hr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hr/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Saznaj više", + "OVERVIEW": { + "HEADER": "Pregled", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Poligon", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistenti", "SWITCH_ASSISTANT": "Prebaci se između asistenata", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Description", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copy", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/hr/onboarding.json b/app/javascript/dashboard/i18n/locale/hr/onboarding.json index 74c55921c..cff79ac18 100644 --- a/app/javascript/dashboard/i18n/locale/hr/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/hr/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Centar za pomoć", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connect", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connect", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/hr/report.json b/app/javascript/dashboard/i18n/locale/hr/report.json index f9fa93091..7a5a2f5bc 100644 --- a/app/javascript/dashboard/i18n/locale/hr/report.json +++ b/app/javascript/dashboard/i18n/locale/hr/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Nisu pronađeni rezultati" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/hr/sessionLimit.json b/app/javascript/dashboard/i18n/locale/hr/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/hr/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/hr/settings.json b/app/javascript/dashboard/i18n/locale/hr/settings.json index 4ec0300f6..db9430a72 100644 --- a/app/javascript/dashboard/i18n/locale/hr/settings.json +++ b/app/javascript/dashboard/i18n/locale/hr/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Pristupni token", "NOTE": "This token can be used if you are building an API based integration", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopiraj", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Pregled", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifications", "CANNED_RESPONSES": "Canned Responses", "INTEGRATIONS": "Integrations", + "DATA": "Data", "PROFILE_SETTINGS": "Postavke profila", "ACCOUNT_SETTINGS": "Account Settings", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Pročitaj članke", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Contacts", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Odustani", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Ime", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Poruka" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Trenutni plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/hu/advancedFilters.json b/app/javascript/dashboard/i18n/locale/hu/advancedFilters.json index 85781b843..3abd406b8 100644 --- a/app/javascript/dashboard/i18n/locale/hu/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/hu/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "VAGY" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Egyenlő", "not_equal_to": "Nem egyenlő", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Jogosult neve", "INBOX_NAME": "Fiók név", "TEAM_NAME": "Csapatnév", + "CONTACT": "Kontakt", "CONVERSATION_IDENTIFIER": "Beszélgetés azonosítója", "CAMPAIGN_NAME": "Vállalkozás neve", "LABELS": "Cimkék", diff --git a/app/javascript/dashboard/i18n/locale/hu/chatlist.json b/app/javascript/dashboard/i18n/locale/hu/chatlist.json index 94704a1f5..0e485181c 100644 --- a/app/javascript/dashboard/i18n/locale/hu/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/hu/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/hu/companies.json b/app/javascript/dashboard/i18n/locale/hu/companies.json index 534cb98a2..9009d3935 100644 --- a/app/javascript/dashboard/i18n/locale/hu/companies.json +++ b/app/javascript/dashboard/i18n/locale/hu/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Cég létrehozása" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Cég létrehozása", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/hu/contact.json b/app/javascript/dashboard/i18n/locale/hu/contact.json index 3a88e7793..ef4aaabb6 100644 --- a/app/javascript/dashboard/i18n/locale/hu/contact.json +++ b/app/javascript/dashboard/i18n/locale/hu/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Megjegyzések", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/hu/conversation.json b/app/javascript/dashboard/i18n/locale/hu/conversation.json index 7e68e6b40..fd76801da 100644 --- a/app/javascript/dashboard/i18n/locale/hu/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hu/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Erre a beszélgetésre csak konzerv válasszal válaszolhatsz, mert", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 órás üzeneti ablak megkötés", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Neki válaszolsz:", "REMOVE_SELECTION": "Kijelölés törlése", "DOWNLOAD": "Letöltés", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Nem sikerült megnyitni a hangfelvételt", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Helyezd ide a csatolmányt", + "IMAGE_UPLOAD_SUCCESS": "Képfeltöltés sikeres", "START_AUDIO_RECORDING": "Hangfelvétel indítása", "STOP_AUDIO_RECORDING": "Hangfelvétel leállítása", "COPILOT_THINKING": "Copilot gondolkodik", @@ -303,6 +306,25 @@ "MESSAGE": "Nem tudod visszavonni ezt a műveletet", "DELETE": "Törlés", "CANCEL": "Mégse" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Leírás", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Összes megtekintése", "SHOW_LESS": "Kevesebb mutatása", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/hu/emoji.json b/app/javascript/dashboard/i18n/locale/hu/emoji.json index a723075d9..969740b6c 100644 --- a/app/javascript/dashboard/i18n/locale/hu/emoji.json +++ b/app/javascript/dashboard/i18n/locale/hu/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Emoji keresése", "NOT_FOUND": "Nem található emoji", "REMOVE": "Eltávolítás" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Nem található emoji", + "NO_ICON": "No icons match your search", + "REMOVE": "Eltávolítás", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/hu/helpCenter.json b/app/javascript/dashboard/i18n/locale/hu/helpCenter.json index 78388171c..d2a6ad0d0 100644 --- a/app/javascript/dashboard/i18n/locale/hu/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/hu/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publikált", "ARCHIVED": "Archivált" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Cikkek keresése...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Törlés", "STATUS_SUCCESS": "A bejegyzések sikeresen frissítve", "STATUS_ERROR": "Nem sikerült frissíteni a bejegyzéseket", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Bejegyzés törlése | {count} bejegyzés törlése", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Új kategória", "EDIT_CATEGORY": "Kategória szerkesztése", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nincsenek kategóriák", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Törlés" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Kategorizálhatatlan" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Név" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Új terület hozzáadása", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Előnézet", "PUBLISH": "Publikálás", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Vázlat", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Cím" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Kategorizálhatatlan", diff --git a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json index 8f778b771..85d980afa 100644 --- a/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hu/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Ahhoz hogy hozzáadd a twitter profilodat egy csatornaként, azonosítanod kell a Twitter fiókodat a 'Belépés Twitterrel' gomb megnyomásával ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Üzleti azonosító", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API kulcs", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Bezárás", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Hozzáadás", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Fiók", + "PHONE_NUMBER": "Telefonszám", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Vissza", + "CANCEL": "Mégse", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/hu/index.js b/app/javascript/dashboard/i18n/locale/hu/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/hu/index.js +++ b/app/javascript/dashboard/i18n/locale/hu/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/hu/integrations.json b/app/javascript/dashboard/i18n/locale/hu/integrations.json index 0750b809e..6f189e025 100644 --- a/app/javascript/dashboard/i18n/locale/hu/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hu/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Feliratkozott események", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Tudjon meg többet", + "OVERVIEW": { + "HEADER": "Áttekintés", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Elutasítás" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Elutasítás" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Játszótér", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Számlázás", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asszisztensek", "SWITCH_ASSISTANT": "Váltás az asszisztensek között", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Leírás", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Másolás", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Részletek megtekintése", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/hu/onboarding.json b/app/javascript/dashboard/i18n/locale/hu/onboarding.json index 1eff9d57e..206220082 100644 --- a/app/javascript/dashboard/i18n/locale/hu/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/hu/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Töltsd ki az összes kötelező mezőt", "SUCCESS": "Az adatok sikeresen mentve", "ERROR": "Nem sikerült menteni az adatokat. Próbáld újra." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Valami elromlott, kérjük töltsd próbáld újra.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Súgóközpont", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Kapcsolódás", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-mail", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Összes megtekintése", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Kapcsolódás", + "BACK": "Vissza", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/hu/report.json b/app/javascript/dashboard/i18n/locale/hu/report.json index 2595a0a5b..9d255e0eb 100644 --- a/app/javascript/dashboard/i18n/locale/hu/report.json +++ b/app/javascript/dashboard/i18n/locale/hu/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Nincs találat" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Gazdátlan", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/hu/sessionLimit.json b/app/javascript/dashboard/i18n/locale/hu/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/hu/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/hu/settings.json b/app/javascript/dashboard/i18n/locale/hu/settings.json index acde7e91b..f61e07b1c 100644 --- a/app/javascript/dashboard/i18n/locale/hu/settings.json +++ b/app/javascript/dashboard/i18n/locale/hu/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Hozzáférési kulcs", "NOTE": "Ez a kulcs akkor használható, ha API-alapú integrációt építesz", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Másolás", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Áttekintés", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Értesítések", "CANNED_RESPONSES": "Mentett válaszok", "INTEGRATIONS": "Integrációk", + "DATA": "Data", "PROFILE_SETTINGS": "Profilbeállítások", "ACCOUNT_SETTINGS": "Fiókbeállítások", "APPLICATIONS": "Alkalmazások", @@ -379,11 +393,124 @@ "INFO_TEXT": "Hagyd, hogy a rendszer automatikusan offline módban jelöljön meg, amikor nem használod az alkalmazást vagy az irányítópultot.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Rendezés", + "SORT_BY": "Rendezés", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Dokumentum olvasása", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importálás", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kontaktok", + "CONVERSATIONS": "Beszélgetések", + "MESSAGES": "Üzenetek" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Mégse", + "IMPORT": "Importálás" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importálás", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Név", + "TYPE": "Típus", + "STATUS": "Státusz", + "IMPORTED": "Imported", + "CREATED": "Létrehozva", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Létrehozva", + "DURATION": "Időszak", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Mind", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Üzenet" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Frissítés", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Lezárt", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Aktuális előfizetés", "PLAN_NOTE": "Jelenleg előfizetett a **{plan}** csomagra **{quantity}** licensszel", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/hy/advancedFilters.json b/app/javascript/dashboard/i18n/locale/hy/advancedFilters.json index a991cb25b..d1f8c26e9 100644 --- a/app/javascript/dashboard/i18n/locale/hy/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/hy/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Կոնտակտ", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/hy/chatlist.json b/app/javascript/dashboard/i18n/locale/hy/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/hy/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/hy/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/hy/companies.json b/app/javascript/dashboard/i18n/locale/hy/companies.json index 2c53bd252..db8531b96 100644 --- a/app/javascript/dashboard/i18n/locale/hy/companies.json +++ b/app/javascript/dashboard/i18n/locale/hy/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/hy/contact.json b/app/javascript/dashboard/i18n/locale/hy/contact.json index 702b355eb..ea2b24577 100644 --- a/app/javascript/dashboard/i18n/locale/hy/contact.json +++ b/app/javascript/dashboard/i18n/locale/hy/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Գործոններ", "HISTORY": "Պատմություն", "NOTES": "Նշումներ", + "MEDIA": "Media", "MERGE": "Միավորել" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/hy/conversation.json b/app/javascript/dashboard/i18n/locale/hy/conversation.json index e4f4b6f43..0f790d65f 100644 --- a/app/javascript/dashboard/i18n/locale/hy/conversation.json +++ b/app/javascript/dashboard/i18n/locale/hy/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Այս զրույցին կարող եք պատասխանել միայն կաղապար հաղորդագրությամբ՝", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24-ժամյա պատուհանի սահմանափակում", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Դուք պատասխանում եք՝", "REMOVE_SELECTION": "Հեռացնել ընտրությունը", "DOWNLOAD": "Ներբեռնել", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Քաշեք և գցեք այստեղ կցելու համար", + "IMAGE_UPLOAD_SUCCESS": "Պատկերը հաջողությամբ ներբեռնվեց", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot-ը մտածում է", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Դիտել բոլորը", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/hy/emoji.json b/app/javascript/dashboard/i18n/locale/hy/emoji.json index d5b96f0f9..1262a37c4 100644 --- a/app/javascript/dashboard/i18n/locale/hy/emoji.json +++ b/app/javascript/dashboard/i18n/locale/hy/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Հեռացնել", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/hy/helpCenter.json b/app/javascript/dashboard/i18n/locale/hy/helpCenter.json index 648634a48..dd1a3aac2 100644 --- a/app/javascript/dashboard/i18n/locale/hy/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/hy/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Հրապարակված", "ARCHIVED": "Արխիվացված" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Առանձնացված չէ" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Բոլոր լեզուները" }, + "SEARCH_PLACEHOLDER": "Որոնել հոդվածներ...", "NEW_ARTICLE": "Նոր հոդված" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Այս կատեգորիայի մեջ հոդվածներ չկան։", "SUBTITLE": "Այս կատեգորիայի հոդվածները կցուցադրվեն այստեղ։" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Նոր կատեգորիա", "EDIT_CATEGORY": "Խմբագրել կատեգորիան", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} կատեգորիա | {n} կատեգորիաներ", "BREADCRUMB": { "CATEGORY_LOCALE": "Կատեգորիաներ ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Կատեգորիաներ չեն գտնվել։", "SUBTITLE": "Կատեգորիաները կցուցադրվեն այստեղ։ Կարող եք ավելացնել կատեգորիա՝ սեղմելով «Նոր կատեգորիա» կոճակը։" }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} հոդված | {count} հոդվածներ" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Լեզուներ չկան | {n} լեզու | {n} լեզուներ", "NEW_LOCALE_BUTTON_TEXT": "Նոր լեզու", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} հոդված | {count} հոդվածներ", "CATEGORIES_COUNT": "{count} կատեգորիա | {count} կատեգորիաներ", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Դարձնել նախնական", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Ջնջել" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Առանձնահատուկ կատեգորիա չունի" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Էջի վերնագիր" + }, + "HEADER_TEXT": { + "LABEL": "Վերնագրի տեքստ" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Ավելացնել նոր լեզու", "DESCRIPTION": "Ընտրեք լեզուն, որով կգրվի այս հոդվածը։ Այն կավելացվի ձեր թարգմանությունների ցանկին, և դուք կարող եք ավելացնել ավելի շատ հետագայում։", @@ -730,10 +791,30 @@ }, "PREVIEW": "Նախադիտում", "PUBLISH": "Հրապարակել", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Սևագիր", "ARCHIVE": "Արխիվ", "BACK_TO_ARTICLES": "Վերադառնալ հոդվածներին" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Ավելին հատկություններ", "UNCATEGORIZED": "Առանց կատեգորիայի", diff --git a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json index 71169f92c..5019c6a00 100644 --- a/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/hy/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram-ին միանալու ընթացքում սխալ է տեղի ունեցել, խնդրում ենք փորձել կրկին", "ERROR_AUTH": "Instagram-ին միանալու ընթացքում սխալ է տեղի ունեցել, խնդրում ենք փորձել կրկին", "NEW_INBOX_SUGGESTION": "Այս Instagram հաշիվը նախկինում կապված էր այլ մուտքի արկղի հետ և այժմ տեղափոխվել է այստեղ։ Բոլոր նոր հաղորդագրությունները կցուցադրվեն այստեղ։ Հին մուտքի արկղը այլևս չի կարողանա ուղարկել կամ ստանալ հաղորդագրություններ այս հաշվի համար։", - "DUPLICATE_INBOX_BANNER": "Այս Instagram հաշիվը տեղափոխվել է նոր Instagram ալիքի մուտքի արկղ։ Դուք այլևս չեք կարողանա ուղարկել կամ ստանալ Instagram հաղորդագրություններ այս մուտքի արկղից։" + "DUPLICATE_INBOX_BANNER": "Այս Instagram հաշիվը տեղափոխվել է նոր Instagram ալիքի մուտքի արկղ։ Դուք այլևս չեք կարողանա ուղարկել կամ ստանալ Instagram հաղորդագրություններ այս մուտքի արկղից։", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Շարունակել TikTok-ով", "CONNECT_YOUR_TIKTOK_PROFILE": "Կապեք ձեր TikTok պրոֆիլը", "HELP": "Ձեր TikTok պրոֆիլը որպես ալիք ավելացնելու համար անհրաժեշտ է հաստատել ձեր TikTok պրոֆիլը՝ սեղմելով «Շարունակել TikTok-ով» կոճակը։ ", "ERROR_MESSAGE": "TikTok-ին միանալու ընթացքում սխալ է տեղի ունեցել, խնդրում ենք փորձել կրկին", - "ERROR_AUTH": "TikTok-ին միանալու ընթացքում սխալ է տեղի ունեցել, խնդրում ենք փորձել կրկին" + "ERROR_AUTH": "TikTok-ին միանալու ընթացքում սխալ է տեղի ունեցել, խնդրում ենք փորձել կրկին", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Ձեր Twitter պրոֆիլը որպես ալիք ավելացնելու համար անհրաժեշտ է հաստատել ձեր Twitter պրոֆիլը՝ սեղմելով «Մուտք Twitter-ով» կոճակը։ ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "Այս մուտքի արկղը միացված է WhatsApp-ի ներառված գրանցման միջոցով։", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "Դուք կարող եք վերակազմակերպել այս մուտքի արկղը՝ թարմացնելու ձեր WhatsApp Business կարգավորումները։", "WHATSAPP_RECONFIGURE_BUTTON": "Վերակազմակերպել", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Բիզնես հաշվի ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API բանալին", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Կապվել WhatsApp Business-ի հետ", "WHATSAPP_CONNECT_SUBHEADER": "Թարմացեք WhatsApp-ի ներկառուցված գրանցմանը՝ ավելի հեշտ կառավարման համար։", "WHATSAPP_CONNECT_DESCRIPTION": "Կապեք այս մուտքի արկղը WhatsApp Business-ի հետ՝ բարելավված հնարավորություններով և ավելի հեշտ կառավարման համար։", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Ձեռնարկաբար համաժամեցրեք հաղորդագրությունների տիպերը WhatsApp-ից՝ ձեր հասանելի տիպերը թարմացնելու համար։", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Համաժամեցնել տիպերը", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Տիպերի համաժամացումը հաջողությամբ սկսվեց։ Թարմացումը կարող է տևել մի քանի րոպե։", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Փակել", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Ցուցադրել հեռախոսահամարը", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Հեռախոսահամար", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Շարունակել", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/hy/index.js b/app/javascript/dashboard/i18n/locale/hy/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/hy/index.js +++ b/app/javascript/dashboard/i18n/locale/hy/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/hy/integrations.json b/app/javascript/dashboard/i18n/locale/hy/integrations.json index 0dc4b0570..e5d448985 100644 --- a/app/javascript/dashboard/i18n/locale/hy/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hy/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Բաժանորդագրված իրադարձություններ", "LEARN_MORE": "Իմացեք ավելին webhook-ների մասին", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Գաղտնաբառ", "COPY": "Պատճենել գաղտնաբառը", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Իմանալ ավելին", + "OVERVIEW": { + "HEADER": "Ընդհանուր տեսք", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "Այս ամիս", + "LAST_MONTH": "Նախորդ ամիս" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Սպասող ՀՏՀ-ներ", + "DOCUMENTS": "Փաստաթղթեր" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Խաղադաշտ", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Վճարում", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Օգնականներ", "SWITCH_ASSISTANT": "Փոխել օգնականը", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Մուտքագրեք օգնականի անունը", "ERROR": "Անունը պարտադիր է" }, - "TEMPERATURE": { - "LABEL": "Պատասխանի ջերմաստիճան", - "DESCRIPTION": "Կարգավորեք, թե որքան ստեղծագործ կամ սահմանափակ պետք է լինեն օգնականի պատասխանները։ Նվազագույն արժեքները տալիս են ավելի կենտրոնացած և որոշակի պատասխաններ, իսկ բարձր արժեքները թույլ են տալիս ավելի ստեղծագործ և բազմազան արդյունքներ։" - }, "DESCRIPTION": { "LABEL": "Նկարագրություն", "PLACEHOLDER": "Մուտքագրեք օգնականի նկարագրությունը", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Փաստաթղթեր", "ADD_NEW": "Ստեղծել նոր փաստաթուղթ", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} ընտրված", "SELECT_ALL": "Ընտրել բոլորը ({count})", "UNSELECT_ALL": "Չընտրել բոլորը ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Համապատասխան ՀՏՀ-ներ", - "DESCRIPTION": "Այս ՀՏՀ-ները ստեղծվել են ուղղակիորեն փաստաթղթից։" + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Պատճենել", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Մուտքագրեք փաստաթղթի URL հասցեն՝ այն ավելացնելու համար որպես գիտելիքների աղբյուր և ընտրեք օգնականին, որի հետ կապել այն։", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Փաստաթղթի ջնջման ժամանակ սխալ է տեղի ունեցել, խնդրում ենք փորձել կրկին։" }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Դիտել կապված պատասխանները", + "VIEW_DETAILS": "Դիտել մանրամասները", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Ջնջել փաստաթուղթը" diff --git a/app/javascript/dashboard/i18n/locale/hy/onboarding.json b/app/javascript/dashboard/i18n/locale/hy/onboarding.json index e930682d5..350e8bb4a 100644 --- a/app/javascript/dashboard/i18n/locale/hy/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/hy/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Շարունակել", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Պատրաստ է", + "HELP_CENTER": "Օգնության կենտրոն", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} կատեգորիա | {count} կատեգորիաներ", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Կապվել", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Ձայն", + "VIEW_ALL": "Դիտել բոլորը", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Կապվել", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/hy/report.json b/app/javascript/dashboard/i18n/locale/hy/report.json index 6f197e6d2..7ac08191c 100644 --- a/app/javascript/dashboard/i18n/locale/hy/report.json +++ b/app/javascript/dashboard/i18n/locale/hy/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Մաքրել ֆիլտրը", "EMPTY_LIST": "Արդյունքներ չեն գտնվել" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Չհատկացված", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Ցուցադրվում է {start}-ից {end}-ը՝ ընդհանուր {total} արդյունքներից", "PER_PAGE_TEMPLATE": "{size} / էջ" diff --git a/app/javascript/dashboard/i18n/locale/hy/sessionLimit.json b/app/javascript/dashboard/i18n/locale/hy/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/hy/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/hy/settings.json b/app/javascript/dashboard/i18n/locale/hy/settings.json index 463da6f97..bc3c151da 100644 --- a/app/javascript/dashboard/i18n/locale/hy/settings.json +++ b/app/javascript/dashboard/i18n/locale/hy/settings.json @@ -86,9 +86,21 @@ "NOTE": "Կառավարեք ձեր հաշվի լրացուցիչ անվտանգության հատկությունները։", "MFA_BUTTON": "Կառավարեք երկփուլ հաստատումը" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Մուտքի տոկեն", "NOTE": "Այս տոկենը կարող է օգտագործվել, եթե դուք կառուցում եք API-հիմնված ինտեգրում", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Պատճենել", "RESET": "Վերականգնել", "CONFIRM_RESET": "Համոզվա՞ծ եք:", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Բոլոր ընկերությունները", "CAPTAIN": "Կապիտան", "CAPTAIN_ASSISTANTS": "Օգնակիցներ", + "CAPTAIN_OVERVIEW": "Ընդհանուր տեսք", "CAPTAIN_DOCUMENTS": "Փաստաթղթեր", "CAPTAIN_RESPONSES": "Հաճախ տրվող հարցեր", "CAPTAIN_TOOLS": "Գործիքներ", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Ծանուցումներ", "CANNED_RESPONSES": "Պատրաստի պատասխաններ", "INTEGRATIONS": "Ինտեգրացիաներ", + "DATA": "Data", "PROFILE_SETTINGS": "Պրոֆիլի կարգավորումներ", "ACCOUNT_SETTINGS": "Հաշվի կարգավորումներ", "APPLICATIONS": "Դիմումներ", @@ -379,11 +393,124 @@ "INFO_TEXT": "Թույլ տվեք համակարգին ավտոմատ նշել ձեզ օֆլայն, երբ չեք օգտագործում հավելվածը կամ վահանակը։", "INFO_SHORT": "Ավտոմատ նշեք օֆլայն, երբ չեք օգտագործում հավելվածը։" }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Տեսակավորել ըստ", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Կարդալ փաստաթղթերը", "SECURITY": "Անվտանգություն", "CAPTAIN_AI": "Կապիտան", "CONVERSATION_WORKFLOW": "Զրույցների աշխատանքային հոսք" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Ներմուծել", + "EXPORT": "Արտահանել" + }, + "TYPES": { + "CONTACTS": "Կապեր", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Ներմուծել" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Շուտով կգա" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Ներմուծել", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Ստեղծվել է", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Ստեղծվել է", + "DURATION": "Տևողություն", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Ձախողվել է", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain-ի կարգավորումներ", "DESCRIPTION": "Կարգավորեք ձեր AI մոդելներն ու ֆունկցիաները Captain-ի համար։ Captain-ը գործում է կրեդիտների վրա հիմնված վճարման համակարգով, և յուրաքանչյուր գործողության համար, որը կատարում է Captain-ը ընտրված մոդելի հիման վրա, ձեզ կվճարվի կրեդիտներ։", @@ -414,7 +541,9 @@ "DESCRIPTION": "Ակտիվացրեք կամ անջատեք AI-ով աշխատող ֆունկցիաները։", "AUDIO_TRANSCRIPTION": { "TITLE": "Աուդիո տրանսկրիպցիա", - "DESCRIPTION": "Ավտոմատ կերպով ձայնային հաղորդագրությունները և զանգերի ձայնագրությունները փոխարկում է որոնելի տեքստային տրանսկրիպտների։" + "DESCRIPTION": "Ավտոմատ կերպով ձայնային հաղորդագրությունները և զանգերի ձայնագրությունները փոխարկում է որոնելի տեքստային տրանսկրիպտների։", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Օգնության կենտրոնի որոնման ինդեքսավորում", @@ -439,7 +568,18 @@ "TITLE": "Ընթացիկ պլան", "PLAN_NOTE": "Դուք ներկայումս բաժանորդագրված եք **{plan}** պլանին՝ **{quantity}** լիցենզիաներով", "SEAT_COUNT": "Մեկնոցների քանակը", - "RENEWS_ON": "Վերականգնվում է" + "RENEWS_ON": "Վերականգնվում է", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Դիտել գները", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Գնել կրեդիտներ", "LOADING": "Բեռնվում են ընտրանքները...", "FETCH_ERROR": "Չհաջողվեց բեռնել կրեդիտների ընտրանքները։ Խնդրում ենք փորձել կրկին։", + "RETRY": "Retry", "PURCHASE_ERROR": "Չհաջողվեց կատարել գնումը։ Խնդրում ենք փորձել կրկին։", "PURCHASE_SUCCESS": "Ձեր հաշվին հաջողությամբ ավելացվել է {credits} կրեդիտ", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Առավելագույն հատկացում", "DURATION": "Զրույցներ յուրաքանչյուր գործակալին յուրաքանչյուր" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Ավելացված մուտքի տուփեր", "DESCRIPTION": "Ավելացրեք մուտքի տուփեր, որոնց համար այս քաղաքականությունը կկիրառվի։", diff --git a/app/javascript/dashboard/i18n/locale/id/advancedFilters.json b/app/javascript/dashboard/i18n/locale/id/advancedFilters.json index 3af76d803..a0589d21c 100644 --- a/app/javascript/dashboard/i18n/locale/id/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/id/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ATAU" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Sama dengan", "not_equal_to": "Tidak sama dengan", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Nama kotak masuk", "TEAM_NAME": "Nama Tim", + "CONTACT": "Kontak", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Label", diff --git a/app/javascript/dashboard/i18n/locale/id/chatlist.json b/app/javascript/dashboard/i18n/locale/id/chatlist.json index 3735815e0..bca3634b8 100644 --- a/app/javascript/dashboard/i18n/locale/id/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/id/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/id/companies.json b/app/javascript/dashboard/i18n/locale/id/companies.json index 385e9fe6c..155294e78 100644 --- a/app/javascript/dashboard/i18n/locale/id/companies.json +++ b/app/javascript/dashboard/i18n/locale/id/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/id/contact.json b/app/javascript/dashboard/i18n/locale/id/contact.json index e95a529b0..6d5ead7af 100644 --- a/app/javascript/dashboard/i18n/locale/id/contact.json +++ b/app/javascript/dashboard/i18n/locale/id/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Atribut", "HISTORY": "History", "NOTES": "Catatan", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/id/conversation.json b/app/javascript/dashboard/i18n/locale/id/conversation.json index e69d656da..0859d617e 100644 --- a/app/javascript/dashboard/i18n/locale/id/conversation.json +++ b/app/javascript/dashboard/i18n/locale/id/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Anda hanya dapat membalas percakapan ini menggunakan pesan template karena", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Pembatasan jendela pesan 24 jam", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Anda membalas:", "REMOVE_SELECTION": "Hapus Pilihan", "DOWNLOAD": "Unduh", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Tidak dapat membuka audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Seret dan letakkan di sini untuk melampirkan", + "IMAGE_UPLOAD_SUCCESS": "Gambar berhasil diunggah", "START_AUDIO_RECORDING": "Mulai merekam audio", "STOP_AUDIO_RECORDING": "Berhenti merekam audio", "COPILOT_THINKING": "Copilot sedang berpikir", @@ -303,6 +306,25 @@ "MESSAGE": "Anda tidak dapat membatalkan tindakan ini", "DELETE": "Hapus", "CANCEL": "Batalkan" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Deskripsi", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/id/emoji.json b/app/javascript/dashboard/i18n/locale/id/emoji.json index 0f84caedc..ee5764001 100644 --- a/app/javascript/dashboard/i18n/locale/id/emoji.json +++ b/app/javascript/dashboard/i18n/locale/id/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Cari emoji", "NOT_FOUND": "Tidak ditemukan emoji yang sesuai dengan pencarian Anda", "REMOVE": "Hapus" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Tidak ditemukan emoji yang sesuai dengan pencarian Anda", + "NO_ICON": "No icons match your search", + "REMOVE": "Hapus", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/id/helpCenter.json b/app/javascript/dashboard/i18n/locale/id/helpCenter.json index 827bfe632..17e9200ce 100644 --- a/app/javascript/dashboard/i18n/locale/id/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/id/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Diterbitkan", "ARCHIVED": "Diarsipkan" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Hapus", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Kategori Baru", "EDIT_CATEGORY": "Edit kategori", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Tidak ditemukan kategori", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Hapus" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Tanpa Kategori" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nama" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Tambahkan bahasa baru", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Pratinjau", "PUBLISH": "Terbitkan", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draf", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Judul" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Tanpa Kategori", diff --git a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json index e0929b473..aee684a2b 100644 --- a/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/id/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Untuk menambahkan profil Twitter Anda sebagai saluran, Anda perlu mengautentikasi Profil Twitter Anda dengan mengklik 'Masuk dengan Twitter' ", @@ -468,7 +471,7 @@ "DESCRIPTION": "Support your customers on WhatsApp" }, "WHATSAPP_CALL": { - "TITLE": "WhatsApp Call", + "TITLE": "Panggilan WhatsApp", "DESCRIPTION": "Take voice calls on your WhatsApp number" }, "EMAIL": { @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -672,7 +679,7 @@ "PERMISSION_REQUEST_BODY": { "LABEL": "Call permission request message", "HELP_TEXT": "Shown to the contact when they haven't yet consented to receive calls. Leave blank to use the default.", - "PLACEHOLDER": "We would like to call you regarding your conversation." + "PLACEHOLDER": "Kami ingin menghubungi Anda terkait percakapan Anda." } }, "CHANNEL_PREFERENCES": "Channel Preferences", @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID Akun Bisnis", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Tutup", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Tambahkan", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Kotak masuk", + "PHONE_NUMBER": "Nomor Telepon", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Kembali", + "CANCEL": "Batalkan", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/id/index.js b/app/javascript/dashboard/i18n/locale/id/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/id/index.js +++ b/app/javascript/dashboard/i18n/locale/id/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/id/integrations.json b/app/javascript/dashboard/i18n/locale/id/integrations.json index 0d12f77a0..ba554e7a9 100644 --- a/app/javascript/dashboard/i18n/locale/id/integrations.json +++ b/app/javascript/dashboard/i18n/locale/id/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Acara Berlangganan", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Pelajari lebih lanjut", + "OVERVIEW": { + "HEADER": "Gambaran", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Tutup" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Tutup" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Area pengujian", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Pembayaran", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asisten", "SWITCH_ASSISTANT": "Beralih antar asisten", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Deskripsi", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Salin", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Lihat Detail", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/id/onboarding.json b/app/javascript/dashboard/i18n/locale/id/onboarding.json index db8c74476..4f762a2e2 100644 --- a/app/javascript/dashboard/i18n/locale/id/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/id/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Terjadi kesalahan. Silakan coba lagi.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Pusat Bantuan", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Sambungkan", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Sambungkan", + "BACK": "Kembali", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/id/report.json b/app/javascript/dashboard/i18n/locale/id/report.json index bee3aa28b..bad3248cc 100644 --- a/app/javascript/dashboard/i18n/locale/id/report.json +++ b/app/javascript/dashboard/i18n/locale/id/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Tidak ada hasil ditemukan" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Belum Ditugaskan", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/id/sessionLimit.json b/app/javascript/dashboard/i18n/locale/id/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/id/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/id/settings.json b/app/javascript/dashboard/i18n/locale/id/settings.json index 3a04f306c..9e3e91670 100644 --- a/app/javascript/dashboard/i18n/locale/id/settings.json +++ b/app/javascript/dashboard/i18n/locale/id/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token Akses", "NOTE": "Token ini dapat digunakan jika Anda sedang membangun integrasi berbasis API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Salin", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Gambaran", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifikasi", "CANNED_RESPONSES": "Jawaban Cepat", "INTEGRATIONS": "Integrasi", + "DATA": "Data", "PROFILE_SETTINGS": "Pengaturan Profil", "ACCOUNT_SETTINGS": "Pengaturan Akun", "APPLICATIONS": "Aplikasi", @@ -379,11 +393,124 @@ "INFO_TEXT": "Biarkan sistem secara otomatis menandai Anda offline saat Anda tidak menggunakan aplikasi atau dasbor.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Urutkan berdasarkan", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Baca dokumen", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Impor", + "EXPORT": "Ekspor" + }, + "TYPES": { + "CONTACTS": "Kontak", + "CONVERSATIONS": "Percakapan", + "MESSAGES": "Pesan" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Batalkan", + "IMPORT": "Impor" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Impor", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nama", + "TYPE": "Tipe", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Dibuat", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Dibuat", + "DURATION": "Durasi", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Semua", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Pesan" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Segarkan", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Selesai", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Paket Saat Ini", "PLAN_NOTE": "Anda saat ini berlangganan paket **{plan}** dengan **{quantity}** lisensi", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/is/advancedFilters.json b/app/javascript/dashboard/i18n/locale/is/advancedFilters.json index 6b1a17efa..2b21ba941 100644 --- a/app/javascript/dashboard/i18n/locale/is/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/is/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/is/chatlist.json b/app/javascript/dashboard/i18n/locale/is/chatlist.json index 8f4dd73af..1ff9b6792 100644 --- a/app/javascript/dashboard/i18n/locale/is/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/is/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/is/companies.json b/app/javascript/dashboard/i18n/locale/is/companies.json index b6777173f..4694a1085 100644 --- a/app/javascript/dashboard/i18n/locale/is/companies.json +++ b/app/javascript/dashboard/i18n/locale/is/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/is/contact.json b/app/javascript/dashboard/i18n/locale/is/contact.json index cd92ed805..3498f530a 100644 --- a/app/javascript/dashboard/i18n/locale/is/contact.json +++ b/app/javascript/dashboard/i18n/locale/is/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Athugasemdir", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/is/conversation.json b/app/javascript/dashboard/i18n/locale/is/conversation.json index 3c99a01b6..0bd0b0d23 100644 --- a/app/javascript/dashboard/i18n/locale/is/conversation.json +++ b/app/javascript/dashboard/i18n/locale/is/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Þú getur aðeins svarað þessu samtali með því að nota sniðmátskilaboð vegna þess að", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "You are replying to:", "REMOVE_SELECTION": "Remove Selection", "DOWNLOAD": "Sækja", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Tókst ekki að opna hljóðið", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Dragðu og slepptu viðhenginu hingað", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Hefja hljóðupptöku", "STOP_AUDIO_RECORDING": "Stoppa hljóðupptöku", "COPILOT_THINKING": "Copilot er að hugsa", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Eyða", "CANCEL": "Hætta við" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/is/emoji.json b/app/javascript/dashboard/i18n/locale/is/emoji.json index 6ef642c6c..ec4b4d308 100644 --- a/app/javascript/dashboard/i18n/locale/is/emoji.json +++ b/app/javascript/dashboard/i18n/locale/is/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Fjarlægja" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Fjarlægja", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/is/helpCenter.json b/app/javascript/dashboard/i18n/locale/is/helpCenter.json index 88f7830c5..d37ddcee4 100644 --- a/app/javascript/dashboard/i18n/locale/is/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/is/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Eyða", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Eyða" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nafn" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json index 11a47f468..df4173e7d 100644 --- a/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/is/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Til að bæta Twitter prófílnum þínum við sem rás þarftu að auðkenna Twitter prófílinn þinn með því að smella á 'Skráðu þig inn með Twitter'", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Lykill", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Close", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Bæta við", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Innhólf", + "PHONE_NUMBER": "Símanúmer", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Til baka", + "CANCEL": "Hætta við", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/is/index.js b/app/javascript/dashboard/i18n/locale/is/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/is/index.js +++ b/app/javascript/dashboard/i18n/locale/is/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/is/integrations.json b/app/javascript/dashboard/i18n/locale/is/integrations.json index 23a65ea4a..134d08312 100644 --- a/app/javascript/dashboard/i18n/locale/is/integrations.json +++ b/app/javascript/dashboard/i18n/locale/is/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Fáðu meiri upplýsingar", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Leikvöllur", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Aðstoðarmenn", "SWITCH_ASSISTANT": "Skiptu á milli aðstoðarmanna", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Description", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copy", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Sjá smáatriði", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/is/onboarding.json b/app/javascript/dashboard/i18n/locale/is/onboarding.json index 1c479d931..a584f2777 100644 --- a/app/javascript/dashboard/i18n/locale/is/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/is/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connect", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Tölvupóstfang", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connect", + "BACK": "Til baka", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/is/report.json b/app/javascript/dashboard/i18n/locale/is/report.json index f6bd509b2..082fb73ee 100644 --- a/app/javascript/dashboard/i18n/locale/is/report.json +++ b/app/javascript/dashboard/i18n/locale/is/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Engar niðurstöður fundust" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/is/sessionLimit.json b/app/javascript/dashboard/i18n/locale/is/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/is/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/is/settings.json b/app/javascript/dashboard/i18n/locale/is/settings.json index a317e5195..6937fc773 100644 --- a/app/javascript/dashboard/i18n/locale/is/settings.json +++ b/app/javascript/dashboard/i18n/locale/is/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Aðgangslykill", "NOTE": "Þetta token er hægt að nota ef þú ert að byggja upp API byggða samþættingu", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Afrita", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Skilaboð", "CANNED_RESPONSES": "Stöðluð svör", "INTEGRATIONS": "Integrations", + "DATA": "Data", "PROFILE_SETTINGS": "Stillingar Prófíls", "ACCOUNT_SETTINGS": "Account Settings", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Hlaða inn", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Tengiliðir", + "CONVERSATIONS": "Samtöl", + "MESSAGES": "Skilaboð" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Hætta við", + "IMPORT": "Hlaða inn" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Hlaða inn", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nafn", + "TYPE": "Type", + "STATUS": "Staða", + "IMPORTED": "Imported", + "CREATED": "Skráð", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Skráð", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Allt", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Skilaboð" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Uppfæra", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "Þú ert áskrifandi að **{plan}** áætluninni með **{quantity}** leyfi", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/it/advancedFilters.json b/app/javascript/dashboard/i18n/locale/it/advancedFilters.json index fe968cf1e..eb0054e41 100644 --- a/app/javascript/dashboard/i18n/locale/it/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/it/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "O" }, "INPUT_PLACEHOLDER": "Inserisci valore", + "CONTACT_SEARCH_PLACEHOLDER": "Cerca contatti", + "CONTACT_FALLBACK": "Contatto #{id}", "OPERATOR_LABELS": { "equal_to": "Uguale a", "not_equal_to": "Non uguale a", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Nome assegnatario", "INBOX_NAME": "Nome Inbox", "TEAM_NAME": "Nome team", + "CONTACT": "Contatto", "CONVERSATION_IDENTIFIER": "Identificativo conversazione", "CAMPAIGN_NAME": "Nome campagna", "LABELS": "Etichette", diff --git a/app/javascript/dashboard/i18n/locale/it/bulkActions.json b/app/javascript/dashboard/i18n/locale/it/bulkActions.json index 0399afad0..4b76e3029 100644 --- a/app/javascript/dashboard/i18n/locale/it/bulkActions.json +++ b/app/javascript/dashboard/i18n/locale/it/bulkActions.json @@ -27,13 +27,13 @@ }, "LABELS": { "ASSIGN_LABELS": "Assegna etichette", - "REMOVE_LABELS": "Remove labels", + "REMOVE_LABELS": "Rimuovi etichette", "ASSIGN_SELECTED_LABELS": "Assegna etichette selezeionate", - "REMOVE_SELECTED_LABELS": "Remove selected labels", + "REMOVE_SELECTED_LABELS": "Rimuovi etichette selezionate", "ASSIGN_SUCCESFUL": "Etichette assegnate correttamente.", "ASSIGN_FAILED": "Impossibile assegnare le etichette. Riprova.", - "REMOVE_SUCCESFUL": "Labels removed successfully.", - "REMOVE_FAILED": "Failed to remove labels. Please try again." + "REMOVE_SUCCESFUL": "Etichette rimosse correttamente.", + "REMOVE_FAILED": "Impossibile rimuovere le etichette. Riprova." }, "TEAMS": { "NONE": "Nessuno", diff --git a/app/javascript/dashboard/i18n/locale/it/chatlist.json b/app/javascript/dashboard/i18n/locale/it/chatlist.json index c6a46be73..30b7c27eb 100644 --- a/app/javascript/dashboard/i18n/locale/it/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/it/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priorità: prima le più importanti, Data creazione: prima le più vecchie" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/it/companies.json b/app/javascript/dashboard/i18n/locale/it/companies.json index e929dafcd..909abe8b5 100644 --- a/app/javascript/dashboard/i18n/locale/it/companies.json +++ b/app/javascript/dashboard/i18n/locale/it/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Aggiungi azienda" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Aggiungi dettagli azienda", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/it/components.json b/app/javascript/dashboard/i18n/locale/it/components.json index bb2aafe5e..6b6e9e9e2 100644 --- a/app/javascript/dashboard/i18n/locale/it/components.json +++ b/app/javascript/dashboard/i18n/locale/it/components.json @@ -64,6 +64,6 @@ "BULLET_LIST": "Bullet List", "ORDERED_LIST": "Ordered List", "TABLE": "Table", - "IMAGE": "Image" + "IMAGE": "Immagine" } } diff --git a/app/javascript/dashboard/i18n/locale/it/contact.json b/app/javascript/dashboard/i18n/locale/it/contact.json index 504b8e877..d904c178f 100644 --- a/app/javascript/dashboard/i18n/locale/it/contact.json +++ b/app/javascript/dashboard/i18n/locale/it/contact.json @@ -20,8 +20,8 @@ "CALL": "Chiama", "CALL_INITIATED": "Chiamando il contatto…", "CALL_FAILED": "Impossibile avviare la chiamata. Riprova.", - "WHATSAPP_CALL_PERMISSION_REQUESTED": "Sent a call permission request to the contact. Try again once they accept.", - "WHATSAPP_CALL_PERMISSION_PENDING": "Call permission request already sent recently. Try again once the contact accepts.", + "WHATSAPP_CALL_PERMISSION_REQUESTED": "Inviata una richiesta di autorizzazione di chiamata al contatto. Riprova una volta accettata.", + "WHATSAPP_CALL_PERMISSION_PENDING": "Richiesta di autorizzazione chiamata già inviata di recente. Riprova una volta che il contatto accetta.", "CLICK_TO_EDIT": "Clicca per modificare", "VOICE_INBOX_PICKER": { "TITLE": "Scegli una inbox vocale" @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributi", "HISTORY": "Cronologia", "NOTES": "Note", + "MEDIA": "Media", "MERGE": "Unisci" }, "HISTORY": { @@ -585,11 +586,11 @@ }, "CONTACTS_BULK_ACTIONS": { "ASSIGN_LABELS": "Assegna Etichette", - "REMOVE_LABELS": "Remove Labels", + "REMOVE_LABELS": "Rimuovi Etichette", "ASSIGN_LABELS_SUCCESS": "Etichette assegnate correttamente.", "ASSIGN_LABELS_FAILED": "Assegnazione delle etichette non riuscita", - "REMOVE_LABELS_SUCCESS": "Labels removed successfully.", - "REMOVE_LABELS_FAILED": "Failed to remove labels", + "REMOVE_LABELS_SUCCESS": "Etichette rimosse correttamente.", + "REMOVE_LABELS_FAILED": "Impossibile rimuovere le etichette", "DESCRIPTION": "Selezionare le etichette da aggiungere ai contatti selezionati.", "NO_LABELS_FOUND": "Nessuna etichetta disponibile.", "SELECTED_COUNT": "{count} selezionate", diff --git a/app/javascript/dashboard/i18n/locale/it/conversation.json b/app/javascript/dashboard/i18n/locale/it/conversation.json index 663e1e902..5c58075ca 100644 --- a/app/javascript/dashboard/i18n/locale/it/conversation.json +++ b/app/javascript/dashboard/i18n/locale/it/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "È possibile rispondere a questa conversazione solo utilizzando un messaggio modello a causa di", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restrizione finestra messaggio 24 ore", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Questo account Instagram è stato migrato alla nuova Inbox del canale Instagram. Tutti i nuovi messaggi verranno visualizzati lì. Non sarà più possibile inviare messaggi da questa conversazione.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Stai rispondendo a:", "REMOVE_SELECTION": "Rimuovi Selezione", "DOWNLOAD": "Scarica", @@ -62,7 +64,7 @@ "UNSUPPORTED_MESSAGE_FACEBOOK": "Questo messaggio non è supportato. Puoi visualizzare questo messaggio sull'app Facebook Messenger.", "UNSUPPORTED_MESSAGE_INSTAGRAM": "Questo messaggio non è supportato. Puoi visualizzare questo messaggio sull'app Instagram.", "UNSUPPORTED_MESSAGE_TIKTOK": "Questo messaggio non è supportato. Puoi visualizzare questo messaggio sull'app TikTok.", - "UNSUPPORTED_MESSAGE_WHATSAPP": "This message is unsupported. You can view this message on the WhatsApp app.", + "UNSUPPORTED_MESSAGE_WHATSAPP": "Questo messaggio non è supportato. Puoi visualizzare questo messaggio sull'app WhatsApp.", "SUCCESS_DELETE_MESSAGE": "Messaggio eliminato con successo", "FAIL_DELETE_MESSSAGE": "Impossibile eliminare il messaggio! Riprova", "NO_RESPONSE": "Nessuna risposta", @@ -81,20 +83,20 @@ "CALL_IN_PROGRESS": "Chiamata in corso", "NO_ANSWER": "Nessuna risposta", "NO_ANSWER_OUTBOUND_LABEL": "Nessuna risposta", - "NO_ANSWER_OUTBOUND_SUBTEXT": "Contact didn't pick up", + "NO_ANSWER_OUTBOUND_SUBTEXT": "Il contatto non ha risposto", "MISSED_CALL": "Chiamata persa", - "MISSED_CALL_INBOUND_SUBTEXT": "No agent picked up", - "MISSED_CALL_DECLINED_BY": "Declined by {agentName}", + "MISSED_CALL_INBOUND_SUBTEXT": "Nessun operatore ha risposto", + "MISSED_CALL_DECLINED_BY": "Rifiutata da {agentName}", "CALL_ENDED": "Chiamata terminata", - "HANDLED_BY": "Handled by {agentName}", + "HANDLED_BY": "Gestita da {agentName}", "NOT_ANSWERED_YET": "Non ancora risposta", - "CALLING": "Calling…", + "CALLING": "Chiamata in corso…", "THEY_ANSWERED": "Hanno risposto", "YOU_ANSWERED": "Hai risposto", "AGENT_ANSWERED": "{agentName} ha risposto", "JOIN_CALL": "Entra nella chiamata", - "CALL_BACK": "Call back", - "TRANSCRIPT_SHOW_MORE": "Show more", + "CALL_BACK": "Richiama", + "TRANSCRIPT_SHOW_MORE": "Mostra di più", "TRANSCRIPT_SHOW_LESS": "Mostra meno" }, "HEADER": { @@ -110,12 +112,12 @@ "SNOOZED_UNTIL_TOMORROW": "Posticipata fino a domani", "SNOOZED_UNTIL_NEXT_WEEK": "Posticipata fino alla prossima settimana", "SNOOZED_UNTIL_NEXT_REPLY": "Posticipata fino alla prossima risposta", - "WHATSAPP_CALL": "Start WhatsApp call", - "WHATSAPP_CALL_FAILED": "Could not start the WhatsApp call.", - "VOICE_CALL": "Start call", - "VOICE_CALL_FAILED": "Could not start the call.", - "WHATSAPP_CALL_PERMISSION_REQUESTED": "Sent a call permission request to the contact. Try again once they accept.", - "WHATSAPP_CALL_PERMISSION_PENDING": "Call permission request already sent recently. Try again once the contact accepts.", + "WHATSAPP_CALL": "Avvia chiamata WhatsApp", + "WHATSAPP_CALL_FAILED": "Impossibile avviare la chiamata WhatsApp.", + "VOICE_CALL": "Avvia chiamata", + "VOICE_CALL_FAILED": "Impossibile avviare la chiamata.", + "WHATSAPP_CALL_PERMISSION_REQUESTED": "Inviata una richiesta di autorizzazione di chiamata al contatto. Riprova una volta accettata.", + "WHATSAPP_CALL_PERMISSION_PENDING": "Richiesta di autorizzazione chiamata già inviata di recente. Riprova una volta che il contatto accetta.", "SLA_STATUS": { "FRT": "FRT {status}", "NRT": "NRT {status}", @@ -231,8 +233,9 @@ "TIP_AUDIORECORDER_ICON": "Registra audio", "TIP_AUDIORECORDER_PERMISSION": "Consenti l'accesso all'audio", "TIP_AUDIORECORDER_ERROR": "Impossibile aprire l'audio", - "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", + "AUDIO_CONVERSION_FAILED": "Conversione audio non riuscita. Riprova.", "DRAG_DROP": "Trascina qui per allegare", + "IMAGE_UPLOAD_SUCCESS": "Immagine caricata correttamente", "START_AUDIO_RECORDING": "Avvia registrazione audio", "STOP_AUDIO_RECORDING": "Interrompi registrazione audio", "COPILOT_THINKING": "Copilot sta pensando", @@ -303,6 +306,25 @@ "MESSAGE": "Non puoi annullare questa azione", "DELETE": "Elimina", "CANCEL": "Annulla" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Descrizione", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -319,10 +341,10 @@ "DISMISS_CALL": "Ignora", "JOIN_CALL": "Entra nella chiamata", "END_CALL": "Termina chiamata", - "MUTE": "Mute mic", - "UNMUTE": "Unmute mic", - "VIEW_CHAT_HISTORY": "View chat history", - "GO_TO_CONVERSATION": "Go to conversation thread" + "MUTE": "Silenzia microfono", + "UNMUTE": "Riattiva microfono", + "VIEW_CHAT_HISTORY": "Visualizza cronologia chat", + "GO_TO_CONVERSATION": "Vai alla conversazione" } }, "EMAIL_TRANSCRIPT": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Vedi tutti", "SHOW_LESS": "Mostra meno", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "File senza titolo" + "UNTITLED_FILE": "File senza titolo", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Ordine #{id}", diff --git a/app/javascript/dashboard/i18n/locale/it/emoji.json b/app/javascript/dashboard/i18n/locale/it/emoji.json index bd9cb3a4b..2fd5e1c94 100644 --- a/app/javascript/dashboard/i18n/locale/it/emoji.json +++ b/app/javascript/dashboard/i18n/locale/it/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Cerca emoji", "NOT_FOUND": "Nessuna emoji corrisponde alla tua ricerca", "REMOVE": "Rimuovi" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Nessuna emoji corrisponde alla tua ricerca", + "NO_ICON": "No icons match your search", + "REMOVE": "Rimuovi", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/it/generalSettings.json b/app/javascript/dashboard/i18n/locale/it/generalSettings.json index 5b12db78b..2df5364a8 100644 --- a/app/javascript/dashboard/i18n/locale/it/generalSettings.json +++ b/app/javascript/dashboard/i18n/locale/it/generalSettings.json @@ -93,7 +93,7 @@ "ERROR": "" }, "AUTO_RESOLVE_IGNORE_WAITING": { - "LABEL": "Escludi conversazioni non partecipate", + "LABEL": "Escludi conversazioni senza risposta", "HELP": "Se abilitato, il sistema salterà la risoluzione delle conversazioni che sono ancora in attesa della risposta di un operatore." }, "AUDIO_TRANSCRIPTION": { diff --git a/app/javascript/dashboard/i18n/locale/it/helpCenter.json b/app/javascript/dashboard/i18n/locale/it/helpCenter.json index e2ebb85d5..cc8c57b6a 100644 --- a/app/javascript/dashboard/i18n/locale/it/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/it/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Pubblicato", "ARCHIVED": "Archiviato" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Senza categoria" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Tutte le lingue" }, + "SEARCH_PLACEHOLDER": "Cerca articoli...", "NEW_ARTICLE": "Nuovo articolo" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Non ci sono articoli in questa categoria", "SUBTITLE": "Gli articoli in questa categoria appariranno qui" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,8 +618,10 @@ "DELETE": "Elimina", "STATUS_SUCCESS": "Articoli aggiornati correttamente", "STATUS_ERROR": "Impossibile aggiornare gli articoli", - "CATEGORY_SUCCESS": "Articles moved successfully", - "CATEGORY_ERROR": "Failed to move articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", + "CATEGORY_SUCCESS": "Articoli spostati correttamente", + "CATEGORY_ERROR": "Impossibile spostare gli articoli", "DELETE_CONFIRM_TITLE": "Elimina articolo | Elimina {count} articoli", "DELETE_CONFIRM_DESCRIPTION": "Questo eliminerà definitivamente l'articolo selezionato. Questa azione non può essere annullata. | Questo eliminerà definitivamente {count} articoli selezionati. Questa azione non può essere annullata.", "DELETE_CONFIRM": "Elimina", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nuova categoria", "EDIT_CATEGORY": "Modifica categoria", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} categoria | {n} categorie", "BREADCRUMB": { "CATEGORY_LOCALE": "Categorie ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nessuna categoria trovata", "SUBTITLE": "Le categorie appariranno qui. Puoi aggiungere una categoria cliccando sul pulsante 'Nuova Categoria'." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} articolo | {count} articoli" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Nessuna lingua disponibile | {n} lingua | {n} lingue", "NEW_LOCALE_BUTTON_TEXT": "Nuova lingua", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} articolo | {count} articoli", "CATEGORIES_COUNT": "{count} categoria | {count} categorie", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Imposta predefinito", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localizza/traduci il contenuto", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Elimina" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Cerca...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Senza categoria" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localizza/traduci il contenuto", + "DESCRIPTION": "Imposta valori specifici per questa lingua. Qualsiasi cosa lasciata vuota ritorna ala lingua predefinito.", + "NAME": { + "LABEL": "Nome" + }, + "PAGE_TITLE": { + "LABEL": "Titolo della pagina" + }, + "HEADER_TEXT": { + "LABEL": "Testo intestazione" + }, + "API": { + "SUCCESS_MESSAGE": "Contenuto della lingua aggiornato con successo", + "ERROR_MESSAGE": "Impossibile aggiornare il contenuto della lingua. Riprova." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Aggiungi una nuova lingua", "DESCRIPTION": "Seleziona la lingua in cui questo articolo verrà scritto. Questo sarà aggiunto alla tua lista di traduzioni e puoi aggiungerne di più in seguito.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Anteprima", "PUBLISH": "Pubblica", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Bozza", "ARCHIVE": "Archivia", "BACK_TO_ARTICLES": "Torna agli articoli" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Titolo" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Altre proprietà", "UNCATEGORIZED": "Senza categoria", @@ -871,22 +952,22 @@ }, "LAYOUT_CONTENT": { "HEADER": "Aspetto", - "DESCRIPTION": "Pick the layout that fits how your visitors read.", + "DESCRIPTION": "Scegli il layout che si adatta a come i tuoi visitatori leggono.", "LAYOUT": { "CLASSIC": { - "TITLE": "Classic", - "DESCRIPTION": "A welcoming home page with search and featured topics." + "TITLE": "Classico", + "DESCRIPTION": "Una home page accogliente con ricerca e argomenti in evidenza." }, "SIDEBAR": { - "TITLE": "Documentation", - "DESCRIPTION": "Side-by-side navigation that keeps every guide a click away." + "TITLE": "Documentazione", + "DESCRIPTION": "Navigazione side-by-side che mantiene ogni guida a portata di click." } }, "SOCIAL_LINKS": { - "HEADER": "Social links", - "DESCRIPTION": "Add the handle for each network and your help center builds the full link. Shown in the documentation layout footer.", + "HEADER": "Link social", + "DESCRIPTION": "Aggiungi l'handle per ogni social network e il tuo help center genera il link completo. Mostrato nel footer del layout della documentazione.", "PLACEHOLDER": "handle", - "ADD": "Add social link", + "ADD": "Aggiungi link social", "REMOVE": "Rimuovi" }, "SAVE": "Salva modifiche" diff --git a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json index cbe0960a3..ebd3de9c4 100644 --- a/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/it/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Si è verificato un errore nella connessione a Instagram, riprova", "ERROR_AUTH": "Si è verificato un errore nella connessione a Instagram, riprova", "NEW_INBOX_SUGGESTION": "Questo account Instagram era precedentemente collegato a una Inbox diversa ed è stato ora migrato qui. Tutti i nuovi messaggi appariranno qui. La vecchia Inbox non sarà più in grado di inviare o ricevere messaggi per questo account.", - "DUPLICATE_INBOX_BANNER": "Questo account Instagram è stato migrato alla nuova Inbox del canale Instagram. Non sarai più in grado di inviare/ricevere messaggi Instagram da questa Inbox." + "DUPLICATE_INBOX_BANNER": "Questo account Instagram è stato migrato alla nuova Inbox del canale Instagram. Non sarai più in grado di inviare/ricevere messaggi Instagram da questa Inbox.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continua con TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connetti il tuo profilo TikTok", "HELP": "Per aggiungere il tuo profilo TikTok come canale, devi autenticare il tuo profilo TikTok cliccando su 'Continua con TikTok' ", "ERROR_MESSAGE": "Si è verificato un errore nella connessione a TikTok, riprova", - "ERROR_AUTH": "Si è verificato un errore nella connessione a TikTok, riprova" + "ERROR_AUTH": "Si è verificato un errore nella connessione a TikTok, riprova", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Per aggiungere il tuo profilo Twitter come canale, devi autenticare il tuo profilo Twitter cliccando su 'Accedi con Twitter' ", @@ -308,7 +311,7 @@ "AUTH_PROCESSING": "Autenticazione con Meta", "WAITING_FOR_BUSINESS_INFO": "Completa la configurazione aziendale nella finestra Meta...", "PROCESSING": "Configurazione del tuo account WhatsApp Business", - "ENABLING_CALLING": "Enabling WhatsApp Calling on your number…", + "ENABLING_CALLING": "Abilitando Chiamate WhatsApp sul tuo numero…", "LOADING_SDK": "Caricamento del Facebook SDK...", "CANCELLED": "Registrazione WhatsApp annullata", "SUCCESS_TITLE": "Account WhatsApp Business connesso!", @@ -319,7 +322,7 @@ "SUCCESS_FALLBACK": "Account WhatsApp Business è stato configurato con successo", "MANUAL_FALLBACK": "Se il tuo numero è già connesso alla WhatsApp Business Platform (API), o se sei un provider tecnologico, si prega di utilizzare il {link}", "MANUAL_LINK_TEXT": "flow di registrazione manuale", - "CALLING_ENABLE_FAILED": "Your WhatsApp inbox is ready, but voice calling couldn't be turned on — this number isn't enrolled in the WhatsApp Business Calling API yet. Reach out to Meta or your WhatsApp Business Solution Provider to onboard it, then turn calling on from the inbox's Calls settings." + "CALLING_ENABLE_FAILED": "La tua Inbox WhatsApp è pronta, ma la chiamata vocale non può essere attivata — questo numero non è ancora registrato nell'API di WhatsApp Business Calling. Contatta Meta o il tuo WhatsApp Business Solution Provider per risolvere, quindi attiva le chiamate dalle impostazioni di chiamata della Inbox." }, "API": { "ERROR_MESSAGE": "Impossibile salvare il canale WhatsApp" @@ -469,7 +472,7 @@ }, "WHATSAPP_CALL": { "TITLE": "Chiamata WhatsApp", - "DESCRIPTION": "Take voice calls on your WhatsApp number" + "DESCRIPTION": "Ricevi chiamate vocali sul tuo numero WhatsApp" }, "EMAIL": { "TITLE": "Email", @@ -644,7 +647,7 @@ "ACCOUNT_HEALTH": "Account Health", "CSAT": "CSAT", "VOICE": "Voce", - "CALLS": "Calls" + "CALLS": "Chiamate" }, "VOICE_CONFIGURATION": { "ENABLE_VOICE": { @@ -653,25 +656,29 @@ }, "CREDENTIALS": { "DESCRIPTION": "Le chiamate vocali richiedono credenziali API di Twilio. Queste vengono usate per generare token per le connessioni voce." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { "ENABLE": { - "LABEL": "Enable WhatsApp Calling", - "DESCRIPTION": "Allow agents to receive and place WhatsApp Cloud calls on this inbox. Customers can call this business number directly from WhatsApp." + "LABEL": "Abilita Chiamate WhatsApp", + "DESCRIPTION": "Consenti agli operatori di ricevere d effettuare chiamate WhatsApp Cloud su questa Inbox. I clienti possono chiamare questo numero aziendale direttamente da WhatsApp." }, - "ENABLE_FAILED": "Voice calling couldn't be turned on for this number — it isn't enrolled in the WhatsApp Business Calling API yet. Reach out to Meta or your WhatsApp Business Solution Provider to onboard it, then try again.", + "ENABLE_FAILED": "Le chiamate vocali non possono essere attivate per questo numero — non è ancora registrato nell'API di WhatsApp Business Calling. Contatta Meta o il tuo WhatsApp Business Solution Provider per risolvere, quindi riprova.", "PHONE_NUMBER": { - "LABEL": "Business phone number", - "HELP_TEXT": "WhatsApp number that customers will call." + "LABEL": "Numero di telefono business", + "HELP_TEXT": "Numero WhatsApp che i clienti chiameranno." }, "HOW_IT_WORKS": { - "LABEL": "How it works", - "DESCRIPTION": "Calls are placed peer-to-peer between the agent's browser and Meta — no extra credentials are required. Make sure the agent's browser has microphone permission for this site." + "LABEL": "Come funziona", + "DESCRIPTION": "Le chiamate sono effettuate peer-to-peer tra il browser dell'operatore e Meta — non sono richieste credenziali aggiuntive. Assicurarsi che il browser dell'operatore abbia i permessi per il microfono per questo sito." }, "PERMISSION_REQUEST_BODY": { - "LABEL": "Call permission request message", - "HELP_TEXT": "Shown to the contact when they haven't yet consented to receive calls. Leave blank to use the default.", + "LABEL": "Messaggio di richiesta autorizzazione chiamata", + "HELP_TEXT": "Mostrato al contatto quando non ha ancora acconsentito a ricevere chiamate. Lasciare vuoto per usare il valore predefinito.", "PLACEHOLDER": "Vorremmo chiamarti riguardo alla tua conversazione." } }, @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "Questa Inbox è connessa tramite WhatsApp Embedded Signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "Puoi riconfigurare questa Inbox per aggiornare le impostazioni WhatsApp Business.", "WHATSAPP_RECONFIGURE_BUTTON": "Riconfigura", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID Account Business", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Chiave API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connetti a WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Passa alla WhatsApp Embedded Signup per una gestione più semplice.", "WHATSAPP_CONNECT_DESCRIPTION": "Collega questa Inbox a WhatsApp Business per avere funzionalità avanzate e una gestione più semplice.", @@ -827,9 +843,73 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Sincronizza manualmente i modelli di messaggi da WhatsApp per aggiornare i modelli disponibili.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sincronizza Modelli", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Sincronizzazione modelli iniziata. Potrebbe volerci qualche minuto per aggiornare.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Chiudi", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Aggiornato", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Numero di telefono visualizzato", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Aggiungi", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Numero di telefono", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Indietro", + "CANCEL": "Annulla", + "CONTINUE": "Continua", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { - "LABEL": "Enable voice calling", - "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." + "LABEL": "Abilita chiamate vocali", + "DESCRIPTION": "Consenti agli agenti di avviare e ricevere chiamate vocali WhatsApp su questa inbox. Disponibile solo sui canali WhatsApp Cloud embedded-signup con l'autorizzazione di chiamata concessa da Meta." }, "UPDATE_PRE_CHAT_FORM_SETTINGS": "Aggiorna le Impostazioni del Modulo Pre Chat" }, diff --git a/app/javascript/dashboard/i18n/locale/it/index.js b/app/javascript/dashboard/i18n/locale/it/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/it/index.js +++ b/app/javascript/dashboard/i18n/locale/it/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/it/integrationApps.json b/app/javascript/dashboard/i18n/locale/it/integrationApps.json index 58eec7080..4e95d0b06 100644 --- a/app/javascript/dashboard/i18n/locale/it/integrationApps.json +++ b/app/javascript/dashboard/i18n/locale/it/integrationApps.json @@ -46,7 +46,7 @@ "PLACEHOLDER": "Seleziona Inbox" }, "SUBMIT": "Crea", - "VALIDATING_OPENAI": "Validating with OpenAI...", + "VALIDATING_OPENAI": "Convalida con OpenAI...", "CANCEL": "Annulla" }, "API": { diff --git a/app/javascript/dashboard/i18n/locale/it/integrations.json b/app/javascript/dashboard/i18n/locale/it/integrations.json index 96f6bd0c0..8e4ac0f0f 100644 --- a/app/javascript/dashboard/i18n/locale/it/integrations.json +++ b/app/javascript/dashboard/i18n/locale/it/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Eventi Sottoscritti", "LEARN_MORE": "Scopri di più sui webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Aggiorna ora", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copia secret negli appunti", @@ -58,7 +65,7 @@ "CONTACT_UPDATED": "Contatto aggiornato", "CONVERSATION_TYPING_ON": "Digitazione conversazione attiva", "CONVERSATION_TYPING_OFF": "Digitazione conversazione disattiva", - "INBOX_UPDATED": "Inbox updated" + "INBOX_UPDATED": "Inbox aggiornata" } }, "NAME": { @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Scopri di più", + "OVERVIEW": { + "HEADER": "Panoramica", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Ignora" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Ignora" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "Questo mese", + "LAST_MONTH": "Il mese scorso" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Carica altro", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "FAQ In Attesa", + "DOCUMENTS": "Documenti" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Area di prova", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Fatturazione", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistenti", "SWITCH_ASSISTANT": "Cambia assistenti", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Inserisci il nome dell'assistente", "ERROR": "Il nome è richiesto" }, - "TEMPERATURE": { - "LABEL": "Temperatura della Risposta", - "DESCRIPTION": "Regola quanto dovrebbero essere creative o restrittive le risposte dell'assistente. I valori più bassi producono risposte più mirate e deterministiche, mentre i valori più elevati consentono di ottenere risultati più creativi e variegati." - }, "DESCRIPTION": { "LABEL": "Descrizione", "PLACEHOLDER": "Inserisci la descrizione dell'assistente", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documenti", "ADD_NEW": "Crea un nuovo documento", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selezionate", "SELECT_ALL": "Seleziona tutto ({count})", "UNSELECT_ALL": "Deseleziona tutto ({count})", @@ -783,7 +863,7 @@ "SYNC_STATUS": { "SYNCED": "ultimo aggiornamento {time}", "SYNCING": "aggiornamento...", - "STALE_SYNC": "update stalled", + "STALE_SYNC": "aggiornamento in stallo", "FAILED": "Sincronizzazione fallita", "NEVER_SYNCED": "non ancora aggiornato" }, @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "FAQ Correlate", - "DESCRIPTION": "Queste FAQ vengono generate direttamente dai Documenti." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Non disponibile", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copia", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Inserisci l'URL del documento per aggiungerlo come fonte e scegli l'assistente con cui associarlo.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Si è verificato un errore durante l'eliminazione del documento, riprova." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Visualizza FAQ Correlate", + "VIEW_DETAILS": "Visualizza dettagli", "SYNC_NOW": "Aggiorna ora", "RETRY_SYNC": "Riprova ad aggiornare", "DELETE_DOCUMENT": "Elimina Documento" diff --git a/app/javascript/dashboard/i18n/locale/it/onboarding.json b/app/javascript/dashboard/i18n/locale/it/onboarding.json index 33db70c63..46fa09324 100644 --- a/app/javascript/dashboard/i18n/locale/it/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/it/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Per favore compila tutti i campi obbligatori", "SUCCESS": "Dati salvati correttamente", "ERROR": "Impossibile salvare i dati. Per favore riprova." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continua", + "SKIP": "Salta", + "ERROR": "Qualcosa è andato storto. Per favore, riprova.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Pronto", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} categoria | {count} categorie", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connetti", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voce", + "VIEW_ALL": "Vedi tutti", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connetti", + "BACK": "Indietro", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/it/report.json b/app/javascript/dashboard/i18n/locale/it/report.json index f00e65df8..8a2db88b1 100644 --- a/app/javascript/dashboard/i18n/locale/it/report.json +++ b/app/javascript/dashboard/i18n/locale/it/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Rimuovi filtro", "EMPTY_LIST": "Nessun risultato trovato" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Carica altro", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Non assegnate", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Mostrando da {start} a {end} di {total} risultati", "PER_PAGE_TEMPLATE": "{size} / pagina" @@ -529,7 +549,7 @@ "HEADER": "Conversazioni aperte", "LOADING_MESSAGE": "Caricamento metriche conversazioni...", "OPEN": "Aperte", - "UNATTENDED": "Non partecipate", + "UNATTENDED": "Senza risposta", "UNASSIGNED": "Non assegnate", "PENDING": "In Sospeso" }, diff --git a/app/javascript/dashboard/i18n/locale/it/sessionLimit.json b/app/javascript/dashboard/i18n/locale/it/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/it/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/it/settings.json b/app/javascript/dashboard/i18n/locale/it/settings.json index c210c8872..e4c4e8836 100644 --- a/app/javascript/dashboard/i18n/locale/it/settings.json +++ b/app/javascript/dashboard/i18n/locale/it/settings.json @@ -86,9 +86,21 @@ "NOTE": "Gestisci funzionalità di sicurezza aggiuntive per il tuo account.", "MFA_BUTTON": "Gestisci Autenticazione A Due Fattori" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token di accesso", "NOTE": "Questo token può essere usato se stai costruendo un'integrazione basata su API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copia", "RESET": "Reset", "CONFIRM_RESET": "Sei sicuro?", @@ -113,9 +125,9 @@ "ASSIGNED": "Riceverai avvisi per le conversazioni assegnate a te.", "UNASSIGNED": "Riceverai avvisi per qualsiasi conversazione non assegnata.", "NOTME": "Riceverai avvisi per le conversazioni assegnate ad altri.", - "ASSIGNED+UNASSIGNED": "Riceverai avvisi per le conversazioni assegnate a te e per quelle non risposte.", + "ASSIGNED+UNASSIGNED": "Riceverai avvisi per le conversazioni assegnate a te e per quelle senza risposta.", "ASSIGNED+NOTME": "Riceverai avvisi per le conversazioni assegnate a te e agli altri, ma non per quelle non assegnate.", - "NOTME+UNASSIGNED": "Riceverai avvisi per conversazioni non risposte e per quelle assegnate ad altri.", + "NOTME+UNASSIGNED": "Riceverai avvisi per conversazioni senza risposta e per quelle assegnate ad altri.", "ASSIGNED+NOTME+UNASSIGNED": "Riceverai avvisi per tutte le conversazioni." }, "ALERT_TYPE": { @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Tutte le Aziende", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistenti", + "CAPTAIN_OVERVIEW": "Panoramica", "CAPTAIN_DOCUMENTS": "Documenti", "CAPTAIN_RESPONSES": "FAQ", "CAPTAIN_TOOLS": "Strumenti", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifiche", "CANNED_RESPONSES": "Risposte Predefinite", "INTEGRATIONS": "Integrazioni", + "DATA": "Data", "PROFILE_SETTINGS": "Impostazioni Profilo", "ACCOUNT_SETTINGS": "Impostazioni Account", "APPLICATIONS": "Applicazioni", @@ -379,11 +393,124 @@ "INFO_TEXT": "Consenti al sistema di impostarti automaticamente offline quando non utilizzi l'app o la dashboard.", "INFO_SHORT": "Imposta automaticamente offline quando non stai usando l'app." }, + "SORT_TOOLTIP": "Ordina", + "SORT_BY": "Ordina per", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Leggi i documenti", "SECURITY": "Sicurezza", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Workflow Conversazione" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importa", + "EXPORT": "Esporta" + }, + "TYPES": { + "CONTACTS": "Contatti", + "CONVERSATIONS": "Conversazioni", + "MESSAGES": "Messaggi" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Annulla", + "IMPORT": "Importa" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "In arrivo" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importa", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nome", + "TYPE": "Tipo", + "STATUS": "Stato", + "IMPORTED": "Imported", + "CREATED": "Creato il", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Creato il", + "DURATION": "Durata", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Ultimo aggiornamento {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Tutte", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Messaggio" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Ultimo aggiornamento {time}", + "REFRESH": "Aggiorna", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completata", + "completed_with_errors": "Completed with errors", + "failed": "Non Riuscito", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Impostazioni Captain", "DESCRIPTION": "Configura i tuoi modelli AI e le funzionalità di Captain. La fatturazione di Captain si basa sui crediti, che ti verranno scalati per ogni azione di Captain in base al modello selezionato.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Abilita o disabilita le funzionalità AI.", "AUDIO_TRANSCRIPTION": { "TITLE": "Trascrizione Audio", - "DESCRIPTION": "Converte automaticamente i messaggi vocali e le registrazioni delle chiamate in trascrizioni di testo ricercabili." + "DESCRIPTION": "Converte automaticamente i messaggi vocali e le registrazioni delle chiamate in trascrizioni di testo ricercabili.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Indicizzazione Ricerca Help Center", @@ -439,7 +568,18 @@ "TITLE": "Piano attuale", "PLAN_NOTE": "Sei attualmente abbonato al piano **{plan}** con **{quantity}** licenze", "SEAT_COUNT": "Numero di seat", - "RENEWS_ON": "Si rinnova il" + "RENEWS_ON": "Si rinnova il", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Visualizza Prezzi", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Acquista Crediti", "LOADING": "Caricamento opzioni...", "FETCH_ERROR": "Impossibile caricare le opzioni crediti. Riprova.", + "RETRY": "Riprova", "PURCHASE_ERROR": "Impossibile elaborare l'acquisto. Riprova.", "PURCHASE_SUCCESS": "{credits} crediti aggiunti correttamente al tuo account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assegna max", "DURATION": "Conversazioni per operatore ogni" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Inbox aggiunte", "DESCRIPTION": "Aggiungi le inbox a cui applicare questa policy.", diff --git a/app/javascript/dashboard/i18n/locale/ja/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ja/advancedFilters.json index 97a2509cd..b82988cbb 100644 --- a/app/javascript/dashboard/i18n/locale/ja/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ja/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "値を入力", + "CONTACT_SEARCH_PLACEHOLDER": "連絡先を検索", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "等しい", "not_equal_to": "等しくない", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "担当者名", "INBOX_NAME": "受信トレイ名", "TEAM_NAME": "チーム名", + "CONTACT": "連絡先", "CONVERSATION_IDENTIFIER": "会話識別子", "CAMPAIGN_NAME": "キャンペーン名", "LABELS": "ラベル", diff --git a/app/javascript/dashboard/i18n/locale/ja/chatlist.json b/app/javascript/dashboard/i18n/locale/ja/chatlist.json index 98351d116..b4b17963b 100644 --- a/app/javascript/dashboard/i18n/locale/ja/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ja/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ja/companies.json b/app/javascript/dashboard/i18n/locale/ja/companies.json index e260c2166..65fcfead0 100644 --- a/app/javascript/dashboard/i18n/locale/ja/companies.json +++ b/app/javascript/dashboard/i18n/locale/ja/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ja/contact.json b/app/javascript/dashboard/i18n/locale/ja/contact.json index 763edb81b..40ea44b54 100644 --- a/app/javascript/dashboard/i18n/locale/ja/contact.json +++ b/app/javascript/dashboard/i18n/locale/ja/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "属性", "HISTORY": "履歴", "NOTES": "メモ", + "MEDIA": "Media", "MERGE": "マージ" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ja/conversation.json b/app/javascript/dashboard/i18n/locale/ja/conversation.json index 793f00cc8..1bc01b383 100644 --- a/app/javascript/dashboard/i18n/locale/ja/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ja/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "この会話にはテンプレートメッセージでしか返信できません。", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24時間以内のメッセージウィンドウの制限", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "以下に返信:", "REMOVE_SELECTION": "選択項目を削除", "DOWNLOAD": "ダウンロード", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "音声を開けませんでした", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "添付するにはここにドラッグ&ドロップ", + "IMAGE_UPLOAD_SUCCESS": "画像が正常にアップロードされました", "START_AUDIO_RECORDING": "音声録音を開始", "STOP_AUDIO_RECORDING": "音声録音を停止", "COPILOT_THINKING": "Copilotが考え中", @@ -303,6 +306,25 @@ "MESSAGE": "この操作は元に戻せません", "DELETE": "削除", "CANCEL": "キャンセル" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "説明", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "すべて表示", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ja/emoji.json b/app/javascript/dashboard/i18n/locale/ja/emoji.json index 8d37f088c..5f612044c 100644 --- a/app/javascript/dashboard/i18n/locale/ja/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ja/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "絵文字を検索", "NOT_FOUND": "検索条件に一致する絵文字が見つかりません", "REMOVE": "削除" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "検索条件に一致する絵文字が見つかりません", + "NO_ICON": "No icons match your search", + "REMOVE": "削除", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ja/helpCenter.json b/app/javascript/dashboard/i18n/locale/ja/helpCenter.json index 0ef035f64..72feee670 100644 --- a/app/javascript/dashboard/i18n/locale/ja/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ja/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "公開済み", "ARCHIVED": "アーカイブ" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "未分類" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "すべてのロケール" }, + "SEARCH_PLACEHOLDER": "記事を検索...", "NEW_ARTICLE": "新しい記事" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "このカテゴリーには記事がありません", "SUBTITLE": "このカテゴリーの記事はここに表示されます" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "削除", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "新しいカテゴリー", "EDIT_CATEGORY": "カテゴリーを編集", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} カテゴリー | {n} カテゴリー", "BREADCRUMB": { "CATEGORY_LOCALE": "カテゴリー ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "カテゴリーが見つかりません", "SUBTITLE": "カテゴリーはここに表示されます。「新しいカテゴリー」ボタンをクリックしてカテゴリーを追加できます。" }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} 記事 | {count} 記事" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "利用可能なロケールはありません | {n} ロケール | {n} ロケール", "NEW_LOCALE_BUTTON_TEXT": "新しいロケール", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} 記事 | {count} 記事", "CATEGORIES_COUNT": "{count} カテゴリー | {count} カテゴリー", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "デフォルトに設定", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "削除" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "検索...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "未分類" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "名前" + }, + "PAGE_TITLE": { + "LABEL": "ページタイトル" + }, + "HEADER_TEXT": { + "LABEL": "ヘッダーテキスト" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "新しいロケールを追加", "DESCRIPTION": "この記事が書かれる言語を選択します。これが翻訳リストに追加され、後でさらに追加できます。", @@ -730,10 +791,30 @@ }, "PREVIEW": "プレビュー", "PUBLISH": "公開", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "下書き", "ARCHIVE": "アーカイブ", "BACK_TO_ARTICLES": "記事に戻る" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "タイトル" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "その他のプロパティ", "UNCATEGORIZED": "未分類", diff --git a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json index 34834bf90..30e0aa068 100644 --- a/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ja/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Twitterプロフィールをチャンネルとして追加するには、「Twitterでサインイン」をクリックしてTwitterプロフィールを認証する必要があります。", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ビジネスアカウントID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "APIキー", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "閉じる", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "追加", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "受信トレイ", + "PHONE_NUMBER": "電話番号", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "戻る", + "CANCEL": "キャンセル", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ja/index.js b/app/javascript/dashboard/i18n/locale/ja/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ja/index.js +++ b/app/javascript/dashboard/i18n/locale/ja/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ja/integrations.json b/app/javascript/dashboard/i18n/locale/ja/integrations.json index 27a67a84b..304f6e07d 100644 --- a/app/javascript/dashboard/i18n/locale/ja/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ja/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "購読イベント", "LEARN_MORE": "Webhookについて詳しく知る", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "今すぐアップグレード", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "キャプテン", "HEADER_KNOW_MORE": "詳細を見る", + "OVERVIEW": { + "HEADER": "概要", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "閉じる" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "閉じる" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "さらに読み込む", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "ドキュメント" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "プレイグラウンド", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "請求", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "アシスタント", "SWITCH_ASSISTANT": "アシスタントを切り替える", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "説明", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "ドキュメント", "ADD_NEW": "新しいドキュメントを作成", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "関連するFAQ", - "DESCRIPTION": "これらのFAQはドキュメントから直接生成されます。" + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "離席中", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "コピー", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "ドキュメントのURLを入力して知識ソースとして追加し、それに関連付けるアシスタントを選択してください。", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "ドキュメントの削除中にエラーが発生しました。もう一度お試しください。" }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "関連する応答を表示", + "VIEW_DETAILS": "詳細を表示", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "ドキュメントを削除" diff --git a/app/javascript/dashboard/i18n/locale/ja/onboarding.json b/app/javascript/dashboard/i18n/locale/ja/onboarding.json index d1891b745..235f4a4cc 100644 --- a/app/javascript/dashboard/i18n/locale/ja/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ja/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "ヘルプセンター", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} カテゴリー | {count} カテゴリー", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "接続", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Eメール", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "すべて表示", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "接続", + "BACK": "戻る", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ja/report.json b/app/javascript/dashboard/i18n/locale/ja/report.json index 9811ee1c0..ebec4c7e1 100644 --- a/app/javascript/dashboard/i18n/locale/ja/report.json +++ b/app/javascript/dashboard/i18n/locale/ja/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "フィルターをクリア", "EMPTY_LIST": "結果が見つかりません" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "さらに読み込む", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "未割当", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "{start}件から{end}件まで表示中(全{total}件)", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ja/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ja/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ja/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ja/settings.json b/app/javascript/dashboard/i18n/locale/ja/settings.json index abc8872e2..ed6f67941 100644 --- a/app/javascript/dashboard/i18n/locale/ja/settings.json +++ b/app/javascript/dashboard/i18n/locale/ja/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "アクセストークン", "NOTE": "このトークンは、API連携を構築する場合に利用します。", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "コピー", "RESET": "リセット", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "キャプテン", "CAPTAIN_ASSISTANTS": "アシスタント", + "CAPTAIN_OVERVIEW": "概要", "CAPTAIN_DOCUMENTS": "ドキュメント", "CAPTAIN_RESPONSES": "FAQ", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "通知", "CANNED_RESPONSES": "定型文", "INTEGRATIONS": "連携", + "DATA": "Data", "PROFILE_SETTINGS": "プロフィール設定", "ACCOUNT_SETTINGS": "アカウント設定", "APPLICATIONS": "アプリケーション", @@ -379,11 +393,124 @@ "INFO_TEXT": "アプリやダッシュボードを使用していない場合に、システムが自動的にオフラインに設定します。", "INFO_SHORT": "使用していない場合、自動的にオフラインにします。" }, + "SORT_TOOLTIP": "並び替え", + "SORT_BY": "並び替え", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "ドキュメントを読む", "SECURITY": "Security", "CAPTAIN_AI": "キャプテン", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "インポート", + "EXPORT": "エクスポート" + }, + "TYPES": { + "CONTACTS": "連絡先", + "CONVERSATIONS": "会話データ", + "MESSAGES": "メッセージ" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "キャンセル", + "IMPORT": "インポート" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "インポート", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "名前", + "TYPE": "タイプ", + "STATUS": "状況", + "IMPORTED": "Imported", + "CREATED": "作成日時", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "作成日時", + "DURATION": "期間", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "すべて", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "メッセージ" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "再読み込み", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "完了", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "現在のプラン", "PLAN_NOTE": "現在**{plan}**プランに**{quantity}**ライセンスでご加入中です。", "SEAT_COUNT": "シート数", - "RENEWS_ON": "更新日" + "RENEWS_ON": "更新日", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "料金を表示", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/ka/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ka/advancedFilters.json index a991cb25b..5d33f7215 100644 --- a/app/javascript/dashboard/i18n/locale/ka/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ka/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "კონტაქტი", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/ka/chatlist.json b/app/javascript/dashboard/i18n/locale/ka/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/ka/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ka/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ka/companies.json b/app/javascript/dashboard/i18n/locale/ka/companies.json index 604c88fe9..c0c81b06e 100644 --- a/app/javascript/dashboard/i18n/locale/ka/companies.json +++ b/app/javascript/dashboard/i18n/locale/ka/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ka/contact.json b/app/javascript/dashboard/i18n/locale/ka/contact.json index 6658c299f..288cbe54d 100644 --- a/app/javascript/dashboard/i18n/locale/ka/contact.json +++ b/app/javascript/dashboard/i18n/locale/ka/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ka/conversation.json b/app/javascript/dashboard/i18n/locale/ka/conversation.json index fbb860750..954ee46e3 100644 --- a/app/javascript/dashboard/i18n/locale/ka/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ka/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "ეს Instagram ანგარიში გადატანილია ახალი Instagram არხის საფოსტო ყუთში. ყველა ახალი შეტყობინება გამოჩნდება იქ. თქვენ ვეღარ შეძლებთ შეტყობინებების გაგზავნას ამ საუბრიდან.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "You are replying to:", "REMOVE_SELECTION": "Remove Selection", "DOWNLOAD": "Download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "სურათი წარმატებით აიტვირთა", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "კოპილოტი ფიქრობს", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ka/emoji.json b/app/javascript/dashboard/i18n/locale/ka/emoji.json index d5b96f0f9..71f72143f 100644 --- a/app/javascript/dashboard/i18n/locale/ka/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ka/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "წაშლა", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ka/helpCenter.json b/app/javascript/dashboard/i18n/locale/ka/helpCenter.json index 6b885b115..06e1621f0 100644 --- a/app/javascript/dashboard/i18n/locale/ka/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ka/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "გამოქვეყნებული", "ARCHIVED": "არქივირებული" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "კატეგორიის გარეშე" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "ყველა ლოკაცია" }, + "SEARCH_PLACEHOLDER": "სტატიების ძიება...", "NEW_ARTICLE": "ახალი სტატია" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "ამ კატეგორიაში სტატიები არ არის", "SUBTITLE": "ამ კატეგორიის სტატიები გამოჩნდება აქ" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "ახალი კატეგორია", "EDIT_CATEGORY": "კატეგორიის რედაქტირება", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} კატეგორია | {n} კატეგორიები", "BREADCRUMB": { "CATEGORY_LOCALE": "კატეგორიები ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "კატეგორიები ვერ მოიძებნა", "SUBTITLE": "კატეგორიები აქ გამოჩნდება. შეგიძლიათ დაამატოთ კატეგორია ღილაკზე „ახალი კატეგორია“ დაჭერით." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} სტატია | {count} სტატიები" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "ლოკალები არ არის | {n} ლოკალი | {n} ლოკალები", "NEW_LOCALE_BUTTON_TEXT": "ახალი ლოკალი", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} სტატია | {count} სტატიები", "CATEGORIES_COUNT": "{count} კატეგორია | {count} კატეგორიები", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "დაყენება როგორც ნაგულისხმები", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "წაშლა" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "უჯგუფო" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "გვერდის სათაური" + }, + "HEADER_TEXT": { + "LABEL": "სათაურის ტექსტი" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "ახალი ლოკალის დამატება", "DESCRIPTION": "აირჩიეთ ენა, რომელშიც ეს სტატია დაიწერება. ეს დაემატება თქვენს თარგმნების სიას და შემდგომ შეგიძლიათ დაამატოთ მეტი.", @@ -730,10 +791,30 @@ }, "PREVIEW": "წინასწარი ნახვა", "PUBLISH": "გამოქვეყნება", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "სავარაუდო ვერსია", "ARCHIVE": "არქივი", "BACK_TO_ARTICLES": "უკან სტატიებთან" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "მეტი თვისებები", "UNCATEGORIZED": "კატეგორიის გარეშე", diff --git a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json index 2aa0ad39e..a0bb3935d 100644 --- a/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ka/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram-თან დაკავშირებისას მოხდა შეცდომა, გთხოვთ, სცადეთ თავიდან", "ERROR_AUTH": "Instagram-თან დაკავშირებისას მოხდა შეცდომა, გთხოვთ, სცადეთ თავიდან", "NEW_INBOX_SUGGESTION": "ეს Instagram ანგარიში ადრე დაკავშირებული იყო სხვა ინბოქსთან და ახლა აქ გადატანილია. ყველა ახალი შეტყობინება გამოჩნდება აქ. ძველი ინბოქსი აღარ შეძლებს ამ ანგარიშისთვის შეტყობინებების გაგზავნას ან მიღებას.", - "DUPLICATE_INBOX_BANNER": "ეს Instagram ანგარიში გადატანილია ახალ Instagram არხის ინბოქსში. ამ ინბოქსიდან Instagram შეტყობინებების გაგზავნა/მიღება აღარ იქნება შესაძლებელი." + "DUPLICATE_INBOX_BANNER": "ეს Instagram ანგარიში გადატანილია ახალ Instagram არხის ინბოქსში. ამ ინბოქსიდან Instagram შეტყობინებების გაგზავნა/მიღება აღარ იქნება შესაძლებელი.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "გაგრძელება TikTok-ით", "CONNECT_YOUR_TIKTOK_PROFILE": "დაკავშირეთ თქვენი TikTok პროფილი", "HELP": "თქვენი TikTok პროფილის არხად დასამატებლად, საჭიროა ავთენტიფიცირება TikTok პროფილზე, დააჭირეთ 'გაგრძელება TikTok-ით' ", "ERROR_MESSAGE": "TikTok-თან დაკავშირებისას მოხდა შეცდომა, გთხოვთ, სცადეთ თავიდან", - "ERROR_AUTH": "TikTok-თან დაკავშირებისას მოხდა შეცდომა, გთხოვთ, სცადეთ თავიდან" + "ERROR_AUTH": "TikTok-თან დაკავშირებისას მოხდა შეცდომა, გთხოვთ, სცადეთ თავიდან", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "თქვენი Twitter პროფილის არხად დასამატებლად, საჭიროა Twitter პროფილის ავთენტიფიკაცია, დააჭირეთ 'Sign in with Twitter'-ს ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "ეს ინბოქსი დაკავშირებულია WhatsApp-ის ჩაშენებული რეგისტრაციის მეშვეობით.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "შეგიძლიათ ხელახლა დააყენოთ ეს ინბოქსი თქვენი WhatsApp Business-ის პარამეტრების განახლებისთვის.", "WHATSAPP_RECONFIGURE_BUTTON": "ხელახლა დააყენე", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ბიზნეს ანგარიშის ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API გასაღები", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "დაკავშირება WhatsApp Business-თან", "WHATSAPP_CONNECT_SUBHEADER": "გააუმჯობესეთ WhatsApp-ის ჩაშენებული რეგისტრაციით მარტივი მართვისთვის.", "WHATSAPP_CONNECT_DESCRIPTION": "დააკავშირეთ ეს ინბოქსი WhatsApp Business-თან გაფართოებული ფუნქციებისა და მარტივი მართვისთვის.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "ხელით სინქრონიზაცია WhatsApp-ისგან, რათა განაახლოთ ხელმისაწვდომი შაბლონები.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "შაბლონების სინქრონიზაცია", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "შაბლონების სინქრონიზაცია წარმატებით დაიწყო. განახლება შეიძლება რამდენიმე წუთი გაგრძელდეს.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Close", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "ტელეფონის ნომრის ჩვენება", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "ტელეფონის ნომერი", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "გაგრძელება", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ka/index.js b/app/javascript/dashboard/i18n/locale/ka/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ka/index.js +++ b/app/javascript/dashboard/i18n/locale/ka/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ka/integrations.json b/app/javascript/dashboard/i18n/locale/ka/integrations.json index 78471d977..05e7cfce7 100644 --- a/app/javascript/dashboard/i18n/locale/ka/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ka/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "გამოწერილი მოვლენები", "LEARN_MORE": "გაიგეთ მეტი webhook-ების შესახებ", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "საიდუმლო", "COPY": "საიდუმლოს კოპირება კლიპბორდზე", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "კაპიტანი", "HEADER_KNOW_MORE": "გაიგე მეტი", + "OVERVIEW": { + "HEADER": "მიმოხილვა", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "მოლოდინში FAQ-ები", + "DOCUMENTS": "დოკუმენტები" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "სათამაშო მოედანი", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "გადახდები", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "მხარდაჭერები", "SWITCH_ASSISTANT": "გაართეთ მხარდაჭერებს შორის", @@ -494,10 +577,6 @@ "PLACEHOLDER": "ჩაწერეთ ასისტენტის სახელი", "ERROR": "სახელი აუცილებელია" }, - "TEMPERATURE": { - "LABEL": "პასუხის ტემპერატურა", - "DESCRIPTION": "დაარეგულირეთ, თუ რამდენად კრეატიული ან შეზღუდული უნდა იყოს ასისტენტის პასუხები. დაბალი მნიშვნელობები იძლევა უფრო ფოკუსირებულ და დეტერმინისტულ პასუხებს, ხოლო მაღალი მნიშვნელობები საშუალებას აძლევს უფრო კრეატიულ და მრავალფეროვან პასუხებს." - }, "DESCRIPTION": { "LABEL": "აღწერა", "PLACEHOLDER": "ჩაწერეთ ასისტენტის აღწერა", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "დოკუმენტები", "ADD_NEW": "ახალი დოკუმენტის შექმნა", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} არჩეული", "SELECT_ALL": "ყველას არჩევა ({count})", "UNSELECT_ALL": "ყველას არჩევის გაუქმება ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "მიმართებული ხშირად დასმული კითხვები", - "DESCRIPTION": "ეს ხშირად დასმული კითხვები პირდაპირ დოკუმენტიდან არის გენერირებული." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "მიუწვდომელია", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "კოპირება", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "შეიყვანეთ დოკუმენტის URL, რომ დაამატოთ იგი ცოდნის წყაროდ და აირჩიეთ ასისტენტი, რომელთანაც დაკავშირება გსურთ.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "დოკუმენტის წაშლისას მოხდა შეცდომა, გთხოვთ, სცადეთ თავიდან." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "იხილეთ დაკავშირებული პასუხები", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "დოკუმენტის წაშლა" diff --git a/app/javascript/dashboard/i18n/locale/ka/onboarding.json b/app/javascript/dashboard/i18n/locale/ka/onboarding.json index ff3216ef9..233d58602 100644 --- a/app/javascript/dashboard/i18n/locale/ka/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ka/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "გაგრძელება", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "მზადაა", + "HELP_CENTER": "დახმარების ცენტრი", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} კატეგორია | {count} კატეგორიები", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "დაკავშირება", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "ხმოვანი", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "დაკავშირება", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ka/report.json b/app/javascript/dashboard/i18n/locale/ka/report.json index 5c5351f9f..9c9a7f884 100644 --- a/app/javascript/dashboard/i18n/locale/ka/report.json +++ b/app/javascript/dashboard/i18n/locale/ka/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ka/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ka/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ka/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ka/settings.json b/app/javascript/dashboard/i18n/locale/ka/settings.json index 118461266..b20486633 100644 --- a/app/javascript/dashboard/i18n/locale/ka/settings.json +++ b/app/javascript/dashboard/i18n/locale/ka/settings.json @@ -86,9 +86,21 @@ "NOTE": "მართეთ თქვენი ანგარიშის დამატებითი უსაფრთხოების ფუნქციები.", "MFA_BUTTON": "ორფაქტორიანი ავთენტიფიკაციის მართვა" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "წვდომის ტოკენი", "NOTE": "ეს ტოკენი გამოიყენება, თუ API ინტეგრაციას ქმნით", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copy", "RESET": "Reset", "CONFIRM_RESET": "დარწმუნებული ხართ?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "მიმოხილვა", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "ინსტრუმენტები", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "შეტყობინებები", "CANNED_RESPONSES": "შენახული პასუხები", "INTEGRATIONS": "ინტეგრაციები", + "DATA": "Data", "PROFILE_SETTINGS": "პროფილის პარამეტრები", "ACCOUNT_SETTINGS": "ანგარიშის პარამეტრები", "APPLICATIONS": "აპლიკაციები", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "სორტირება", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "უსაფრთხოება", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "კონტაქტები", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "შეცდომა", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "მაქსიმალური მინიჭება", "DURATION": "თითო აგენტზე საუბრები ყოველ" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "დამატებული ინბოქსები", "DESCRIPTION": "დაამატეთ ინბოქსები, რომლებზეც იმოქმედებს ეს პოლიტიკა.", diff --git a/app/javascript/dashboard/i18n/locale/ko/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ko/advancedFilters.json index d96a70031..11eded998 100644 --- a/app/javascript/dashboard/i18n/locale/ko/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ko/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "혹은" }, "INPUT_PLACEHOLDER": "값을 입력하십시오", + "CONTACT_SEARCH_PLACEHOLDER": "연락처 검색", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "동일한", "not_equal_to": "비동일한", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "담당자 이름", "INBOX_NAME": "받은 메시지함 이름", "TEAM_NAME": "팀 이름", + "CONTACT": "연락처", "CONVERSATION_IDENTIFIER": "대화 식별자", "CAMPAIGN_NAME": "캠페인 이름", "LABELS": "라벨", diff --git a/app/javascript/dashboard/i18n/locale/ko/chatlist.json b/app/javascript/dashboard/i18n/locale/ko/chatlist.json index 2db0c8944..7ff8d993a 100644 --- a/app/javascript/dashboard/i18n/locale/ko/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ko/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "우선순위: 높은 순, 생성일: 오래된 순" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ko/companies.json b/app/javascript/dashboard/i18n/locale/ko/companies.json index 11e6fbafa..031fd4c4c 100644 --- a/app/javascript/dashboard/i18n/locale/ko/companies.json +++ b/app/javascript/dashboard/i18n/locale/ko/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ko/contact.json b/app/javascript/dashboard/i18n/locale/ko/contact.json index aee9df6c3..432440ea9 100644 --- a/app/javascript/dashboard/i18n/locale/ko/contact.json +++ b/app/javascript/dashboard/i18n/locale/ko/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "속성", "HISTORY": "기록", "NOTES": "노트", + "MEDIA": "미디어", "MERGE": "합치기" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ko/conversation.json b/app/javascript/dashboard/i18n/locale/ko/conversation.json index 3f61ebf6c..a8b6450af 100644 --- a/app/javascript/dashboard/i18n/locale/ko/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ko/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "다음 사유로 인해 템플릿 메시지로만 이 대화에 답장할 수 있습니다", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24시간 메시지 창 제한", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "이 Instagram 계정은 새 Instagram 채널 받은 메시지함으로 마이그레이션되었습니다. 모든 새 메시지는 해당 받은 메시지함에 표시됩니다. 이 대화에서는 더 이상 메시지를 보낼 수 없습니다.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "회신할 대상:", "REMOVE_SELECTION": "선택 항목 제거", "DOWNLOAD": "다운로드", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "오디오를 열 수 없습니다", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "여기에 드래그 앤 드롭하여 첨부하십시오", + "IMAGE_UPLOAD_SUCCESS": "이미지가 성공적으로 업로드되었습니다", "START_AUDIO_RECORDING": "오디오 녹음 시작", "STOP_AUDIO_RECORDING": "오디오 녹음 중지", "COPILOT_THINKING": "Copilot이 생각하고 있습니다", @@ -303,6 +306,25 @@ "MESSAGE": "이 작업은 취소할 수 없습니다", "DELETE": "삭제", "CANCEL": "취소" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "설명", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "모두 보기", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "주문 #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ko/emoji.json b/app/javascript/dashboard/i18n/locale/ko/emoji.json index 194929887..0653b96b3 100644 --- a/app/javascript/dashboard/i18n/locale/ko/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ko/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "이모지 검색", "NOT_FOUND": "검색과 일치하는 이모지가 없습니다", "REMOVE": "제거" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "검색과 일치하는 이모지가 없습니다", + "NO_ICON": "No icons match your search", + "REMOVE": "제거", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ko/helpCenter.json b/app/javascript/dashboard/i18n/locale/ko/helpCenter.json index 3e2499f48..a0e915985 100644 --- a/app/javascript/dashboard/i18n/locale/ko/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ko/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "게시됨", "ARCHIVED": "보관됨" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "미분류" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "모든 로케일" }, + "SEARCH_PLACEHOLDER": "게시물 검색...", "NEW_ARTICLE": "새 게시물" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "이 카테고리에 게시물이 없습니다", "SUBTITLE": "이 카테고리의 게시물이 여기에 표시됩니다" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "삭제", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "새 카테고리", "EDIT_CATEGORY": "카테고리 수정", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n}개 카테고리 | {n}개 카테고리", "BREADCRUMB": { "CATEGORY_LOCALE": "카테고리 ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "카테고리를 찾을 수 없습니다", "SUBTITLE": "카테고리가 여기에 표시됩니다. '새 카테고리' 버튼을 클릭하여 카테고리를 추가할 수 있습니다." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count}개 게시물 | {count}개 게시물" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "사용 가능한 로케일 없음 | {n}개 로케일 | {n}개 로케일", "NEW_LOCALE_BUTTON_TEXT": "새 로케일", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count}개 게시물 | {count}개 게시물", "CATEGORIES_COUNT": "{count}개 카테고리 | {count}개 카테고리", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "기본값으로 설정", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "삭제" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "검색...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "미분류" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "이름" + }, + "PAGE_TITLE": { + "LABEL": "페이지 제목" + }, + "HEADER_TEXT": { + "LABEL": "헤더 텍스트" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "새 로케일 추가", "DESCRIPTION": "이 게시물이 작성될 언어를 선택하십시오. 번역 목록에 추가되며 나중에 더 추가할 수 있습니다.", @@ -730,10 +791,30 @@ }, "PREVIEW": "미리보기", "PUBLISH": "게시", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "임시 저장", "ARCHIVE": "보관", "BACK_TO_ARTICLES": "게시물로 돌아가기" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "제목" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "추가 속성", "UNCATEGORIZED": "카테고리가 지정되지 않음", diff --git a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json index 798ec0cc2..60f6e6a76 100644 --- a/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ko/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram에 연결하는 동안 오류가 발생했습니다. 다시 시도하십시오.", "ERROR_AUTH": "Instagram에 연결하는 동안 오류가 발생했습니다. 다시 시도하십시오.", "NEW_INBOX_SUGGESTION": "이 Instagram 계정은 이전에 다른 받은 메시지함에 연결되어 있었으며 현재 이곳으로 마이그레이션되었습니다. 모든 새 메시지가 여기에 표시됩니다. 이전 받은 메시지함에서는 더 이상 이 계정의 메시지를 보내거나 받을 수 없습니다.", - "DUPLICATE_INBOX_BANNER": "이 Instagram 계정은 새로운 Instagram 채널 받은 메시지함으로 마이그레이션되었습니다. 이 받은 메시지함에서는 더 이상 Instagram 메시지를 보내거나 받을 수 없습니다." + "DUPLICATE_INBOX_BANNER": "이 Instagram 계정은 새로운 Instagram 채널 받은 메시지함으로 마이그레이션되었습니다. 이 받은 메시지함에서는 더 이상 Instagram 메시지를 보내거나 받을 수 없습니다.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "TikTok으로 계속하기", "CONNECT_YOUR_TIKTOK_PROFILE": "TikTok 프로필 연결", "HELP": "TikTok 프로필을 채널로 추가하려면 'TikTok으로 계속하기'를 클릭하여 TikTok 프로필을 인증해야 합니다.", "ERROR_MESSAGE": "TikTok에 연결하는 동안 오류가 발생했습니다. 다시 시도하십시오.", - "ERROR_AUTH": "TikTok에 연결하는 동안 오류가 발생했습니다. 다시 시도하십시오." + "ERROR_AUTH": "TikTok에 연결하는 동안 오류가 발생했습니다. 다시 시도하십시오.", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "트위터 프로필을 채널로 추가하려면 '트위터로 로그인'을 클릭하여 트위터 프로필을 인증해야 합니다.", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "이 받은 메시지함은 WhatsApp 임베디드 가입을 통해 연결되었습니다.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "이 받은 메시지함을 다시 구성하여 WhatsApp Business 설정을 업데이트할 수 있습니다.", "WHATSAPP_RECONFIGURE_BUTTON": "다시 구성", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "비즈니스 계정 ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "WhatsApp Business에 연결", "WHATSAPP_CONNECT_SUBHEADER": "더 쉬운 관리를 위해 WhatsApp 임베디드 가입으로 업그레이드하십시오.", "WHATSAPP_CONNECT_DESCRIPTION": "향상된 기능과 더 쉬운 관리를 위해 이 받은 메시지함을 WhatsApp Business에 연결하십시오.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "WhatsApp에서 메시지 템플릿을 수동으로 동기화하여 사용 가능한 템플릿을 업데이트하십시오.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "템플릿 동기화", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "템플릿 동기화가 성공적으로 시작되었습니다. 업데이트되기까지 몇 분 정도 걸릴 수 있습니다.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "닫기", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "표시 전화 번호", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "추가", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "받은 메시지함", + "PHONE_NUMBER": "휴대폰 번호", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "뒤로", + "CANCEL": "취소", + "CONTINUE": "계속", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ko/index.js b/app/javascript/dashboard/i18n/locale/ko/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ko/index.js +++ b/app/javascript/dashboard/i18n/locale/ko/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ko/integrations.json b/app/javascript/dashboard/i18n/locale/ko/integrations.json index 03cae815a..10851bbff 100644 --- a/app/javascript/dashboard/i18n/locale/ko/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ko/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "구독된 이벤트", "LEARN_MORE": "webhook에 대해 자세히 알아보기", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "지금 업그레이드", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "시크릿을 클립보드에 복사", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "자세히 알아보기", + "OVERVIEW": { + "HEADER": "개요", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "닫기" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "닫기" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "이번 달", + "LAST_MONTH": "지난 달" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "더 불러오기", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "대기 중인 FAQ", + "DOCUMENTS": "문서" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "플레이그라운드", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "청구", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "어시스턴트", "SWITCH_ASSISTANT": "어시스턴트 간 전환", @@ -494,10 +577,6 @@ "PLACEHOLDER": "어시스턴트 이름을 입력하십시오", "ERROR": "이름은 필수입니다" }, - "TEMPERATURE": { - "LABEL": "응답 온도", - "DESCRIPTION": "어시스턴트의 응답이 얼마나 창의적이거나 제한적이어야 하는지 조정합니다. 낮은 값은 더 집중적이고 결정론적인 응답을 생성하고, 높은 값은 더 창의적이고 다양한 출력을 허용합니다." - }, "DESCRIPTION": { "LABEL": "설명", "PLACEHOLDER": "어시스턴트 설명을 입력하십시오", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "문서", "ADD_NEW": "새 문서 만들기", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count}개 선택됨", "SELECT_ALL": "전체 선택 ({count})", "UNSELECT_ALL": "전체 선택 해제 ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "관련 FAQ", - "DESCRIPTION": "이 FAQ는 문서에서 직접 생성되었습니다." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "사용 불가", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "복사", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "문서의 URL을 입력하여 지식 소스로 추가하고 연결할 어시스턴트를 선택하십시오.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "문서를 삭제하는 중 오류가 발생했습니다. 다시 시도하십시오." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "관련 응답 보기", + "VIEW_DETAILS": "상세보기", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "문서 삭제" diff --git a/app/javascript/dashboard/i18n/locale/ko/onboarding.json b/app/javascript/dashboard/i18n/locale/ko/onboarding.json index d16ae5d5a..ba4620b61 100644 --- a/app/javascript/dashboard/i18n/locale/ko/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ko/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "계속", + "SKIP": "건너뛰기", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "준비됨", + "HELP_CENTER": "도움말 센터", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count}개 카테고리 | {count}개 카테고리", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "연결", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "이메일", + "MORE_CHANNELS_VOICE": "음성", + "VIEW_ALL": "모두 보기", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "연결", + "BACK": "뒤로", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ko/report.json b/app/javascript/dashboard/i18n/locale/ko/report.json index 5b923c682..a8c21c34b 100644 --- a/app/javascript/dashboard/i18n/locale/ko/report.json +++ b/app/javascript/dashboard/i18n/locale/ko/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "필터 지우기", "EMPTY_LIST": "검색 결과가 없습니다" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "더 불러오기", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "미배정", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "{total}개 결과 중 {start}~{end} 표시", "PER_PAGE_TEMPLATE": "{size} / 페이지" diff --git a/app/javascript/dashboard/i18n/locale/ko/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ko/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ko/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ko/settings.json b/app/javascript/dashboard/i18n/locale/ko/settings.json index 225be4cb6..ef6ea9f73 100644 --- a/app/javascript/dashboard/i18n/locale/ko/settings.json +++ b/app/javascript/dashboard/i18n/locale/ko/settings.json @@ -86,9 +86,21 @@ "NOTE": "계정의 추가 보안 기능을 관리합니다.", "MFA_BUTTON": "2단계 인증 관리" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "액세스 토큰", "NOTE": "API 기반 통합을 구축하는 경우 이 토큰을 사용할 수 있습니다", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "복사", "RESET": "재설정", "CONFIRM_RESET": "정말로 진행하시겠습니까?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "모든 회사", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "어시스턴트", + "CAPTAIN_OVERVIEW": "개요", "CAPTAIN_DOCUMENTS": "문서", "CAPTAIN_RESPONSES": "FAQ", "CAPTAIN_TOOLS": "도구", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "알림", "CANNED_RESPONSES": "미리 준비된 답변", "INTEGRATIONS": "통합", + "DATA": "Data", "PROFILE_SETTINGS": "프로필 설정", "ACCOUNT_SETTINGS": "계정 설정", "APPLICATIONS": "애플리케이션", @@ -379,11 +393,124 @@ "INFO_TEXT": "앱이나 대시보드를 사용하지 않을 때 시스템이 자동으로 오프라인으로 표시합니다.", "INFO_SHORT": "앱을 사용하지 않을 때 자동으로 오프라인으로 표시합니다." }, + "SORT_TOOLTIP": "정렬", + "SORT_BY": "정렬", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "문서 읽기", "SECURITY": "보안", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "대화 워크플로" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "가져오기", + "EXPORT": "내보내기" + }, + "TYPES": { + "CONTACTS": "연락처", + "CONVERSATIONS": "대화", + "MESSAGES": "메시지" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "취소", + "IMPORT": "가져오기" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "곧 출시 예정" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "가져오기", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "이름", + "TYPE": "유형", + "STATUS": "상태", + "IMPORTED": "Imported", + "CREATED": "생성일", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "생성일", + "DURATION": "기간", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "모두", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "메시지" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "새로고침", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "완료됨", + "completed_with_errors": "Completed with errors", + "failed": "실패", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain 설정", "DESCRIPTION": "Captain의 AI 모델과 기능을 구성합니다. Captain은 크레딧 기반 청구를 따르며, 선택한 모델에 따라 Captain이 수행하는 모든 작업에 대해 크레딧이 청구됩니다.", @@ -414,7 +541,9 @@ "DESCRIPTION": "AI 기반 기능을 활성화하거나 비활성화합니다.", "AUDIO_TRANSCRIPTION": { "TITLE": "오디오 전사", - "DESCRIPTION": "음성 메시지와 통화 녹음을 검색 가능한 텍스트로 자동 변환합니다." + "DESCRIPTION": "음성 메시지와 통화 녹음을 검색 가능한 텍스트로 자동 변환합니다.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "도움말 센터 검색 인덱싱", @@ -439,7 +568,18 @@ "TITLE": "현재 플랜", "PLAN_NOTE": "현재 **{quantity}**개의 라이선스로 **{plan}** 플랜에 구독 중입니다", "SEAT_COUNT": "시트 수", - "RENEWS_ON": "갱신일" + "RENEWS_ON": "갱신일", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "가격 보기", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "크레딧 구매", "LOADING": "옵션 로딩 중...", "FETCH_ERROR": "크레딧 옵션을 로드하지 못했습니다. 다시 시도하십시오.", + "RETRY": "재시도", "PURCHASE_ERROR": "구매 처리에 실패했습니다. 다시 시도하십시오.", "PURCHASE_SUCCESS": "{credits} 크레딧이 계정에 성공적으로 추가되었습니다", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "최대 배정", "DURATION": "에이전트당 대화 수" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "추가된 받은 메시지함", "DESCRIPTION": "이 정책이 적용될 받은 메시지함을 추가합니다.", diff --git a/app/javascript/dashboard/i18n/locale/lt/advancedFilters.json b/app/javascript/dashboard/i18n/locale/lt/advancedFilters.json index 7f65baba5..55b158e86 100644 --- a/app/javascript/dashboard/i18n/locale/lt/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/lt/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "AR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Lygu", "not_equal_to": "Nelygu", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Priskirtojo vardas", "INBOX_NAME": "Gautų laiškų aplanko pavadinimas", "TEAM_NAME": "Komandos pavadinimas", + "CONTACT": "Kontaktas", "CONVERSATION_IDENTIFIER": "Pokalbio identifikatorius", "CAMPAIGN_NAME": "Akcijos Pavadinimas", "LABELS": "Etiketės", diff --git a/app/javascript/dashboard/i18n/locale/lt/chatlist.json b/app/javascript/dashboard/i18n/locale/lt/chatlist.json index fe6ef49de..281936c95 100644 --- a/app/javascript/dashboard/i18n/locale/lt/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/lt/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/lt/companies.json b/app/javascript/dashboard/i18n/locale/lt/companies.json index c8321c4f4..e823cc847 100644 --- a/app/javascript/dashboard/i18n/locale/lt/companies.json +++ b/app/javascript/dashboard/i18n/locale/lt/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/lt/contact.json b/app/javascript/dashboard/i18n/locale/lt/contact.json index 0e1d8b2b9..1a4a4e542 100644 --- a/app/javascript/dashboard/i18n/locale/lt/contact.json +++ b/app/javascript/dashboard/i18n/locale/lt/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Pastabos", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/lt/conversation.json b/app/javascript/dashboard/i18n/locale/lt/conversation.json index 8ad1059c1..2273af5aa 100644 --- a/app/javascript/dashboard/i18n/locale/lt/conversation.json +++ b/app/javascript/dashboard/i18n/locale/lt/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Į šį pokalbį galite atsakyti tik naudodami šablono pranešimą, nes", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Pranešimų apribojimas 24 valandoms", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Jūs atsakote į:", "REMOVE_SELECTION": "Pašalinti Pasirinkimą", "DOWNLOAD": "Parsisiųsti", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Nepavyko atidaryti audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Norėdami pridėti, vilkite ir numeskite čia", + "IMAGE_UPLOAD_SUCCESS": "Paveiksliukas sėkmingai įkeltas", "START_AUDIO_RECORDING": "Pradėti audio įrašymą", "STOP_AUDIO_RECORDING": "Baigti audio įrašymą", "COPILOT_THINKING": "Copilot galvoja", @@ -303,6 +306,25 @@ "MESSAGE": "Negalite anuliuoti šio veiksmo", "DELETE": "Ištrinti", "CANCEL": "Atšaukti" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Aprašymas", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Peržiūrėti visus", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/lt/emoji.json b/app/javascript/dashboard/i18n/locale/lt/emoji.json index 76adca935..5a45d6ae9 100644 --- a/app/javascript/dashboard/i18n/locale/lt/emoji.json +++ b/app/javascript/dashboard/i18n/locale/lt/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Ieškoti emodžių", "NOT_FOUND": "Jūsų paieška neatitinka jokių emodži", "REMOVE": "Pašalinti" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Jūsų paieška neatitinka jokių emodži", + "NO_ICON": "No icons match your search", + "REMOVE": "Pašalinti", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/lt/helpCenter.json b/app/javascript/dashboard/i18n/locale/lt/helpCenter.json index 8c3cadefd..dd5dbdd43 100644 --- a/app/javascript/dashboard/i18n/locale/lt/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/lt/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Paskelbta", "ARCHIVED": "Suarchyvuota" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Ieškoti straipsnių...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Ištrinti", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nauja kategorija", "EDIT_CATEGORY": "Keisti kategoriją", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Kategorijų nerasta", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Ištrinti" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Neįtraukta į kategorijas" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Vardas" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Pridėti naują lokalizaciją", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Peržiūrėti", "PUBLISH": "Skelbti", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Ruošinys", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Pavadinimas" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Neįtraukta į kategorijas", diff --git a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json index a43cd2152..53a5529ff 100644 --- a/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/lt/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Norėdami pridėti savo Twitter profilį kaip kanalą, turite patvirtinti savo Twitter profilį spustelėdami „Prisijungti naudojant Twitter“ ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Įmonės paskyros ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API raktas", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Uždaryti", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Pridėti", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Gautų laiškų aplankas", + "PHONE_NUMBER": "Telefono numeris", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Atgal", + "CANCEL": "Atšaukti", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/lt/index.js b/app/javascript/dashboard/i18n/locale/lt/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/lt/index.js +++ b/app/javascript/dashboard/i18n/locale/lt/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/lt/integrations.json b/app/javascript/dashboard/i18n/locale/lt/integrations.json index 96e53d997..448ec8407 100644 --- a/app/javascript/dashboard/i18n/locale/lt/integrations.json +++ b/app/javascript/dashboard/i18n/locale/lt/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Prenumeruoti įvykiai", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Sužinoti daugiau", + "OVERVIEW": { + "HEADER": "Apžvalga", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Atsisakyti" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Atsisakyti" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Žaidimų aikštelė", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Atsiskaitymas", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistentai", "SWITCH_ASSISTANT": "Perjungti asistentus", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Aprašymas", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Neprieinamas", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopijuoti", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Pažiūrėti detaliau", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/lt/onboarding.json b/app/javascript/dashboard/i18n/locale/lt/onboarding.json index 9da8faf12..e9f0694a3 100644 --- a/app/javascript/dashboard/i18n/locale/lt/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/lt/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Kažkas nepavyko. Bandykite dar kartą.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Palaikymo centras", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Sujungti", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "El. paštas", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Peržiūrėti visus", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Sujungti", + "BACK": "Atgal", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/lt/report.json b/app/javascript/dashboard/i18n/locale/lt/report.json index 68897e463..ef8afeacb 100644 --- a/app/javascript/dashboard/i18n/locale/lt/report.json +++ b/app/javascript/dashboard/i18n/locale/lt/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Nieko nerasta" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Ne priskirtas", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/lt/sessionLimit.json b/app/javascript/dashboard/i18n/locale/lt/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/lt/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/lt/settings.json b/app/javascript/dashboard/i18n/locale/lt/settings.json index 51c8a9e54..bec07f0ce 100644 --- a/app/javascript/dashboard/i18n/locale/lt/settings.json +++ b/app/javascript/dashboard/i18n/locale/lt/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Prieeigos raktas", "NOTE": "Šis prieigos raktas gali būti naudojamas, jei kuriate API pagrįstą integraciją", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopijuoti", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Apžvalga", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Pranešimai", "CANNED_RESPONSES": "Atsakymų Ruošiniai", "INTEGRATIONS": "Integracijos", + "DATA": "Data", "PROFILE_SETTINGS": "Profilio Nustatymai", "ACCOUNT_SETTINGS": "Paskyros Nustatymai", "APPLICATIONS": "Programos", @@ -379,11 +393,124 @@ "INFO_TEXT": "Leiskite sistemai automatiškai pažymėti jus \"neprisijungus\", kai nenaudojate programos ar informacinio skydelio.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Rūšiuoti pagal", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Skaityti dokumentus", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importuoti", + "EXPORT": "Eksportuoti" + }, + "TYPES": { + "CONTACTS": "Kontaktai", + "CONVERSATIONS": "Pokalbiai", + "MESSAGES": "Pranešimai" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Atšaukti", + "IMPORT": "Importuoti" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importuoti", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Vardas", + "TYPE": "Tipas", + "STATUS": "Būsena", + "IMPORTED": "Imported", + "CREATED": "Sukurta", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Sukurta", + "DURATION": "Trukmė", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Visi", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Žinutė" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Atnaujinti", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Užbaigta", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Prenumeratos Dabartinis Planas", "PLAN_NOTE": "Šiuo metu užsiprenumeravote **{plan}** planą su **{quantity}** licencijomis", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/lv/advancedFilters.json b/app/javascript/dashboard/i18n/locale/lv/advancedFilters.json index 47455cc7a..1cb8f3146 100644 --- a/app/javascript/dashboard/i18n/locale/lv/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/lv/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "VAI" }, "INPUT_PLACEHOLDER": "Ievadiet vērtību", + "CONTACT_SEARCH_PLACEHOLDER": "Meklēt kontaktpersonas", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Vienāds ar", "not_equal_to": "Nav vienāds ar", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Piešķīrēja vārds", "INBOX_NAME": "Iesūtnes nosaukums", "TEAM_NAME": "Komandas nosaukums", + "CONTACT": "Kontaktpersona", "CONVERSATION_IDENTIFIER": "Sarunas identifikators", "CAMPAIGN_NAME": "Kampaņas nosaukums", "LABELS": "Etiķetes", diff --git a/app/javascript/dashboard/i18n/locale/lv/chatlist.json b/app/javascript/dashboard/i18n/locale/lv/chatlist.json index cd309cccd..fb7c34e91 100644 --- a/app/javascript/dashboard/i18n/locale/lv/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/lv/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/lv/companies.json b/app/javascript/dashboard/i18n/locale/lv/companies.json index f1303f81b..04d0545d5 100644 --- a/app/javascript/dashboard/i18n/locale/lv/companies.json +++ b/app/javascript/dashboard/i18n/locale/lv/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/lv/contact.json b/app/javascript/dashboard/i18n/locale/lv/contact.json index 07ff92143..1924d37b5 100644 --- a/app/javascript/dashboard/i18n/locale/lv/contact.json +++ b/app/javascript/dashboard/i18n/locale/lv/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Atribūti", "HISTORY": "Vēsture", "NOTES": "Piezīmes", + "MEDIA": "Media", "MERGE": "Apvienot" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/lv/conversation.json b/app/javascript/dashboard/i18n/locale/lv/conversation.json index 8d1e4ed8e..28d270f8e 100644 --- a/app/javascript/dashboard/i18n/locale/lv/conversation.json +++ b/app/javascript/dashboard/i18n/locale/lv/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Jūs varat atbildēt uz šo sarunu, tikai izmantojot veidnes ziņojumu, jo", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 stundu ziņojuma loga ierobežojums", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Jūs atbildat uz:", "REMOVE_SELECTION": "Noņemt Izvēli", "DOWNLOAD": "Lejupielādēt", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Nevarēja atvērt audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Velciet un nometiet šeit, lai pievienotu", + "IMAGE_UPLOAD_SUCCESS": "Attēls ir veiksmīgi augšupielādēts", "START_AUDIO_RECORDING": "Sākt audio ierakstīšanu", "STOP_AUDIO_RECORDING": "Apturēt audio ierakstīšanu", "COPILOT_THINKING": "Copilot domā", @@ -303,6 +306,25 @@ "MESSAGE": "Šo darbību nevar atsaukt", "DELETE": "Dzēst", "CANCEL": "Atcelt" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Apraksts", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Apskatīt visu", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/lv/emoji.json b/app/javascript/dashboard/i18n/locale/lv/emoji.json index c4c00066f..ecc383973 100644 --- a/app/javascript/dashboard/i18n/locale/lv/emoji.json +++ b/app/javascript/dashboard/i18n/locale/lv/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Meklēt emocijzīmes", "NOT_FOUND": "Neviena emocijzīme neatbilst jūsu meklēšanas vaicājumam", "REMOVE": "Noņemt" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Neviena emocijzīme neatbilst jūsu meklēšanas vaicājumam", + "NO_ICON": "No icons match your search", + "REMOVE": "Noņemt", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/lv/helpCenter.json b/app/javascript/dashboard/i18n/locale/lv/helpCenter.json index 818994fd0..51405e20c 100644 --- a/app/javascript/dashboard/i18n/locale/lv/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/lv/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publicēts", "ARCHIVED": "Arhivēts" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Bez kategorijas" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Visas lokalizācijas" }, + "SEARCH_PLACEHOLDER": "Meklēt rakstus...", "NEW_ARTICLE": "Jauns raksts" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Šajā kategorijā nav neviena raksta", "SUBTITLE": "Šīs kategorijas raksti tiks parādīti šeit" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Dzēst", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Jauna kategorija", "EDIT_CATEGORY": "Rediģēt kategoriju", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} kategorija | {n} kategorijas", "BREADCRUMB": { "CATEGORY_LOCALE": "Kategorijas ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Kategorijas nav atrastas", "SUBTITLE": "Šeit tiks parādītas kategorijas. Kategoriju var pievienot, noklikšķinot uz pogas \"Jauna kategorija\"." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} raksts | {count} raksti" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Nav pieejama neviena lokalizācija | {n} lokalizācija | {n} lokalizācijas", "NEW_LOCALE_BUTTON_TEXT": "Jauna lokalizācija", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} raksts | {count} raksti", "CATEGORIES_COUNT": "{count} kategorija | {count} kategorijas", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Padarīt par noklusēto", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Dzēst" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Meklēt...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Bez kategorijas" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nosaukums" + }, + "PAGE_TITLE": { + "LABEL": "Lapas nosaukums" + }, + "HEADER_TEXT": { + "LABEL": "Virsraksta teksts" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Pievienot jaunu lokalizāciju", "DESCRIPTION": "Izvēlieties valodu, kurā šis raksts tiks rakstīts. Tas tiks pievienots jūsu tulkojumu sarakstam, un vēlāk varēsit pievienot citus.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Priekšskatījums", "PUBLISH": "Publicēt", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Melnraksts", "ARCHIVE": "Arhīvs", "BACK_TO_ARTICLES": "Atpakaļ uz rakstiem" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Nosaukums" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Papildu īpašības", "UNCATEGORIZED": "Bez kategorijas", diff --git a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json index 5eaa00103..6ebc33f37 100644 --- a/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/lv/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Veidojot savienojumu ar Instagram, radās kļūda. Lūdzu, mēģiniet vēlreiz", "ERROR_AUTH": "Veidojot savienojumu ar Instagram, radās kļūda. Lūdzu, mēģiniet vēlreiz", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Lai pievienotu savu Twitter profilu kā kanālu, Jums ir jāautentificē savs Twitter profils, noklikšķinot uz \"Pierakstīties ar Twitter\"' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Biznesa Konta ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API atslēga", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Aizvērt", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Pievienot", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Iesūtne", + "PHONE_NUMBER": "Telefona numurs", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Atpakaļ", + "CANCEL": "Atcelt", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/lv/index.js b/app/javascript/dashboard/i18n/locale/lv/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/lv/index.js +++ b/app/javascript/dashboard/i18n/locale/lv/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/lv/integrations.json b/app/javascript/dashboard/i18n/locale/lv/integrations.json index 0ea682111..d4b01586b 100644 --- a/app/javascript/dashboard/i18n/locale/lv/integrations.json +++ b/app/javascript/dashboard/i18n/locale/lv/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Abonētie Notikumi", "LEARN_MORE": "Uzzināt vairāk par webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Pāriet uz maksas versiju tagad", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Kapteinis", "HEADER_KNOW_MORE": "Uzzināt vairāk", + "OVERVIEW": { + "HEADER": "Pārskats", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Atcelt" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Atcelt" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Ielādēt vairāk", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Dokumenti" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Izmēģinājuma laukums", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Norēķini", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistenti", "SWITCH_ASSISTANT": "Pārslēgties starp palīgiem", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Apraksts", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Dokumenti", "ADD_NEW": "Izveidot jaunu dokumentu", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "Atlasīti {count}", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Saistītie bieži uzdotie jautājumi", - "DESCRIPTION": "Šie bieži uzdotie jautājumi tiek ģenerēti tieši no dokumenta." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopēt", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Ievadiet dokumenta URL, lai to pievienotu kā zināšanu avotu, un izvēlieties asistentu, ar kuru to saistīt.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Dzēšot dokumentu radās kļūda. Lūdzu, mēģiniet vēlreiz." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Skatīt Saistītās Atbildes", + "VIEW_DETAILS": "Skatīt detalizētu informāciju", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Dzēst Dokumentu" diff --git a/app/javascript/dashboard/i18n/locale/lv/onboarding.json b/app/javascript/dashboard/i18n/locale/lv/onboarding.json index daca080c3..293bd2ad6 100644 --- a/app/javascript/dashboard/i18n/locale/lv/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/lv/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Radās kļūda. Lūdzu, mēģiniet vēlreiz.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Palīdzības centrs", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} kategorija | {count} kategorijas", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Savienot", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-pasts", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Apskatīt visu", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Savienot", + "BACK": "Atpakaļ", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/lv/report.json b/app/javascript/dashboard/i18n/locale/lv/report.json index c9e32d7d2..46c4c9dc7 100644 --- a/app/javascript/dashboard/i18n/locale/lv/report.json +++ b/app/javascript/dashboard/i18n/locale/lv/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Notīrīt filtru", "EMPTY_LIST": "Nav atrasts" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Ielādēt vairāk", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Nav piešķirtas", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Rāda {start} līdz {end} no {total} rezultātiem", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/lv/sessionLimit.json b/app/javascript/dashboard/i18n/locale/lv/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/lv/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/lv/settings.json b/app/javascript/dashboard/i18n/locale/lv/settings.json index 2f8d166d3..6dc1e8d9d 100644 --- a/app/javascript/dashboard/i18n/locale/lv/settings.json +++ b/app/javascript/dashboard/i18n/locale/lv/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Piekļuves Token", "NOTE": "Šo token var izmantot, ja veidojat uz API balstītu integrāciju", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopēt", "RESET": "Atiestatīt", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Asistenti", + "CAPTAIN_OVERVIEW": "Pārskats", "CAPTAIN_DOCUMENTS": "Dokumenti", "CAPTAIN_RESPONSES": "Bieži uzdotie jautājumi", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Paziņojumi", "CANNED_RESPONSES": "Sagatavotās Atbildes", "INTEGRATIONS": "Integrācijas", + "DATA": "Data", "PROFILE_SETTINGS": "Profila Iestatījumi", "ACCOUNT_SETTINGS": "Konta Iestatījumi", "APPLICATIONS": "Lietojumprogrammas", @@ -379,11 +393,124 @@ "INFO_TEXT": "Ļaut sistēmai, kad neizmantojat lietotni vai informācijas paneli, automātiski atzīmēt Jūs bezsaistē.", "INFO_SHORT": "Automātiski atzīmēt bezsaistē, kad neizmantojat lietotni." }, + "SORT_TOOLTIP": "Šķirot", + "SORT_BY": "Kārtot pēc", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Lasīt dokumentus", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importēt", + "EXPORT": "Eksportēt" + }, + "TYPES": { + "CONTACTS": "Kontaktpersonas", + "CONVERSATIONS": "Sarunas", + "MESSAGES": "Ziņojumi" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Atcelt", + "IMPORT": "Importēt" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importēt", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nosaukums", + "TYPE": "Tips", + "STATUS": "Statuss", + "IMPORTED": "Imported", + "CREATED": "Izveidots", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Izveidots", + "DURATION": "Ilgums", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Visi", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Ziņojums" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Atjaunot", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Pabeigts", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Pašreizējais Norēķinu Plāns", "PLAN_NOTE": "Šobrīd Jūs abonējat **{plan}** plānu ar **{quantity}** licencēm", "SEAT_COUNT": "Lietotāju skaits", - "RENEWS_ON": "Atjaunojas" + "RENEWS_ON": "Atjaunojas", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Skatīt Izcenojumu", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/ml/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ml/advancedFilters.json index 3dd44f7c6..6ce5792e2 100644 --- a/app/javascript/dashboard/i18n/locale/ml/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ml/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "അഥവാ" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "തുല്യമാണ്", "not_equal_to": "തുല്യമല്ല", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "ടീമിന്റെ പേര്", + "CONTACT": "ബന്ധപ്പെടുക", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "ലേബലുകൾ", diff --git a/app/javascript/dashboard/i18n/locale/ml/chatlist.json b/app/javascript/dashboard/i18n/locale/ml/chatlist.json index 87889d266..096e57973 100644 --- a/app/javascript/dashboard/i18n/locale/ml/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ml/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ml/companies.json b/app/javascript/dashboard/i18n/locale/ml/companies.json index 9dab0321c..7d77bd5cd 100644 --- a/app/javascript/dashboard/i18n/locale/ml/companies.json +++ b/app/javascript/dashboard/i18n/locale/ml/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ml/contact.json b/app/javascript/dashboard/i18n/locale/ml/contact.json index 54cd3b7ad..e54099127 100644 --- a/app/javascript/dashboard/i18n/locale/ml/contact.json +++ b/app/javascript/dashboard/i18n/locale/ml/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ml/conversation.json b/app/javascript/dashboard/i18n/locale/ml/conversation.json index d4cd56854..f074bacec 100644 --- a/app/javascript/dashboard/i18n/locale/ml/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ml/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 മണിക്കൂർ സന്ദേശ വിൻഡോ നിയന്ത്രണം", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "നിങ്ങൾ ഇതിന് മറുപടി നൽകുന്നു:", "REMOVE_SELECTION": "തിരഞ്ഞെടുക്കൽ നീക്കംചെയ്യുക", "DOWNLOAD": "ഡൗൺലോഡ്", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "കോപ്പൈലറ്റ് ചിന്തിക്കുന്നു", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "ഇല്ലാതാക്കുക", "CANCEL": "റദ്ദാക്കുക" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "വിവരണം", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ml/emoji.json b/app/javascript/dashboard/i18n/locale/ml/emoji.json index d0fdc5a5e..8cbff0bfe 100644 --- a/app/javascript/dashboard/i18n/locale/ml/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ml/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "നീക്കം ചെയ്യുക" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "നീക്കം ചെയ്യുക", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ml/helpCenter.json b/app/javascript/dashboard/i18n/locale/ml/helpCenter.json index b4594ce6b..3b4d78e50 100644 --- a/app/javascript/dashboard/i18n/locale/ml/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ml/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "ഇല്ലാതാക്കുക", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "ഇല്ലാതാക്കുക" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "പേര്" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "തലക്കെട്ട്" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json index 3869e919e..acc0eb08d 100644 --- a/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ml/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram-ലേക്ക് കണക്ട് ചെയ്യുമ്പോൾ പിശക് സംഭവിച്ചു, ദയവായി വീണ്ടും ശ്രമിക്കുക", "ERROR_AUTH": "Instagram-ലേക്ക് കണക്ട് ചെയ്യുന്നതിൽ പിഴവ് സംഭവിച്ചു, ദയവായി വീണ്ടും ശ്രമിക്കുക", "NEW_INBOX_SUGGESTION": "ഈ Instagram അക്കൗണ്ട് മുമ്പ് മറ്റൊരു ഇൻബോക്സുമായി ബന്ധിപ്പിച്ചിരുന്നതാണ്, ഇപ്പോൾ ഇത് ഇവിടെ മൈഗ്രേറ്റ് ചെയ്തിരിക്കുന്നു. എല്ലാ പുതിയ സന്ദേശങ്ങളും ഇവിടെ പ്രത്യക്ഷപ്പെടും. പഴയ ഇൻബോക്സ് ഈ അക്കൗണ്ടിനായി സന്ദേശങ്ങൾ അയക്കാനും സ്വീകരിക്കാനും കഴിയില്ല.", - "DUPLICATE_INBOX_BANNER": "ഈ Instagram അക്കൗണ്ട് പുതിയ Instagram ചാനൽ ഇൻബോക്സിലേക്ക് മൈഗ്രേറ്റ് ചെയ്തിരിക്കുന്നു. ഇനി ഈ ഇൻബോക്സിൽ നിന്ന് Instagram സന്ദേശങ്ങൾ അയക്കാനും സ്വീകരിക്കാനും കഴിയില്ല." + "DUPLICATE_INBOX_BANNER": "ഈ Instagram അക്കൗണ്ട് പുതിയ Instagram ചാനൽ ഇൻബോക്സിലേക്ക് മൈഗ്രേറ്റ് ചെയ്തിരിക്കുന്നു. ഇനി ഈ ഇൻബോക്സിൽ നിന്ന് Instagram സന്ദേശങ്ങൾ അയക്കാനും സ്വീകരിക്കാനും കഴിയില്ല.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "TikTok ഉപയോഗിച്ച് തുടരുക", "CONNECT_YOUR_TIKTOK_PROFILE": "നിങ്ങളുടെ TikTok പ്രൊഫൈൽ ബന്ധിപ്പിക്കുക", "HELP": "'TikTok ഉപയോഗിച്ച് തുടരുക' ക്ലിക്കുചെയ്ത് നിങ്ങളുടെ TikTok പ്രൊഫൈൽ പ്രാമാണീകരിച്ച് നിങ്ങളുടെ TikTok പ്രൊഫൈൽ ഒരു ചാനലായി ചേർക്കണം ", "ERROR_MESSAGE": "TikTok-ലേക്ക് കണക്ട് ചെയ്യുമ്പോൾ പിശക് സംഭവിച്ചു, ദയവായി വീണ്ടും ശ്രമിക്കുക", - "ERROR_AUTH": "TikTok-ലേക്ക് കണക്ട് ചെയ്യുമ്പോൾ പിശക് സംഭവിച്ചു, ദയവായി വീണ്ടും ശ്രമിക്കുക" + "ERROR_AUTH": "TikTok-ലേക്ക് കണക്ട് ചെയ്യുമ്പോൾ പിശക് സംഭവിച്ചു, ദയവായി വീണ്ടും ശ്രമിക്കുക", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "നിങ്ങളുടെ ട്വിറ്റർ പ്രൊഫൈൽ ഒരു ചാനലായി ചേർക്കുന്നതിന്, 'ട്വിറ്ററിനൊപ്പം പ്രവേശിക്കുക' ക്ലിക്കുചെയ്ത് നിങ്ങളുടെ ട്വിറ്റർ പ്രൊഫൈൽ പ്രാമാണീകരിക്കേണ്ടതുണ്ട് ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "ഈ ഇൻബോക്സ് WhatsApp എംബെഡഡ് സൈൻഅപ്പ് വഴി ബന്ധിപ്പിച്ചിരിക്കുന്നു.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "നിങ്ങളുടെ WhatsApp ബിസിനസ് ക്രമീകരണങ്ങൾ അപ്ഡേറ്റ് ചെയ്യാൻ ഈ ഇൻബോക്സ് പുനഃക്രമീകരിക്കാം.", "WHATSAPP_RECONFIGURE_BUTTON": "പുനഃക്രമീകരിക്കുക", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ബിസിനസ് അക്കൗണ്ട് ഐഡി", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API കീ", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "WhatsApp ബിസിനസുമായി ബന്ധിപ്പിക്കുക", "WHATSAPP_CONNECT_SUBHEADER": "സൗകര്യപ്രദമായ മാനേജ്മെന്റിനായി WhatsApp എംബെഡഡ് സൈൻഅപ്പിലേക്ക് അപ്ഗ്രേഡ് ചെയ്യുക.", "WHATSAPP_CONNECT_DESCRIPTION": "ഈ ഇൻബോക്സ് WhatsApp ബിസിനസുമായി ബന്ധിപ്പിച്ച് മെച്ചപ്പെട്ട ഫീച്ചറുകളും എളുപ്പമുള്ള മാനേജ്മെന്റും നേടുക.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "നിങ്ങളുടെ ലഭ്യമായ ടെംപ്ലേറ്റുകൾ അപ്ഡേറ്റ് ചെയ്യാൻ WhatsApp-ൽ നിന്ന് സന്ദേശ ടെംപ്ലേറ്റുകൾ മാനുവലായി സമന്വയിപ്പിക്കുക.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "ടെംപ്ലേറ്റുകൾ സമന്വയിപ്പിക്കുക", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "ടെംപ്ലേറ്റുകൾ സമന്വയം വിജയകരമായി ആരംഭിച്ചു. അപ്ഡേറ്റ് ചെയ്യാൻ കുറച്ച് മിനിറ്റുകൾ എടുക്കാം.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "അടയ്ക്കുക", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "ഫോൺ നമ്പർ പ്രദർശിപ്പിക്കുക", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "ചേർക്കുക", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "ഇൻബോക്സ്", + "PHONE_NUMBER": "ഫോൺ നമ്പർ", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "മടങ്ങിപ്പോവുക", + "CANCEL": "റദ്ദാക്കുക", + "CONTINUE": "തുടരുക", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ml/index.js b/app/javascript/dashboard/i18n/locale/ml/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ml/index.js +++ b/app/javascript/dashboard/i18n/locale/ml/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ml/integrations.json b/app/javascript/dashboard/i18n/locale/ml/integrations.json index f862e89ab..b2db79a58 100644 --- a/app/javascript/dashboard/i18n/locale/ml/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ml/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "സബ്സ്ക്രൈബ് ചെയ്ത ഇവന്റുകൾ", "LEARN_MORE": "വെബ്‌ഹുക്കുകൾക്കുറിച്ച് കൂടുതൽ അറിയുക", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "രഹസ്യം", "COPY": "രഹസ്യം ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തുക", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "ക്യാപ്റ്റൻ", "HEADER_KNOW_MORE": "കൂടുതൽ അറിയുക", + "OVERVIEW": { + "HEADER": "അവലോകനം", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "പെൻഡിംഗ് എഫ്എക്യുസുകൾ", + "DOCUMENTS": "ഡോക്യുമെന്റുകൾ" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "പ്ലേഗ്രൗണ്ട്", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "ബില്ലിംഗ്", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "സഹായികൾ", "SWITCH_ASSISTANT": "അസിസ്റ്റന്റുകൾ തമ്മിൽ മാറുക", @@ -494,10 +577,6 @@ "PLACEHOLDER": "അസിസ്റ്റന്റിന്റെ പേര് നൽകുക", "ERROR": "പേര് ആവശ്യമാണ്" }, - "TEMPERATURE": { - "LABEL": "പ്രതികരണ താപനില", - "DESCRIPTION": "അസിസ്റ്റന്റിന്റെ പ്രതികരണങ്ങൾ എത്ര സൃഷ്ടിപരമായോ നിയന്ത്രിതമായോ ആയിരിക്കണമെന്ന് ക്രമീകരിക്കുക. കുറഞ്ഞ മൂല്യങ്ങൾ കൂടുതൽ കേന്ദ്രീകൃതവും നിർണായകവുമായ പ്രതികരണങ്ങൾ നൽകും, ഉയർന്ന മൂല്യങ്ങൾ കൂടുതൽ സൃഷ്ടിപരവും വ്യത്യസ്തവുമായ ഔട്ട്പുട്ടുകൾ അനുവദിക്കും." - }, "DESCRIPTION": { "LABEL": "വിവരണം", "PLACEHOLDER": "അസിസ്റ്റന്റിന്റെ വിവരണം നൽകുക", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "ഡോക്യുമെന്റുകൾ", "ADD_NEW": "ഒരു പുതിയ ഡോക്യുമെന്റ് സൃഷ്ടിക്കുക", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} തിരഞ്ഞെടുക്കപ്പെട്ടത്", "SELECT_ALL": "എല്ലാം തിരഞ്ഞെടുക്കുക ({count})", "UNSELECT_ALL": "എല്ലാം തിരഞ്ഞെടുക്കൽ ഒഴിവാക്കുക ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "ബന്ധപ്പെട്ട സാധാരണ ചോദിക്കപ്പെടുന്ന ചോദ്യങ്ങൾ", - "DESCRIPTION": "ഈ സാധാരണ ചോദിക്കപ്പെടുന്ന ചോദ്യങ്ങൾ രേഖയിൽ നിന്നു നേരിട്ട് സൃഷ്ടിച്ചവയാണ്." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "പകർത്തുക", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "ഡോക്യുമെന്റിന്റെ URL നൽകുക, അതിനെ ഒരു നോളജ് സോഴ്സ് ആയി ചേർക്കാൻ, കൂടാതെ അത് ബന്ധിപ്പിക്കാനുള്ള അസിസ്റ്റന്റിനെ തിരഞ്ഞെടുക്കുക.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "ഡോക്യുമെന്റ് ഇല്ലാതാക്കുന്നതിൽ പിശക് സംഭവിച്ചു, ദയവായി വീണ്ടും ശ്രമിക്കുക." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "ബന്ധപ്പെട്ട പ്രതികരണങ്ങൾ കാണുക", + "VIEW_DETAILS": "വിശദാംശങ്ങൾ കാണുക", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "ഡോക്യുമെന്റ് ഇല്ലാതാക്കുക" diff --git a/app/javascript/dashboard/i18n/locale/ml/onboarding.json b/app/javascript/dashboard/i18n/locale/ml/onboarding.json index d6826670e..9fa041ecd 100644 --- a/app/javascript/dashboard/i18n/locale/ml/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ml/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "തുടരുക", + "SKIP": "വിടുക", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "സഹായ കേന്ദ്രം", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "ബന്ധിപ്പിക്കുക", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "ഇമെയിൽ", + "MORE_CHANNELS_VOICE": "വോയ്സ്", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "ബന്ധിപ്പിക്കുക", + "BACK": "മടങ്ങിപ്പോവുക", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ml/report.json b/app/javascript/dashboard/i18n/locale/ml/report.json index 60473893c..7709b2df8 100644 --- a/app/javascript/dashboard/i18n/locale/ml/report.json +++ b/app/javascript/dashboard/i18n/locale/ml/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "ഒരു ഫലവും കണ്ടെത്താനായില്ല" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "നിയുക്തമാക്കാത്തത്", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ml/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ml/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ml/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ml/settings.json b/app/javascript/dashboard/i18n/locale/ml/settings.json index 42db3b355..164105f76 100644 --- a/app/javascript/dashboard/i18n/locale/ml/settings.json +++ b/app/javascript/dashboard/i18n/locale/ml/settings.json @@ -86,9 +86,21 @@ "NOTE": "നിങ്ങളുടെ അക്കൗണ്ടിനായി അധിക സുരക്ഷാ സവിശേഷതകൾ നിയന്ത്രിക്കുക.", "MFA_BUTTON": "രണ്ട് ഘട്ടം സ്ഥിരീകരണം നിയന്ത്രിക്കുക" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "ആക്സസ് ടോക്കൺ", "NOTE": "നിങ്ങൾ ഒരു എപിഐ അടിസ്ഥാനമാക്കിയുള്ള സംയോജനം നിർമ്മിക്കുകയാണെങ്കിൽ ഈ ടോക്കൺ ഉപയോഗിക്കാൻ കഴിയും", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "പകർത്തുക", "RESET": "പുനഃസജ്ജമാക്കുക", "CONFIRM_RESET": "നിങ്ങൾക്ക് ഉറപ്പാണോ?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "എല്ലാ കമ്പനികളും", "CAPTAIN": "ക്യാപ്റ്റൻ", "CAPTAIN_ASSISTANTS": "അസിസ്റ്റന്റുകൾ", + "CAPTAIN_OVERVIEW": "അവലോകനം", "CAPTAIN_DOCUMENTS": "ഡോക്യുമെന്റുകൾ", "CAPTAIN_RESPONSES": "അടിക്കുറിപ്പുകൾ", "CAPTAIN_TOOLS": "ഉപകരണങ്ങൾ", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "അറിയിപ്പുകൾ", "CANNED_RESPONSES": "ക്യാൻഡ് പ്രതികരണങ്ങൾ", "INTEGRATIONS": "സംയോജനങ്ങൾ", + "DATA": "Data", "PROFILE_SETTINGS": "പ്രൊഫൈൽ ക്രമീകരണങ്ങൾ", "ACCOUNT_SETTINGS": "അക്കൗണ്ട് ക്രമീകരണങ്ങൾ", "APPLICATIONS": "അപ്ലിക്കേഷനുകൾ", @@ -379,11 +393,124 @@ "INFO_TEXT": "നിങ്ങൾ ആപ്പ് അല്ലെങ്കിൽ ഡാഷ്ബോർഡ് ഉപയോഗിക്കാത്തപ്പോൾ സിസ്റ്റം സ്വയം നിങ്ങളെ ഓഫ്‌ലൈൻ ആയി അടയാളപ്പെടുത്തട്ടെ.", "INFO_SHORT": "ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ സ്വയം ഓട്ടോമാറ്റിക്കായി ഓഫ്‌ലൈൻ ആയി അടയാളപ്പെടുത്തുക." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "ഡോക്യുമെന്റുകൾ വായിക്കുക", "SECURITY": "സുരക്ഷ", "CAPTAIN_AI": "ക്യാപ്റ്റൻ", "CONVERSATION_WORKFLOW": "സംവാദ പ്രവാഹം" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "കോൺ‌ടാക്റ്റുകൾ", + "CONVERSATIONS": "സംഭാഷണങ്ങൾ", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "റദ്ദാക്കുക", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "വളരെ ഉടൻ" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "പേര്", + "TYPE": "Type", + "STATUS": "സ്റ്റാറ്റസ്", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "എല്ലാം", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "സന്ദേശം" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "പൂർത്തിയാക്കി", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "ക്യാപ്റ്റൻ ക്രമീകരണങ്ങൾ", "DESCRIPTION": "ക്യാപ്റ്റനായി നിങ്ങളുടെ AI മോഡലുകളും ഫീച്ചറുകളും ക്രമീകരിക്കുക. ക്യാപ്റ്റൻ ക്രെഡിറ്റ് അടിസ്ഥാനത്തിലുള്ള ബില്ലിംഗ് പിന്തുടരുന്നു, തിരഞ്ഞെടുക്കപ്പെട്ട മോഡലിന്റെ അടിസ്ഥാനത്തിൽ ക്യാപ്റ്റൻ എടുക്കുന്ന ഓരോ പ്രവർത്തനത്തിനും നിങ്ങൾക്ക് ക്രെഡിറ്റുകൾ ചാർജ് ചെയ്യപ്പെടും.", @@ -414,7 +541,9 @@ "DESCRIPTION": "AI-ശക്തിയുള്ള ഫീച്ചറുകൾ സജീവമാക്കുക അല്ലെങ്കിൽ അപ്രാപ്തമാക്കുക.", "AUDIO_TRANSCRIPTION": { "TITLE": "ഓഡിയോ ട്രാൻസ്ക്രിപ്ഷൻ", - "DESCRIPTION": "വോയ്സ് സന്ദേശങ്ങളും കോൾ റെക്കോർഡിംഗുകളും സ്വയം തിരയാവുന്ന ടെക്സ്റ്റ് ട്രാൻസ്ക്രിപ്റ്റുകളായി മാറ്റുക." + "DESCRIPTION": "വോയ്സ് സന്ദേശങ്ങളും കോൾ റെക്കോർഡിംഗുകളും സ്വയം തിരയാവുന്ന ടെക്സ്റ്റ് ട്രാൻസ്ക്രിപ്റ്റുകളായി മാറ്റുക.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "ഹെൽപ്പ് സെന്റർ സെർച്ച് ഇൻഡക്സിംഗ്", @@ -439,7 +568,18 @@ "TITLE": "നിലവിലെ പ്ലാൻ", "PLAN_NOTE": "നിങ്ങൾ നിലവിൽ **{plan}** പ്ലാനിൽ **{quantity}** ലൈസൻസുകളോടെ സബ്സ്ക്രൈബ് ചെയ്തിരിക്കുന്നു", "SEAT_COUNT": "സീറ്റുകളുടെ എണ്ണം", - "RENEWS_ON": "പുതുക്കുന്നത്" + "RENEWS_ON": "പുതുക്കുന്നത്", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "വിലകൾ കാണുക", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "ക്രെഡിറ്റുകൾ വാങ്ങുക", "LOADING": "ഓപ്ഷനുകൾ ലോഡ് ചെയ്യുന്നു...", "FETCH_ERROR": "ക്രെഡിറ്റ് ഓപ്ഷനുകൾ ലോഡ് ചെയ്യാൻ പരാജയപ്പെട്ടു. ദയവായി വീണ്ടും ശ്രമിക്കുക.", + "RETRY": "Retry", "PURCHASE_ERROR": "വാങ്ങൽ പ്രക്രിയ പരാജയപ്പെട്ടു. ദയവായി വീണ്ടും ശ്രമിക്കുക.", "PURCHASE_SUCCESS": "നിങ്ങളുടെ അക്കൗണ്ടിലേക്ക് {credits} ക്രെഡിറ്റുകൾ വിജയകരമായി ചേർത്തു", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "പരമാവധി നിയോഗിക്കുക", "DURATION": "ഓരോ ഏജന്റിനും ഓരോ" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "ചേർത്ത ഇൻബോക്സുകൾ", "DESCRIPTION": "ഈ നയം ബാധകമാകുന്ന ഇൻബോക്സുകൾ ചേർക്കുക.", diff --git a/app/javascript/dashboard/i18n/locale/ms/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ms/advancedFilters.json index 891e95bef..8a1f3f58f 100644 --- a/app/javascript/dashboard/i18n/locale/ms/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ms/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ATAU" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Sama dengan", "not_equal_to": "Tak sama dengan", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Label", diff --git a/app/javascript/dashboard/i18n/locale/ms/chatlist.json b/app/javascript/dashboard/i18n/locale/ms/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/ms/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ms/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ms/companies.json b/app/javascript/dashboard/i18n/locale/ms/companies.json index c3fb0079a..f2e27dbb2 100644 --- a/app/javascript/dashboard/i18n/locale/ms/companies.json +++ b/app/javascript/dashboard/i18n/locale/ms/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ms/contact.json b/app/javascript/dashboard/i18n/locale/ms/contact.json index 161429452..709290271 100644 --- a/app/javascript/dashboard/i18n/locale/ms/contact.json +++ b/app/javascript/dashboard/i18n/locale/ms/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ms/conversation.json b/app/javascript/dashboard/i18n/locale/ms/conversation.json index 450f1d88c..a88304aae 100644 --- a/app/javascript/dashboard/i18n/locale/ms/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ms/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Anda hanya boleh membalas perbualan ini menggunakan mesej templat kerana", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Sekatan tetingkap mesej 24 jam", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Akaun Instagram ini telah dipindahkan ke peti masuk saluran Instagram baru. Semua mesej baru akan dipaparkan di sana. Anda tidak akan dapat menghantar mesej dari perbualan ini lagi.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Anda sedang membalas kepada:", "REMOVE_SELECTION": "Buang Pilihan", "DOWNLOAD": "Muat Turun", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Tidak dapat membuka audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Seret dan lepaskan di sini untuk melampirkan", + "IMAGE_UPLOAD_SUCCESS": "Imej berjaya dimuat naik", "START_AUDIO_RECORDING": "Mula rakaman audio", "STOP_AUDIO_RECORDING": "Hentikan rakaman audio", "COPILOT_THINKING": "Copilot sedang berfikir", @@ -303,6 +306,25 @@ "MESSAGE": "Anda tidak boleh membatalkan tindakan ini", "DELETE": "Padamkan", "CANCEL": "Batalkan" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Penerangan", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ms/emoji.json b/app/javascript/dashboard/i18n/locale/ms/emoji.json index d5b96f0f9..7713a9940 100644 --- a/app/javascript/dashboard/i18n/locale/ms/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ms/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Padam", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ms/helpCenter.json b/app/javascript/dashboard/i18n/locale/ms/helpCenter.json index 4b1da6590..601d0ab00 100644 --- a/app/javascript/dashboard/i18n/locale/ms/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ms/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Diterbitkan", "ARCHIVED": "Diarkibkan" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Tidak Dikategorikan" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Semua lokasi" }, + "SEARCH_PLACEHOLDER": "Cari artikel...", "NEW_ARTICLE": "Artikel baru" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Tiada artikel dalam kategori ini", "SUBTITLE": "Artikel dalam kategori ini akan dipaparkan di sini" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Padamkan", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Kategori baru", "EDIT_CATEGORY": "Sunting kategori", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} kategori | {n} kategori", "BREADCRUMB": { "CATEGORY_LOCALE": "Kategori ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Tiada kategori ditemui", "SUBTITLE": "Kategori akan dipaparkan di sini. Anda boleh menambah kategori dengan mengklik butang 'Kategori Baru'." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} artikel | {count} artikel" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Tiada lokal tersedia | {n} lokal | {n} lokal", "NEW_LOCALE_BUTTON_TEXT": "Lokal baru", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} artikel | {count} artikel", "CATEGORIES_COUNT": "{count} kategori | {count} kategori", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Jadikan lalai", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Padamkan" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Tidak Dikategorikan" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nama" + }, + "PAGE_TITLE": { + "LABEL": "Tajuk halaman" + }, + "HEADER_TEXT": { + "LABEL": "Teks tajuk" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Tambah lokal baru", "DESCRIPTION": "Pilih bahasa di mana artikel ini akan ditulis. Ini akan ditambah ke senarai terjemahan anda, dan anda boleh menambah lebih banyak kemudian.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Pratonton", "PUBLISH": "Terbitkan", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draf", "ARCHIVE": "Arkib", "BACK_TO_ARTICLES": "Kembali ke artikel" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Lebih banyak sifat", "UNCATEGORIZED": "Tidak dikategorikan", diff --git a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json index dfd586a29..7c8bb477d 100644 --- a/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ms/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "To add your Twitter profile as a channel, you need to authenticate your Twitter Profile by clicking on 'Sign in with Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Konfigurasi Semula", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID Akaun Perniagaan", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Kunci API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Penyelarasan templat berjaya dimulakan. Ia mungkin mengambil masa beberapa minit untuk dikemas kini.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Tutup", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Paparkan nombor telefon", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Tambah", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Phone number", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Batalkan", + "CONTINUE": "Teruskan", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ms/index.js b/app/javascript/dashboard/i18n/locale/ms/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ms/index.js +++ b/app/javascript/dashboard/i18n/locale/ms/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ms/integrations.json b/app/javascript/dashboard/i18n/locale/ms/integrations.json index 3cca29ddb..f42fe5ec8 100644 --- a/app/javascript/dashboard/i18n/locale/ms/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ms/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Acara Langganan", "LEARN_MORE": "Ketahui lebih lanjut tentang webhook", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Rahsia", "COPY": "Salin rahsia ke papan klip", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Kapten", "HEADER_KNOW_MORE": "Ketahui lebih lanjut", + "OVERVIEW": { + "HEADER": "Gambaran Keseluruhan", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Soalan Lazim Tertunggak", + "DOCUMENTS": "Dokumen" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Tempat Permainan", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Pengebilan", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Pembantu", "SWITCH_ASSISTANT": "Bertukar antara pembantu", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Masukkan nama pembantu", "ERROR": "Nama diperlukan" }, - "TEMPERATURE": { - "LABEL": "Suhu Respons", - "DESCRIPTION": "Laraskan sejauh mana kreativiti atau kekangan dalam respons pembantu. Nilai yang lebih rendah menghasilkan respons yang lebih fokus dan deterministik, manakala nilai yang lebih tinggi membenarkan output yang lebih kreatif dan pelbagai." - }, "DESCRIPTION": { "LABEL": "Penerangan", "PLACEHOLDER": "Masukkan penerangan pembantu", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Dokumen", "ADD_NEW": "Cipta dokumen baru", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} dipilih", "SELECT_ALL": "Pilih semua ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Soalan Lazim Berkaitan", - "DESCRIPTION": "Soalan Lazim ini dijana terus daripada dokumen." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Salin", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Masukkan URL dokumen untuk menambahnya sebagai sumber pengetahuan dan pilih pembantu untuk dikaitkan dengannya.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Terdapat ralat semasa memadam dokumen, sila cuba lagi." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Lihat Respons Berkaitan", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Padam Dokumen" diff --git a/app/javascript/dashboard/i18n/locale/ms/onboarding.json b/app/javascript/dashboard/i18n/locale/ms/onboarding.json index cde30bd99..4ea0e5ad2 100644 --- a/app/javascript/dashboard/i18n/locale/ms/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ms/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Teruskan", + "SKIP": "Langkau", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Sedia", + "HELP_CENTER": "Pusat Bantuan", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} kategori | {count} kategori", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Sambung", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Suara", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Sambung", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ms/report.json b/app/javascript/dashboard/i18n/locale/ms/report.json index e990aa448..b3e4cc73c 100644 --- a/app/javascript/dashboard/i18n/locale/ms/report.json +++ b/app/javascript/dashboard/i18n/locale/ms/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Tiada dijumpa" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ms/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ms/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ms/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ms/settings.json b/app/javascript/dashboard/i18n/locale/ms/settings.json index 27a3f423c..784b6217c 100644 --- a/app/javascript/dashboard/i18n/locale/ms/settings.json +++ b/app/javascript/dashboard/i18n/locale/ms/settings.json @@ -86,9 +86,21 @@ "NOTE": "Urus ciri keselamatan tambahan untuk akaun anda.", "MFA_BUTTON": "Urus Pengesahan Dua Faktor" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Access Token", "NOTE": "Token ini boleh digunakan jika anda membina integrasi berasaskan API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Salin", "RESET": "Tetapkan Semula", "CONFIRM_RESET": "Adakah anda pasti?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Semua Syarikat", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Pembantu", + "CAPTAIN_OVERVIEW": "Gambaran Keseluruhan", "CAPTAIN_DOCUMENTS": "Dokumen", "CAPTAIN_RESPONSES": "Soalan Lazim", "CAPTAIN_TOOLS": "Alat", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Pemberitahuan", "CANNED_RESPONSES": "Respons Sedia Ada", "INTEGRATIONS": "Integrasi", + "DATA": "Data", "PROFILE_SETTINGS": "Tetapan Profil", "ACCOUNT_SETTINGS": "Tetapan Akaun", "APPLICATIONS": "Aplikasi", @@ -379,11 +393,124 @@ "INFO_TEXT": "Biarkan sistem menandakan anda luar talian secara automatik apabila anda tidak menggunakan aplikasi atau papan pemuka.", "INFO_SHORT": "Tandakan luar talian secara automatik apabila anda tidak menggunakan aplikasi." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Susun mengikut", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Baca dokumen", "SECURITY": "Keselamatan", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Aliran Kerja Perbualan" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kenalan", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Mesej" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Batalkan", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Akan datang" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nama", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Gagal", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Tetapan Captain", "DESCRIPTION": "Konfigurasikan model AI dan ciri untuk Captain anda. Captain menggunakan pengebilan berasaskan kredit, anda akan dikenakan kredit untuk setiap tindakan yang diambil Captain berdasarkan model yang dipilih.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Dayakan atau nyahdayakan ciri yang dikuasakan AI.", "AUDIO_TRANSCRIPTION": { "TITLE": "Transkripsi Audio", - "DESCRIPTION": "Secara automatik menukar mesej suara dan rakaman panggilan kepada transkrip teks yang boleh dicari." + "DESCRIPTION": "Secara automatik menukar mesej suara dan rakaman panggilan kepada transkrip teks yang boleh dicari.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Pengindeksan Carian Pusat Bantuan", @@ -439,7 +568,18 @@ "TITLE": "Pelan Semasa", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Bilangan tempat duduk", - "RENEWS_ON": "Diperbaharui pada" + "RENEWS_ON": "Diperbaharui pada", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Lihat Harga", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Beli Kredit", "LOADING": "Memuatkan pilihan...", "FETCH_ERROR": "Gagal memuatkan pilihan kredit. Sila cuba lagi.", + "RETRY": "Retry", "PURCHASE_ERROR": "Gagal memproses pembelian. Sila cuba lagi.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Agihkan maksima", "DURATION": "Perbualan setiap ejen dalam setiap" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Petibuk yang ditambah", "DESCRIPTION": "Tambah petibuk yang mana polisi ini akan digunakan.", diff --git a/app/javascript/dashboard/i18n/locale/ne/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ne/advancedFilters.json index a991cb25b..7ae505a34 100644 --- a/app/javascript/dashboard/i18n/locale/ne/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ne/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "सम्पर्कहरू खोज्नुहोस्", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "सम्पर्क", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/ne/chatlist.json b/app/javascript/dashboard/i18n/locale/ne/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/ne/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ne/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ne/companies.json b/app/javascript/dashboard/i18n/locale/ne/companies.json index 5ed2159b1..ac04e5866 100644 --- a/app/javascript/dashboard/i18n/locale/ne/companies.json +++ b/app/javascript/dashboard/i18n/locale/ne/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ne/contact.json b/app/javascript/dashboard/i18n/locale/ne/contact.json index 566a2161e..14196a377 100644 --- a/app/javascript/dashboard/i18n/locale/ne/contact.json +++ b/app/javascript/dashboard/i18n/locale/ne/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "गुणहरू", "HISTORY": "इतिहास", "NOTES": "टिप्पणीहरू", + "MEDIA": "Media", "MERGE": "मर्ज गर्नुहोस्" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ne/conversation.json b/app/javascript/dashboard/i18n/locale/ne/conversation.json index 706834290..da2fa873c 100644 --- a/app/javascript/dashboard/i18n/locale/ne/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ne/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "२४ घण्टे सन्देश विन्डो प्रतिबन्धका कारण तपाईंले यस कुराकानीमा टेम्प्लेट सन्देश प्रयोग गरेर मात्र जवाफ दिन सक्नुहुन्छ", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "२४ घण्टे सन्देश विन्डो प्रतिबन्ध", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "यो Instagram खाता नयाँ Instagram च्यानल इनबक्समा सारिएको छ। सबै नयाँ सन्देशहरू त्यहाँ देखिनेछन्। तपाईं अब यस कुराकानीबाट सन्देश पठाउन सक्नुहुन्न।", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "तपाईंले यसलाई जवाफ दिँदै हुनुहुन्छ:", "REMOVE_SELECTION": "चयन हटाउनुहोस्", "DOWNLOAD": "डाउनलोड", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "अडियो खोल्न सकिएन", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "यहाँ तान्नुहोस् र छोड्नुहोस् संलग्न गर्न", + "IMAGE_UPLOAD_SUCCESS": "छवि सफलतापूर्वक अपलोड गरियो।", "START_AUDIO_RECORDING": "अडियो रेकर्डिङ सुरु गर्नुहोस्", "STOP_AUDIO_RECORDING": "अडियो रेकर्डिङ रोक्नुहोस्", "COPILOT_THINKING": "Copilot सोच्दैछ", @@ -303,6 +306,25 @@ "MESSAGE": "यो कार्य फिर्ता गर्न सकिँदैन", "DELETE": "मेटाउनुहोस्", "CANCEL": "रद्द गर्नुहोस्" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "अर्डर #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ne/emoji.json b/app/javascript/dashboard/i18n/locale/ne/emoji.json index d5b96f0f9..4cdf607c8 100644 --- a/app/javascript/dashboard/i18n/locale/ne/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ne/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "हटाउनुहोस्", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ne/helpCenter.json b/app/javascript/dashboard/i18n/locale/ne/helpCenter.json index c0bac7a54..546d6e7de 100644 --- a/app/javascript/dashboard/i18n/locale/ne/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ne/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "प्रकाशित", "ARCHIVED": "अभिलेखित" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "वर्गीकरण नगरिएको" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "सबै भाषाहरू" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "नयाँ लेख" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "यस श्रेणीमा कुनै लेखहरू छैनन्", "SUBTITLE": "यस श्रेणीका लेखहरू यहाँ देखिनेछन्" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "नयाँ श्रेणी", "EDIT_CATEGORY": "श्रेणी सम्पादन गर्नुहोस्", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} श्रेणी | {n} श्रेणीहरू", "BREADCRUMB": { "CATEGORY_LOCALE": "श्रेणीहरू ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "कुनै श्रेणी फेला परेन", "SUBTITLE": "श्रेणीहरू यहाँ देखिनेछन्। तपाईं 'नयाँ श्रेणी' बटन क्लिक गरेर श्रेणी थप्न सक्नुहुन्छ।" }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} लेख | {count} लेखहरू" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "कुनै भाषा उपलब्ध छैन | {n} भाषा | {n} भाषाहरू", "NEW_LOCALE_BUTTON_TEXT": "नयाँ भाषा", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} लेख | {count} लेखहरू", "CATEGORIES_COUNT": "{count} श्रेणी | {count} श्रेणीहरू", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "पूर्वनिर्धारित बनाउनुहोस्", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "मेटाउनुहोस्" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "श्रेणीबिना" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "पृष्ठ शीर्षक" + }, + "HEADER_TEXT": { + "LABEL": "हेडर पाठ" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "नयाँ स्थान थप्नुहोस्", "DESCRIPTION": "यस लेख कुन भाषामा लेखिनेछ चयन गर्नुहोस्। यसलाई तपाईंको अनुवाद सूचीमा थपिनेछ, र तपाईं पछि थप्न सक्नुहुन्छ।", @@ -730,10 +791,30 @@ }, "PREVIEW": "पूर्वावलोकन", "PUBLISH": "प्रकाशित गर्नुहोस्", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "ड्राफ्ट", "ARCHIVE": "अभिलेख", "BACK_TO_ARTICLES": "लेखहरूमा फर्कनुहोस्" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "थप गुणहरू", "UNCATEGORIZED": "वर्गीकरण नगरिएको", diff --git a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json index 65c1c2719..91bf1fa6a 100644 --- a/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ne/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram सँग जडान गर्दा त्रुटि भयो, कृपया फेरि प्रयास गर्नुहोस्", "ERROR_AUTH": "Instagram सँग जडान गर्दा त्रुटि भयो, कृपया फेरि प्रयास गर्नुहोस्", "NEW_INBOX_SUGGESTION": "यो Instagram खाता पहिले अर्को इनबक्ससँग लिंक गरिएको थियो र अब यहाँ स्थानान्तरण गरिएको छ। सबै नयाँ सन्देशहरू यहाँ देखिनेछन्। पुरानो इनबक्सले अब यस खाताका लागि सन्देश पठाउन वा प्राप्त गर्न सक्दैन।।", - "DUPLICATE_INBOX_BANNER": "यो Instagram खाता नयाँ Instagram च्यानल इनबक्समा स्थानान्तरण गरिएको छ। तपाईंले यस इनबक्सबाट Instagram सन्देशहरू पठाउन/प्राप्त गर्न सक्नुहुने छैन।।" + "DUPLICATE_INBOX_BANNER": "यो Instagram खाता नयाँ Instagram च्यानल इनबक्समा स्थानान्तरण गरिएको छ। तपाईंले यस इनबक्सबाट Instagram सन्देशहरू पठाउन/प्राप्त गर्न सक्नुहुने छैन।।", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "TikTok सँग जारी राख्नुहोस्", "CONNECT_YOUR_TIKTOK_PROFILE": "तपाईंको TikTok प्रोफाइल जडान गर्नुहोस्", "HELP": "तपाईंको TikTok प्रोफाइललाई च्यानलको रूपमा थप्न, 'TikTok सँग जारी राख्नुहोस्' मा क्लिक गरेर प्रमाणित गर्नु आवश्यक छ ", "ERROR_MESSAGE": "TikTok सँग जडान गर्दा त्रुटि भयो, कृपया पुन: प्रयास गर्नुहोस्", - "ERROR_AUTH": "TikTok सँग जडान गर्दा त्रुटि भयो, कृपया पुन: प्रयास गर्नुहोस्" + "ERROR_AUTH": "TikTok सँग जडान गर्दा त्रुटि भयो, कृपया पुन: प्रयास गर्नुहोस्", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "तपाईंको Twitter प्रोफाइललाई च्यानलको रूपमा थप्न, तपाईंले 'Sign in with Twitter' मा क्लिक गरेर आफ्नो Twitter प्रोफाइल प्रमाणित गर्न आवश्यक छ ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "यो इनबक्स WhatsApp एम्बेडेड साइनअप मार्फत जडान गरिएको छ।", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "तपाईंले यो इनबक्स पुन: कन्फिगर गरेर तपाईंको WhatsApp व्यवसाय सेटिङहरू अपडेट गर्न सक्नुहुन्छ।", "WHATSAPP_RECONFIGURE_BUTTON": "पुन: कन्फिगर गर्नुहोस्", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "व्यवसाय खाता ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API कुञ्जी", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "WhatsApp व्यवसायसँग जडान गर्नुहोस्", "WHATSAPP_CONNECT_SUBHEADER": "सरल व्यवस्थापनका लागि WhatsApp एम्बेडेड साइनअपमा अपग्रेड गर्नुहोस्।", "WHATSAPP_CONNECT_DESCRIPTION": "यो इनबक्सलाई WhatsApp व्यवसायसँग जडान गर्नुहोस् र थप सुविधाहरू र सजिलो व्यवस्थापन पाउनुहोस्।", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "तपाईंका उपलब्ध टेम्प्लेटहरू अपडेट गर्न WhatsApp बाट म्यानुअली सन्देश टेम्प्लेटहरू समक्रमण गर्नुहोस्।", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "टेम्प्लेटहरू समक्रमण गर्नुहोस्", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "टेम्प्लेटहरू समक्रमण सफलतापूर्वक सुरु भयो। अपडेट हुन केही मिनेट लाग्न सक्छ।", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "बन्दा गार्नुहोस्", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "फोन नम्बर प्रदर्शन गर्नुहोस्", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "थप्नुहोस्", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "फोन नम्बर", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "जारी राख्नुहोस्", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ne/index.js b/app/javascript/dashboard/i18n/locale/ne/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ne/index.js +++ b/app/javascript/dashboard/i18n/locale/ne/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ne/integrations.json b/app/javascript/dashboard/i18n/locale/ne/integrations.json index 8838fa3eb..aea726ae1 100644 --- a/app/javascript/dashboard/i18n/locale/ne/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ne/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "सदस्यता लिएका घटनाहरू", "LEARN_MORE": "वेबहुकहरू बारे थप जान्नुहोस्", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "कप्तान", "HEADER_KNOW_MORE": "थप जान्नु", + "OVERVIEW": { + "HEADER": "सारांश", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "यो महिना", + "LAST_MONTH": "अघिल्लो महिना" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "कागजातहरू" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "प्लेलगाउँड", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "बिलिङ", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "सहायकहरू", "SWITCH_ASSISTANT": "सहायकहरू बीच साट्नुस्", @@ -494,10 +577,6 @@ "PLACEHOLDER": "सहायकको नाम प्रविष्ट गर्नुहोस्", "ERROR": "नाम आवश्यक छ" }, - "TEMPERATURE": { - "LABEL": "प्रतिक्रिया तापक्रम", - "DESCRIPTION": "सहायकको प्रतिक्रियाहरू कति सिर्जनात्मक वा प्रतिबन्धित हुनुपर्छ समायोजन गर्नुहोस्। कम मानहरूले बढी केन्द्रित र निश्चित प्रतिक्रियाहरू उत्पादन गर्छन्, जबकि उच्च मानहरूले बढी सिर्जनात्मक र विविध आउटपुटहरू अनुमति दिन्छ।" - }, "DESCRIPTION": { "LABEL": "विवरण", "PLACEHOLDER": "सहायकको विवरण प्रविष्ट गर्नुहोस्", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "कागजातहरू", "ADD_NEW": "नयाँ कागजात सिर्जना गर्नुहोस्", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} चयन गरियो", "SELECT_ALL": "सबै चयन गर्नुहोस् ({count})", "UNSELECT_ALL": "सबै चयन हटाउनुहोस् ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "सम्बन्धित FAQ", - "DESCRIPTION": "यी FAQ सिधा कागजातबाट उत्पन्न भएका हुन्।" + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "प्रतिलिपि गर्नुहोस्", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "कागजातको URL प्रविष्ट गर्नुहोस् र यसलाई ज्ञान स्रोतको रूपमा थप्न र सम्बन्धित सहायक चयन गर्नुस्।", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "कागजात मेटाउँदा त्रुटि भयो, कृपया फेरि प्रयास गर्नुहोस्।" }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "सम्बन्धित प्रतिक्रियाहरू हेर्नुहोस्", + "VIEW_DETAILS": "विवरण हेर्नुहोस्", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "कागजात मेटाउनुहोस्" diff --git a/app/javascript/dashboard/i18n/locale/ne/onboarding.json b/app/javascript/dashboard/i18n/locale/ne/onboarding.json index e519167de..e1c0e6875 100644 --- a/app/javascript/dashboard/i18n/locale/ne/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ne/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "जारी राख्नुहोस्", + "SKIP": "छोड्नुहोस्", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "तयार", + "HELP_CENTER": "मद्दत केन्द्र", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} श्रेणी | {count} श्रेणीहरू", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "जोड्नुहोस्", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "भ्वाइस", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "जोड्नुहोस्", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ne/report.json b/app/javascript/dashboard/i18n/locale/ne/report.json index 66bad1006..23ca1b986 100644 --- a/app/javascript/dashboard/i18n/locale/ne/report.json +++ b/app/javascript/dashboard/i18n/locale/ne/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "फिल्टर हटाउनुहोस्", "EMPTY_LIST": "कुनै परिणाम फेला परेन" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "असाइन गरिएको छैन", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / पृष्ठ" diff --git a/app/javascript/dashboard/i18n/locale/ne/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ne/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ne/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ne/settings.json b/app/javascript/dashboard/i18n/locale/ne/settings.json index 4b22f2fcb..df4a61803 100644 --- a/app/javascript/dashboard/i18n/locale/ne/settings.json +++ b/app/javascript/dashboard/i18n/locale/ne/settings.json @@ -86,9 +86,21 @@ "NOTE": "आफ्नो खाताका लागि थप सुरक्षा सुविधाहरू व्यवस्थापन गर्नुहोस्।", "MFA_BUTTON": "दुई-चरण प्रमाणीकरण व्यवस्थापन गर्नुहोस्" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Access Token", "NOTE": "यदि तपाईं API आधारित एकीकरण निर्माण गर्दै हुनुहुन्छ भने यो टोकन प्रयोग गर्न सकिन्छ", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "प्रतिलिपि गर्नु", "RESET": "रिसेट गर्नुहोस्", "CONFIRM_RESET": "पक्का हो?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "सबै कम्पनीहरू", "CAPTAIN": "क्याप्टेन", "CAPTAIN_ASSISTANTS": "सहायकहरू", + "CAPTAIN_OVERVIEW": "सारांश", "CAPTAIN_DOCUMENTS": "कागजातहरू", "CAPTAIN_RESPONSES": "सोधिने प्रश्नहरू", "CAPTAIN_TOOLS": "उपकरणहरू", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "सूचनाहरू", "CANNED_RESPONSES": "तयार जवाफहरू", "INTEGRATIONS": "एकीकरणहरू", + "DATA": "Data", "PROFILE_SETTINGS": "प्रोफाइल सेटिङहरू", "ACCOUNT_SETTINGS": "खाता सेटिङ", "APPLICATIONS": "अनुप्रयोगहरू", @@ -379,11 +393,124 @@ "INFO_TEXT": "तपाईंले एप वा ड्यासबोर्ड प्रयोग नगर्दा प्रणालीले तपाईंलाई स्वचालित रूपमा अफलाइन मार्क गर्न दिनुहोस्।", "INFO_SHORT": "एप प्रयोग नगर्दा स्वचालित रूपमा अफलाइन मार्क गर्नुहोस्।" }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "द्वारा क्रमबद्ध गर्नुहोस्", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "डक्स पढ्नु", "SECURITY": "सुरक्षा", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "वार्ता कार्यप्रवाह" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "आयात गर्नुहोस्", + "EXPORT": "निर्यात गर्नुहोस्" + }, + "TYPES": { + "CONTACTS": "सम्पर्कहरू", + "CONVERSATIONS": "Conversations", + "MESSAGES": "सन्देशहरू" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "आयात गर्नुहोस्" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "छिट्टै आउँदैछ" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "आयात गर्नुहोस्", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "सिर्जना गरिएको", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "सिर्जना गरिएको", + "DURATION": "अवधि", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "असफल", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain सेटिङहरू", "DESCRIPTION": "Captain का लागि तपाईंका AI मोडेल र सुविधाहरू कन्फिगर गर्नुहोस्। Captain क्रेडिटमा आधारित बिलिङमा चल्छ, चयन गरिएको मोडेलअनुसार Captain ले प्रत्येक कार्य गर्दा तपाईंको क्रेडिट कटौती हुनेछ।", @@ -414,7 +541,9 @@ "DESCRIPTION": "एआई-सञ्चालित फिचरहरू सक्षम वा अक्षम गर्नुहोस्।", "AUDIO_TRANSCRIPTION": { "TITLE": "अडियो ट्रान्सक्रिप्सन", - "DESCRIPTION": "आवाज सन्देश र कल रेकर्डिङलाई स्वचालित रूपमा खोज्न मिल्ने पाठमा रूपान्तरण गर्नुहोस्।" + "DESCRIPTION": "आवाज सन्देश र कल रेकर्डिङलाई स्वचालित रूपमा खोज्न मिल्ने पाठमा रूपान्तरण गर्नुहोस्।", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "हेल्प सेन्टर खोज अनुक्रमणिका", @@ -439,7 +568,18 @@ "TITLE": "हालको योजना", "PLAN_NOTE": "तपाईं हाल **{plan}** योजना र **{quantity}** लाइसेन्सहरूसँग सदस्यता लिनुभएको छ", "SEAT_COUNT": "सिटहरूको संख्या", - "RENEWS_ON": "नवीकरण मिति" + "RENEWS_ON": "नवीकरण मिति", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "मूल्य निर्धारण हेर्नुहोस्", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "क्रेडिट किन्नुहोस्", "LOADING": "विकल्पहरू लोड हुँदैछन्...", "FETCH_ERROR": "क्रेडिट विकल्पहरू लोड गर्न असफल भयो। कृपया फेरि प्रयास गर्नुहोस्।", + "RETRY": "Retry", "PURCHASE_ERROR": "किनमेल प्रक्रिया असफल भयो। कृपया फेरि प्रयास गर्नुहोस्।", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "अधिकतम तोक्नुहोस्", "DURATION": "प्रति एजेन्ट प्रत्येक" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "थपिएका इनबक्सहरू", "DESCRIPTION": "यो नीति लागू हुने इनबक्सहरू थप्नुहोस्।", diff --git a/app/javascript/dashboard/i18n/locale/nl/advancedFilters.json b/app/javascript/dashboard/i18n/locale/nl/advancedFilters.json index 1d0836347..31793b427 100644 --- a/app/javascript/dashboard/i18n/locale/nl/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/nl/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OF" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Gelijk aan", "not_equal_to": "Niet gelijk aan", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Toegewezen naam", "INBOX_NAME": "Naam postvak", "TEAM_NAME": "Team Naam", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversatie ID", "CAMPAIGN_NAME": "Campagne naam", "LABELS": "Labelen", diff --git a/app/javascript/dashboard/i18n/locale/nl/chatlist.json b/app/javascript/dashboard/i18n/locale/nl/chatlist.json index 6337ee3e6..8b2882af9 100644 --- a/app/javascript/dashboard/i18n/locale/nl/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/nl/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/nl/companies.json b/app/javascript/dashboard/i18n/locale/nl/companies.json index 30acd9b46..42def1dc2 100644 --- a/app/javascript/dashboard/i18n/locale/nl/companies.json +++ b/app/javascript/dashboard/i18n/locale/nl/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/nl/components.json b/app/javascript/dashboard/i18n/locale/nl/components.json index 23bbe0d26..cb9a1092d 100644 --- a/app/javascript/dashboard/i18n/locale/nl/components.json +++ b/app/javascript/dashboard/i18n/locale/nl/components.json @@ -64,6 +64,6 @@ "BULLET_LIST": "Bullet List", "ORDERED_LIST": "Ordered List", "TABLE": "Table", - "IMAGE": "Image" + "IMAGE": "Afbeelding" } } diff --git a/app/javascript/dashboard/i18n/locale/nl/contact.json b/app/javascript/dashboard/i18n/locale/nl/contact.json index 07f5139c5..b41cae288 100644 --- a/app/javascript/dashboard/i18n/locale/nl/contact.json +++ b/app/javascript/dashboard/i18n/locale/nl/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notities", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/nl/conversation.json b/app/javascript/dashboard/i18n/locale/nl/conversation.json index 31aeb37a7..14467f899 100644 --- a/app/javascript/dashboard/i18n/locale/nl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/nl/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Je kunt dit gesprek alleen beantwoorden met een sjabloon bericht vanwege", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Beperking van 24-uur berichtenvenster", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Je antwoordt op:", "REMOVE_SELECTION": "Verwijder selectie", "DOWNLOAD": "Download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Geluid kon niet worden geopend", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Sleep hierheen om toe te voegen", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio-opname", "STOP_AUDIO_RECORDING": "Stop audio-opname", "COPILOT_THINKING": "Copilot is aan het denken", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Verwijderen", "CANCEL": "Annuleren" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Beschrijving", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Alles weergeven", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/nl/emoji.json b/app/javascript/dashboard/i18n/locale/nl/emoji.json index d364fd390..0f87e8137 100644 --- a/app/javascript/dashboard/i18n/locale/nl/emoji.json +++ b/app/javascript/dashboard/i18n/locale/nl/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Zoek emojis", "NOT_FOUND": "Er zijn geen overeenkomende emoji's gevonden", "REMOVE": "Verwijderen" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Er zijn geen overeenkomende emoji's gevonden", + "NO_ICON": "No icons match your search", + "REMOVE": "Verwijderen", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/nl/helpCenter.json b/app/javascript/dashboard/i18n/locale/nl/helpCenter.json index 0cb2a8342..e1f58b412 100644 --- a/app/javascript/dashboard/i18n/locale/nl/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/nl/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Verwijderen", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Verwijderen" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Naam" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Titel" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json index 5e901d3b9..b4c0dc6cd 100644 --- a/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/nl/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Om uw Twitterprofiel als kanaal toe te voegen moet u uw Twitterprofiel verifiëren door te klikken op 'Meld je aan met Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API sleutel", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Sluiten", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Toevoegen", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Postvak In", + "PHONE_NUMBER": "Telefoon nummer", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Terug", + "CANCEL": "Annuleren", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/nl/index.js b/app/javascript/dashboard/i18n/locale/nl/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/nl/index.js +++ b/app/javascript/dashboard/i18n/locale/nl/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/nl/integrations.json b/app/javascript/dashboard/i18n/locale/nl/integrations.json index ad144e284..4fa8ed6d4 100644 --- a/app/javascript/dashboard/i18n/locale/nl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/nl/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Meer weten", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Negeer" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Negeer" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Speelplaats", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistenten", "SWITCH_ASSISTANT": "Wissel tussen assistenten", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Beschrijving", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Niet beschikbaar", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopiëren", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Details bekijken", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/nl/onboarding.json b/app/javascript/dashboard/i18n/locale/nl/onboarding.json index 931d6c9d4..b1ef41c5a 100644 --- a/app/javascript/dashboard/i18n/locale/nl/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/nl/onboarding.json @@ -1,34 +1,88 @@ { "ONBOARDING_NEXT": { - "GREETING": "Hello {name}!", - "SUBTITLE": "Please review the following details", - "YOUR_DETAILS": "Your details", - "COMPANY_DETAILS": "Company details", + "GREETING": "Hallo {name}!", + "SUBTITLE": "Controleer de volgende gegevens", + "YOUR_DETAILS": "Jouw gegevens", + "COMPANY_DETAILS": "Bedrijfsgegevens", "FIELDS": { "EMAIL": "E-mailadres", - "YOUR_ROLE": "Your Role", + "YOUR_ROLE": "Jouw functie", "WEBSITE": "Website", "LANGUAGE": "Taal", - "TIMEZONE": "Timezone", - "COMPANY_SIZE": "Company Size", - "INDUSTRY": "Industry", - "REFERRAL_SOURCE": "Where did you find us?" + "TIMEZONE": "Tijdzone", + "COMPANY_SIZE": "Bedrijfsgrootte", + "INDUSTRY": "Sector", + "REFERRAL_SOURCE": "Hoe ben je bij ons terechtgekomen?" }, "PLACEHOLDERS": { - "SELECT_ROLE": "Select your role", + "SELECT_ROLE": "Selecteer jouw rol", "ENTER_WEBSITE": "www.example.com", - "SELECT_LANGUAGE": "Select language", - "SELECT_TIMEZONE": "Select timezone", - "SELECT_COMPANY_SIZE": "Select company size", - "SELECT_INDUSTRY": "Select industry", - "SELECT_REFERRAL_SOURCE": "Select source" + "SELECT_LANGUAGE": "Selecteer taal", + "SELECT_TIMEZONE": "Selecteer tijdzone", + "SELECT_COMPANY_SIZE": "Selecteer bedrijfsgrootte", + "SELECT_INDUSTRY": "Selecteer sector", + "SELECT_REFERRAL_SOURCE": "Selecteer bron" }, - "EMAIL_VERIFIED": "Email verified", - "SETTING_UP": "Setting up your account...", - "CONTINUE": "Continue", - "SAVING": "Saving...", - "VALIDATION_ERROR": "Please fill in all required fields", + "EMAIL_VERIFIED": "E-mailadres geverifieerd", + "SETTING_UP": "Je account wordt aangemaakt...", + "CONTINUE": "Volgende", + "SAVING": "Opslaan...", + "VALIDATION_ERROR": "Vul alle verplichte velden in", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Verbinden", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-mailadres", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Alles weergeven", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Verbinden", + "BACK": "Terug", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/nl/report.json b/app/javascript/dashboard/i18n/locale/nl/report.json index e3eb2f484..64dfaa30a 100644 --- a/app/javascript/dashboard/i18n/locale/nl/report.json +++ b/app/javascript/dashboard/i18n/locale/nl/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Geen resultaten gevonden" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Niet toegewezen", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/nl/sessionLimit.json b/app/javascript/dashboard/i18n/locale/nl/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/nl/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/nl/settings.json b/app/javascript/dashboard/i18n/locale/nl/settings.json index 72430629f..7c09c9e96 100644 --- a/app/javascript/dashboard/i18n/locale/nl/settings.json +++ b/app/javascript/dashboard/i18n/locale/nl/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Toegangs-token", "NOTE": "Dit token kan worden gebruikt als u een API gebaseerde integratie bouwt", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopiëren", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifications", "CANNED_RESPONSES": "Standaard antwoorden", "INTEGRATIONS": "Integraties", + "DATA": "Data", "PROFILE_SETTINGS": "Profielinstellingen", "ACCOUNT_SETTINGS": "Accountinstellingen", "APPLICATIONS": "Applicaties", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importeren", + "EXPORT": "Exporteren" + }, + "TYPES": { + "CONTACTS": "Contacten", + "CONVERSATIONS": "Gesprekken", + "MESSAGES": "Berichten" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Annuleren", + "IMPORT": "Importeren" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importeren", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Naam", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Aangemaakt op", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Aangemaakt op", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Allemaal", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Bericht" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/no/advancedFilters.json b/app/javascript/dashboard/i18n/locale/no/advancedFilters.json index ebac1800b..a278e9cf7 100644 --- a/app/javascript/dashboard/i18n/locale/no/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/no/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Navn på innboks", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Etiketter", diff --git a/app/javascript/dashboard/i18n/locale/no/chatlist.json b/app/javascript/dashboard/i18n/locale/no/chatlist.json index 34505045c..084f2fad9 100644 --- a/app/javascript/dashboard/i18n/locale/no/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/no/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/no/companies.json b/app/javascript/dashboard/i18n/locale/no/companies.json index 1dca466d9..e6650bc02 100644 --- a/app/javascript/dashboard/i18n/locale/no/companies.json +++ b/app/javascript/dashboard/i18n/locale/no/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/no/contact.json b/app/javascript/dashboard/i18n/locale/no/contact.json index 36b0c84c1..38d04ade9 100644 --- a/app/javascript/dashboard/i18n/locale/no/contact.json +++ b/app/javascript/dashboard/i18n/locale/no/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/no/conversation.json b/app/javascript/dashboard/i18n/locale/no/conversation.json index cb6b2f431..edb864e6e 100644 --- a/app/javascript/dashboard/i18n/locale/no/conversation.json +++ b/app/javascript/dashboard/i18n/locale/no/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24-timers meldingsrestriksjon", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Du svarer til:", "REMOVE_SELECTION": "Fjern utvalget", "DOWNLOAD": "Last ned", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot tenker", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Slett", "CANCEL": "Avbryt" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Beskrivelse", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/no/emoji.json b/app/javascript/dashboard/i18n/locale/no/emoji.json index 08481a53f..734cfff81 100644 --- a/app/javascript/dashboard/i18n/locale/no/emoji.json +++ b/app/javascript/dashboard/i18n/locale/no/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Fjern" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Fjern", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/no/helpCenter.json b/app/javascript/dashboard/i18n/locale/no/helpCenter.json index 0ed9ed17a..b3f33c383 100644 --- a/app/javascript/dashboard/i18n/locale/no/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/no/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Slett", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Slett" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Navn" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json index 3bc48e51d..61a2f3e15 100644 --- a/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/no/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "For å legge til din Twitter-profil som kanal, må du autorisere din Twitter-profil ved å klikke på 'Logg inn med Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Lukk", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Telefonnummer", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Tilbake", + "CANCEL": "Avbryt", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/no/index.js b/app/javascript/dashboard/i18n/locale/no/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/no/index.js +++ b/app/javascript/dashboard/i18n/locale/no/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/no/integrations.json b/app/javascript/dashboard/i18n/locale/no/integrations.json index 07a8fc085..6b458721f 100644 --- a/app/javascript/dashboard/i18n/locale/no/integrations.json +++ b/app/javascript/dashboard/i18n/locale/no/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Lær mer", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Lekeplass", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistenter", "SWITCH_ASSISTANT": "Bytt mellom assistenter", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Beskrivelse", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopier", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/no/onboarding.json b/app/javascript/dashboard/i18n/locale/no/onboarding.json index 0244d6cf6..0cc033357 100644 --- a/app/javascript/dashboard/i18n/locale/no/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/no/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Koble til", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-post", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Koble til", + "BACK": "Tilbake", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/no/report.json b/app/javascript/dashboard/i18n/locale/no/report.json index 7595695cd..b093ef722 100644 --- a/app/javascript/dashboard/i18n/locale/no/report.json +++ b/app/javascript/dashboard/i18n/locale/no/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Ingen resultater funnet" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Ikke tildelt", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/no/sessionLimit.json b/app/javascript/dashboard/i18n/locale/no/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/no/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/no/settings.json b/app/javascript/dashboard/i18n/locale/no/settings.json index 37370dee5..cffac543c 100644 --- a/app/javascript/dashboard/i18n/locale/no/settings.json +++ b/app/javascript/dashboard/i18n/locale/no/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Tilgangstoken", "NOTE": "Dette tokenet kan brukes hvis du lager en API-basert integrasjon", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopier", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Varsler", "CANNED_RESPONSES": "Forhåndslagde svar", "INTEGRATIONS": "Integrasjoner", + "DATA": "Data", "PROFILE_SETTINGS": "Brukerinnstillinger", "ACCOUNT_SETTINGS": "Kontoinnstillinger", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kontakter", + "CONVERSATIONS": "Samtaler", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Avbryt", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Navn", + "TYPE": "Type", + "STATUS": "Satus", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Alle", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Melding" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/pl/advancedFilters.json b/app/javascript/dashboard/i18n/locale/pl/advancedFilters.json index c893c1486..84fc8dce4 100644 --- a/app/javascript/dashboard/i18n/locale/pl/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/pl/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "lub" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Równe", "not_equal_to": "Nierówne", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Imię przydzielonej osoby", "INBOX_NAME": "Nazwa skrzynki odbiorczej", "TEAM_NAME": "Nazwa zespołu", + "CONTACT": "Kontakt", "CONVERSATION_IDENTIFIER": "Identyfikator konwersacji", "CAMPAIGN_NAME": "Nazwa kampanii", "LABELS": "Etykiety", diff --git a/app/javascript/dashboard/i18n/locale/pl/chatlist.json b/app/javascript/dashboard/i18n/locale/pl/chatlist.json index e957bac03..fa5c54e18 100644 --- a/app/javascript/dashboard/i18n/locale/pl/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/pl/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/pl/companies.json b/app/javascript/dashboard/i18n/locale/pl/companies.json index 8eedccc18..37aff7378 100644 --- a/app/javascript/dashboard/i18n/locale/pl/companies.json +++ b/app/javascript/dashboard/i18n/locale/pl/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/pl/contact.json b/app/javascript/dashboard/i18n/locale/pl/contact.json index 128ffb4ff..1607d815c 100644 --- a/app/javascript/dashboard/i18n/locale/pl/contact.json +++ b/app/javascript/dashboard/i18n/locale/pl/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notatki", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/pl/conversation.json b/app/javascript/dashboard/i18n/locale/pl/conversation.json index d7767fcdf..72f87d188 100644 --- a/app/javascript/dashboard/i18n/locale/pl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pl/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Możesz odpowiedzieć na tę rozmowę tylko za pomocą szablonu wiadomości, ponieważ", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Ograniczenie 24-godzinnego okna wiadomości", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Osoba, której odpowiadasz to:", "REMOVE_SELECTION": "Usuń zaznaczenie", "DOWNLOAD": "Pobierz", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Nie można otworzyć dźwięku", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Przeciągnij i upuść tutaj, aby dołączyć", + "IMAGE_UPLOAD_SUCCESS": "Obraz został pomyślnie przesłany", "START_AUDIO_RECORDING": "Rozpocznij nagrywanie audio", "STOP_AUDIO_RECORDING": "Zatrzymaj nagrywanie audio", "COPILOT_THINKING": "Copilot myśli", @@ -303,6 +306,25 @@ "MESSAGE": "Tej akcji nie można cofnąć", "DELETE": "Usuń", "CANCEL": "Anuluj" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Opis", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/pl/emoji.json b/app/javascript/dashboard/i18n/locale/pl/emoji.json index b0be4426b..b99f3720c 100644 --- a/app/javascript/dashboard/i18n/locale/pl/emoji.json +++ b/app/javascript/dashboard/i18n/locale/pl/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Wyszukaj emoji", "NOT_FOUND": "Nie znaleziono emoji pasującego do wyszukiwania", "REMOVE": "Usuń" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Nie znaleziono emoji pasującego do wyszukiwania", + "NO_ICON": "No icons match your search", + "REMOVE": "Usuń", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/pl/helpCenter.json b/app/javascript/dashboard/i18n/locale/pl/helpCenter.json index b775a08b8..b9fc46488 100644 --- a/app/javascript/dashboard/i18n/locale/pl/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/pl/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Opublikowane", "ARCHIVED": "Zarchiwizowane" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Usuń", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nowa kategoria", "EDIT_CATEGORY": "Edytuj kategorię", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nie znaleziono kategorii", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Usuń" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Bez kategorii" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Imię" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Dodaj nowy język", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Podgląd", "PUBLISH": "Opublikuj", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Szkic", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Tytuł" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Bez kategorii", diff --git a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json index 0602b35c1..0dffa6916 100644 --- a/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pl/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Aby dodać swój profil na Twitterze jako kanał, musisz uwierzytelnić swój profil Twittera, klikając „Zaloguj się przez Twitter”", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID konta firmowego", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Klucz API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Zamknij", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Dodaj", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Skrzynka odbiorcza", + "PHONE_NUMBER": "Numer telefonu", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Powrót", + "CANCEL": "Anuluj", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/pl/index.js b/app/javascript/dashboard/i18n/locale/pl/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/pl/index.js +++ b/app/javascript/dashboard/i18n/locale/pl/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/pl/integrations.json b/app/javascript/dashboard/i18n/locale/pl/integrations.json index 6ab571321..b24ac1087 100644 --- a/app/javascript/dashboard/i18n/locale/pl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pl/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subskrybowane wydarzenia", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Dowiedz się więcej", + "OVERVIEW": { + "HEADER": "Przegląd", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Odrzuć" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Odrzuć" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Pole zabaw", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Rozliczenia", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asystenci", "SWITCH_ASSISTANT": "Przełącz się między asystentami", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Opis", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopiuj", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Zobacz szczegóły", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/pl/onboarding.json b/app/javascript/dashboard/i18n/locale/pl/onboarding.json index 47a6c1445..3270548be 100644 --- a/app/javascript/dashboard/i18n/locale/pl/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/pl/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Wystąpił błąd. Spróbuj ponownie.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Centrum pomocy", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Połącz", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-mail", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Połącz", + "BACK": "Powrót", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/pl/report.json b/app/javascript/dashboard/i18n/locale/pl/report.json index 8304ab2e5..26a805cbc 100644 --- a/app/javascript/dashboard/i18n/locale/pl/report.json +++ b/app/javascript/dashboard/i18n/locale/pl/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Nie znaleziono rekordów" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Nieprzypisane", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/pl/sessionLimit.json b/app/javascript/dashboard/i18n/locale/pl/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/pl/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/pl/settings.json b/app/javascript/dashboard/i18n/locale/pl/settings.json index f79313072..4720689cd 100644 --- a/app/javascript/dashboard/i18n/locale/pl/settings.json +++ b/app/javascript/dashboard/i18n/locale/pl/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token dostępu", "NOTE": "Ten token może być użyty, jeśli budujesz integrację opartą na API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopiuj", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Przegląd", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Powiadomienia", "CANNED_RESPONSES": "Gotowe odpowiedzi", "INTEGRATIONS": "Integracje", + "DATA": "Data", "PROFILE_SETTINGS": "Ustawienia profilu", "ACCOUNT_SETTINGS": "Ustawienia konta", "APPLICATIONS": "Aplikacje", @@ -379,11 +393,124 @@ "INFO_TEXT": "Pozwól systemowi automatycznie oznaczać Cię jako offline, gdy nie korzystasz z aplikacji lub panelu", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sortuj według", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Czytaj dokumentację", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importuj", + "EXPORT": "Eksportuj" + }, + "TYPES": { + "CONTACTS": "Kontakty", + "CONVERSATIONS": "Rozmowy", + "MESSAGES": "Wiadomości" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Anuluj", + "IMPORT": "Importuj" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importuj", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Imię", + "TYPE": "Typ", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Utworzono", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Utworzono", + "DURATION": "Czas trwania", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Wszystkie", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Wiadomość" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Odśwież", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Zakończone", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Obecny plan", "PLAN_NOTE": "Obecnie subskrybujesz plan **{plan}** z **{quantity}** licencjami", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/pt/advancedFilters.json b/app/javascript/dashboard/i18n/locale/pt/advancedFilters.json index 89b99d442..e2a7b4a68 100644 --- a/app/javascript/dashboard/i18n/locale/pt/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/pt/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OU" }, "INPUT_PLACEHOLDER": "Inserir valor", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Igual a", "not_equal_to": "Não é igual a", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Nome do titular", "INBOX_NAME": "Nome da caixa de entrada", "TEAM_NAME": "Nome da equipa", + "CONTACT": "Contacto", "CONVERSATION_IDENTIFIER": "ID da conversa", "CAMPAIGN_NAME": "Nome da campanha", "LABELS": "Etiquetas", diff --git a/app/javascript/dashboard/i18n/locale/pt/chatlist.json b/app/javascript/dashboard/i18n/locale/pt/chatlist.json index a542e663e..d3c9bbe8c 100644 --- a/app/javascript/dashboard/i18n/locale/pt/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/pt/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/pt/companies.json b/app/javascript/dashboard/i18n/locale/pt/companies.json index e9ea3b171..226ff436c 100644 --- a/app/javascript/dashboard/i18n/locale/pt/companies.json +++ b/app/javascript/dashboard/i18n/locale/pt/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/pt/contact.json b/app/javascript/dashboard/i18n/locale/pt/contact.json index 8f1320b67..50ce481d5 100644 --- a/app/javascript/dashboard/i18n/locale/pt/contact.json +++ b/app/javascript/dashboard/i18n/locale/pt/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notas", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/pt/conversation.json b/app/javascript/dashboard/i18n/locale/pt/conversation.json index 3d9c0a44b..2f4b78ccf 100644 --- a/app/javascript/dashboard/i18n/locale/pt/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pt/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Só pode responder utilizando uma mensagem modelo, porque", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Mensagens bloqueadas durante 24 horas", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Esta conta do Instagram foi migrada para a nova caixa de entrada do canal Instagram. Todas as novas mensagens aparecerão lá. Já não poderá enviar mensagens a partir desta conversa.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Está a responder a:", "REMOVE_SELECTION": "Remover seleção", "DOWNLOAD": "Descarregar", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Não foi possível abrir o áudio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Arrastar e soltar aqui para anexar", + "IMAGE_UPLOAD_SUCCESS": "Imagem carregada com sucesso", "START_AUDIO_RECORDING": "Iniciar gravação de áudio", "STOP_AUDIO_RECORDING": "Parar gravação de áudio", "COPILOT_THINKING": "Copiloto está pensando", @@ -303,6 +306,25 @@ "MESSAGE": "Esta ação é irreversível", "DELETE": "Excluir", "CANCEL": "Cancelar" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Descrição", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Visualizar todos", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/pt/emoji.json b/app/javascript/dashboard/i18n/locale/pt/emoji.json index 58578b6df..fb5f661b3 100644 --- a/app/javascript/dashboard/i18n/locale/pt/emoji.json +++ b/app/javascript/dashboard/i18n/locale/pt/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Pesquisar emojis", "NOT_FOUND": "Nenhum emoji corresponde à sua pesquisa", "REMOVE": "Excluir" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Nenhum emoji corresponde à sua pesquisa", + "NO_ICON": "No icons match your search", + "REMOVE": "Excluir", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/pt/helpCenter.json b/app/javascript/dashboard/i18n/locale/pt/helpCenter.json index f7a08aa54..23efec448 100644 --- a/app/javascript/dashboard/i18n/locale/pt/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/pt/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publicado", "ARCHIVED": "Arquivado" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Pesquisar artigos...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Excluir", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nova categoria", "EDIT_CATEGORY": "Editar categoria", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nenhuma categoria encontrada", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Excluir" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Sem categoria" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nome:" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Adicionar nova linguagem", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Pré-visualizar", "PUBLISH": "Publicar", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Rascunho", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Título" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Sem categoria", diff --git a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json index a76b2acfa..e8a0e8544 100644 --- a/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Ocorreu um erro ao ligar ao Instagram, por favor tente novamente", "ERROR_AUTH": "Ocorreu um erro ao ligar ao Instagram, por favor tente novamente", "NEW_INBOX_SUGGESTION": "Esta conta do Instagram estava anteriormente ligada a uma caixa de entrada diferente e foi agora migrada para aqui. Todas as novas mensagens aparecerão aqui. A caixa de entrada antiga já não poderá enviar ou receber mensagens para esta conta.", - "DUPLICATE_INBOX_BANNER": "Esta conta do Instagram foi migrada para a nova caixa de entrada do canal Instagram. Já não poderá enviar/receber mensagens do Instagram a partir desta caixa de entrada." + "DUPLICATE_INBOX_BANNER": "Esta conta do Instagram foi migrada para a nova caixa de entrada do canal Instagram. Já não poderá enviar/receber mensagens do Instagram a partir desta caixa de entrada.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Para adicionar o seu perfil do Twitter como um canal, precisa de autenticar o seu perfil do Twitter clicando em 'Entrar com o Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID da conta Business", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Chave da API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Fechar", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Adicionar", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Caixa de entrada", + "PHONE_NUMBER": "Número de telefone", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Voltar", + "CANCEL": "Cancelar", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/pt/index.js b/app/javascript/dashboard/i18n/locale/pt/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/pt/index.js +++ b/app/javascript/dashboard/i18n/locale/pt/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/pt/integrations.json b/app/javascript/dashboard/i18n/locale/pt/integrations.json index 3db1d60af..20bb6ee5c 100644 --- a/app/javascript/dashboard/i18n/locale/pt/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Eventos subscritos", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Fazer upgrade agora", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Saiba mais", + "OVERVIEW": { + "HEADER": "Visão geral", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Descartar" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Descartar" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Área de testes", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Cobrança", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistentes", "SWITCH_ASSISTANT": "Alternar entre assistentes", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Escreva o nome do assistente", "ERROR": "O nome é obrigatório" }, - "TEMPERATURE": { - "LABEL": "Temperatura da Resposta", - "DESCRIPTION": "Ajuste o quão criativo ou restritivo as respostas do assistente devem ser. Valores mais baixos produzem respostas mais focadas e deterministas, enquanto valores mais altos permitem resultados mais criativos e variados." - }, "DESCRIPTION": { "LABEL": "Descrição", "PLACEHOLDER": "Escreva a descrição do assistente", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Selecionar todas ({count})", "UNSELECT_ALL": "Desmarcar todas ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copiar", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Mostrar detalhes", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/pt/onboarding.json b/app/javascript/dashboard/i18n/locale/pt/onboarding.json index 30fb002a3..fe34bb4c3 100644 --- a/app/javascript/dashboard/i18n/locale/pt/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/pt/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Ocorreu um erro! Por favor, tente novamente.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Centro de suporte", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Conectar", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-mail", + "MORE_CHANNELS_VOICE": "Voz", + "VIEW_ALL": "Visualizar todos", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Conectar", + "BACK": "Voltar", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/pt/report.json b/app/javascript/dashboard/i18n/locale/pt/report.json index a58b672da..4f1da8f48 100644 --- a/app/javascript/dashboard/i18n/locale/pt/report.json +++ b/app/javascript/dashboard/i18n/locale/pt/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Limpar filtros", "EMPTY_LIST": "Nenhum resultado encontrado" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Não atribuída", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/pt/sessionLimit.json b/app/javascript/dashboard/i18n/locale/pt/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/pt/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/pt/settings.json b/app/javascript/dashboard/i18n/locale/pt/settings.json index 4533315c0..83ad5e672 100644 --- a/app/javascript/dashboard/i18n/locale/pt/settings.json +++ b/app/javascript/dashboard/i18n/locale/pt/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token de acesso", "NOTE": "Este token pode ser usado se você estiver construindo uma integração baseada em API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copiar", "RESET": "Reset", "CONFIRM_RESET": "Tem a certeza?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Visão geral", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Ferramentas", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notificaçoes", "CANNED_RESPONSES": "Respostas Prontas", "INTEGRATIONS": "Integrações", + "DATA": "Data", "PROFILE_SETTINGS": "Configurações do perfil", "ACCOUNT_SETTINGS": "Configurações da conta", "APPLICATIONS": "Aplicações", @@ -379,11 +393,124 @@ "INFO_TEXT": "Deixar o sistema alterar automaticamente o seu estado para offline quando não estiver a usar a app ou o painel.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Ordenar", + "SORT_BY": "Ordenar por", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Ler documentos", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importar", + "EXPORT": "Exportar" + }, + "TYPES": { + "CONTACTS": "Contactos", + "CONVERSATIONS": "Conversas", + "MESSAGES": "Mensagens" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancelar", + "IMPORT": "Importar" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importar", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nome:", + "TYPE": "Tipo", + "STATUS": "Situação", + "IMPORTED": "Imported", + "CREATED": "Criado", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Criado", + "DURATION": "Duração", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Todas", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Messagem" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Atualizar", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Concluída", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Plano atual", "PLAN_NOTE": "Atualmente tem o **{plan}* subscrito com **{quantity}** licenças", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Tentar novamente", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/advancedFilters.json b/app/javascript/dashboard/i18n/locale/pt_BR/advancedFilters.json index 7958f4c14..0c2da8371 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OU" }, "INPUT_PLACEHOLDER": "Inserir valor", + "CONTACT_SEARCH_PLACEHOLDER": "Pesquisar contatos", + "CONTACT_FALLBACK": "Contato #{id}", "OPERATOR_LABELS": { "equal_to": "Igual a", "not_equal_to": "Diferente", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Agente atribuído", "INBOX_NAME": "Caixa de Entrada", "TEAM_NAME": "Nome do Time", + "CONTACT": "Contato", "CONVERSATION_IDENTIFIER": "Identificador da conversa", "CAMPAIGN_NAME": "Nome da campanha", "LABELS": "Etiquetas", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json b/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json index eb71ba81e..2e3db4c5f 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Prioridade: Maior primeiro, Criação: Mais antiga primeiro" + }, + "unread": { + "TEXT": "Contagem de não lidas: Maior primeiro" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/companies.json b/app/javascript/dashboard/i18n/locale/pt_BR/companies.json index 0bb46e60f..99fa4ce29 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/companies.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Adicionar empresa" }, + "SELECTOR": { + "PLACEHOLDER": "Selecionar empresa", + "CREATE_OPTION": "Adicionar \"{name}\"" + }, "CREATE": { "TITLE": "Adicionar detalhes da empresa", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/contact.json b/app/javascript/dashboard/i18n/locale/pt_BR/contact.json index a4b168805..007d5ae47 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/contact.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Atributos", "HISTORY": "Histórico", "NOTES": "Notas", + "MEDIA": "Mídia", "MERGE": "Mesclar" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json index 8a6702eaa..362bf6f57 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Você só pode responder a esta conversa usando um modelo de mensagem devido a", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restrições de janela de mensagem de 24 horas", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Esta conta do Instagram foi migrada para a nova caixa de entrada do canal do Instagram. Todas as novas mensagens serão mostradas lá. Você não poderá mais enviar mensagens desta conversa.", + "INSTAGRAM_RESTRICTION_BANNER": "O Instagram está com restrições no momento. Algumas mensagens ou ações podem sofrer atrasos ou/e ficar indisponíveis enquanto restauramos o funcionamento completo.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "Ver atualização de status", "REPLYING_TO": "Você está respondendo a:", "REMOVE_SELECTION": "Remover seleção", "DOWNLOAD": "Baixar", @@ -231,8 +233,9 @@ "TIP_AUDIORECORDER_ICON": "Gravar áudio", "TIP_AUDIORECORDER_PERMISSION": "Permitir acesso ao áudio", "TIP_AUDIORECORDER_ERROR": "Não foi possível abrir o áudio", - "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", + "AUDIO_CONVERSION_FAILED": "Falha na conversão do áudio. Tente novamente.", "DRAG_DROP": "Arraste e solte aqui para anexar", + "IMAGE_UPLOAD_SUCCESS": "Imagem enviada com sucesso", "START_AUDIO_RECORDING": "Iniciar gravação de áudio", "STOP_AUDIO_RECORDING": "Parar gravação de áudio", "COPILOT_THINKING": "O Copiloto está pensando", @@ -303,6 +306,25 @@ "MESSAGE": "Você não pode desfazer essa ação", "DELETE": "Excluir", "CANCEL": "Cancelar" + }, + "REPORT_MESSAGE": { + "LABEL": "Reportar mensagem", + "TITLE": "Reportar mensagem do Capitão", + "DESCRIPTION": "Encontrou algum problema com esta resposta da IA? Conte-nos o que deu errado e nossa equipe irá analisar para ajudar a melhorar a precisão do Capitão.", + "PROBLEM_TYPE": "Tipo de problema", + "PROBLEM_TYPE_PLACEHOLDER": "Selecione um tipo de problema", + "DESCRIPTION_LABEL": "Descrição", + "DESCRIPTION_PLACEHOLDER": "Descreva o problema detalhadamente", + "SUBMIT": "Reportar", + "SUCCESS": "Obrigado pelo seu relato. Nossa equipe irá analisá-lo.", + "ERROR": "Não foi possível enviar o relato desta mensagem. Tente novamente.", + "REASONS": { + "incorrect_information": "Informação incorreta", + "inappropriate_response": "Resposta inadequada", + "incomplete_response": "Resposta incompleta", + "outdated_information": "Informação desatualizada", + "other": "Outro" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Visualizar tudo", "SHOW_LESS": "Mostrar menos", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Arquivo sem nome" + "UNTITLED_FILE": "Arquivo sem nome", + "JUMP_TO_MESSAGE": "Ir para mensagem" }, "SHOPIFY": { "ORDER_ID": "Pedido #{id}", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/emoji.json b/app/javascript/dashboard/i18n/locale/pt_BR/emoji.json index 58578b6df..a0f3c2f26 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/emoji.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Pesquisar emojis", "NOT_FOUND": "Nenhum emoji corresponde à sua pesquisa", "REMOVE": "Excluir" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Ícones", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Pesquisar emoji…", + "SEARCH_ICON": "Ícones de pesquisa…", + "FREQUENTLY_USED": "Usados com frequência", + "NO_EMOJI": "Nenhum emoji corresponde à sua pesquisa", + "NO_ICON": "Nenhum ícone corresponde à sua pesquisa", + "REMOVE": "Excluir", + "STYLE": { + "OUTLINE": "Ícones do contorno", + "FILLED": "Ícones preenchidos" + }, + "COLORS": { + "SLATE": "Ardósia", + "RED": "Vermelho", + "ORANGE": "Laranja", + "AMBER": "Âmbar", + "GREEN": "Verde", + "TEAL": "Verde-azulado", + "BLUE": "azul", + "INDIGO": "Indigo", + "VIOLET": "Violeta", + "PINK": "Rosa" + } } } diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/helpCenter.json b/app/javascript/dashboard/i18n/locale/pt_BR/helpCenter.json index 558651b9f..2271ceecd 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publicado", "ARCHIVED": "Arquivado" }, + "PENDING_EDITS": "Edições não publicadas", + "PENDING_EDITS_TOOLTIP": "Este artigo publicado tem edições não publicadas", "CATEGORY": { "UNCATEGORISED": "Sem categoria" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Todos os Idioma" }, + "SEARCH_PLACEHOLDER": "Pesquisar artigos...", "NEW_ARTICLE": "Novo artigo" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Não há artigos nesta categoria", "SUBTITLE": "Os artigos nesta categoria aparecerão aqui" + }, + "SEARCH": { + "TITLE": "Nenhum artigo correspondente", + "SUBTITLE": "Não foi possível encontrar artigos que correspondam à sua pesquisa. Tente um termo diferente." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Excluir", "STATUS_SUCCESS": "Artigos atualizados com sucesso", "STATUS_ERROR": "Falha ao atualizar artigos", + "STATUS_SKIPPED": "1 artigo com edições não publicadas foi ignorado - abra-o para publicar ou descartar. Artigos de {count} com edições não publicadas foram ignorados - abra-os para publicar ou descartar.", + "STATUS_SKIPPED_ALL": "Esses artigos têm edições não publicadas — abra cada um para publicar ou descartar.", "CATEGORY_SUCCESS": "Artigos movidos com sucesso", "CATEGORY_ERROR": "Falha ao mover artigos", "DELETE_CONFIRM_TITLE": "Excluir artigo | Excluir {count} artigos", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nova categoria", "EDIT_CATEGORY": "Alterar categoria", + "SEARCH_PLACEHOLDER": "Pesquisar categorias...", "CATEGORIES_COUNT": "categoria {n} | {n} categorias", "BREADCRUMB": { "CATEGORY_LOCALE": "Categorias ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nenhuma categoria encontrada", "SUBTITLE": "Categorias aparecerão aqui. Você pode adicionar uma categoria clicando no botão 'Nova Categoria'." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "Nenhuma categoria correspondente", + "SUBTITLE": "Não foi possível encontrar nenhuma categoria que corresponda à sua pesquisa. Tente um termo diferente." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "artigo {count} | {count} artigos" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Localizações não disponíveis | {n} local | {n} localidades", "NEW_LOCALE_BUTTON_TEXT": "Nova localização", + "SEARCH_PLACEHOLDER": "Pesquisar locais...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "Não conseguimos encontrar nenhum idioma correspondente à sua pesquisa. Tente um termo diferente." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "artigo {count} | {count} artigos", "CATEGORIES_COUNT": "categoria {count} | {count} categorias", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Tornar padrão", "MOVE_TO_DRAFT": "Mover para rascunho", "PUBLISH_LOCALE": "Publicar localidade", + "CUSTOMIZE_CONTENT": "Localizar conteúdo", + "SELECT_POPULAR_CONTENT": "Selecionar conteúdo recomendado", "DELETE": "Excluir" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Conteúdo recomendado", + "DESCRIPTION": "Pegue até 3 categorias e 6 artigos para destacar na página central de ajuda desta localidade. Arraste-os para a ordem que você deseja que os visitantes vejam.", + "SEARCH": "Pesquisar...", + "EMPTY": "Nenhum resultado correspondente", + "ADD_ANOTHER": "Adicionar outro...", + "SLOTS_LEFT": "{count} slots restantes", + "OVERRIDING_DEFAULTS": "Sobrescrevendo padrões para esta localidade", + "CONFIRM": "Salvar recomendações", + "CATEGORIES": { + "LABEL": "Categorias recomendadas", + "ARTICLES_COUNT": "Nenhum artigo | {count} artigo | {count} artigos" + }, + "ARTICLES": { + "LABEL": "Artigos recomendados", + "IN_CATEGORY": "em {category}", + "UNCATEGORIZED": "Não categorizado" + }, + "API": { + "SUCCESS_MESSAGE": "Conteúdo recomendado atualizado com sucesso", + "ERROR_MESSAGE": "Não foi possível atualizar o conteúdo recomendado. Tente novamente." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localizar conteúdo", + "DESCRIPTION": "Defina valores específicos para este idioma. Qualquer campo deixado em branco utilizará o idioma padrão.", + "NAME": { + "LABEL": "Nome" + }, + "PAGE_TITLE": { + "LABEL": "Título da Página" + }, + "HEADER_TEXT": { + "LABEL": "Texto do Cabeçalho" + }, + "API": { + "SUCCESS_MESSAGE": "Conteúdo do idioma atualizado com sucesso", + "ERROR_MESSAGE": "Não foi possível atualizar o conteúdo do idioma. Tente novamente." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Adicionar uma nova localidade", "DESCRIPTION": "Selecione o idioma em que este artigo será escrito. Isto será adicionado à sua lista de traduções, e você pode adicionar mais tarde.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Pré-visualizar", "PUBLISH": "Publicar", + "PUBLISH_CHANGES": "Publicar alterações", + "PUBLISH_CHANGES_SUCCESS": "Alterações publicadas com sucesso", + "PUBLISH_CHANGES_ERROR": "Não foi possível publicar as alterações", + "SAVE_IN_PROGRESS": "Ainda salvando as alterações mais recentes — por favor, tente novamente em um momento.", + "DISCARD_CHANGES": "Descartar alterações", + "DISCARD_CHANGES_SUCCESS": "Alterações descartadas", + "DISCARD_CHANGES_ERROR": "Não foi possível descartar as alterações", + "PENDING_CHANGES": "Alterações pendentes", + "VIEW_CHANGES": "Ver alterações não publicadas", "DRAFT": "Rascunho", "ARCHIVE": "Arquivar", "BACK_TO_ARTICLES": "Voltar aos artigos" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Alterações não publicadas", + "DESCRIPTION": "Este artigo possui alterações de rascunho que não estão disponíveis ainda. Aplique-as antes de alterar o status ou descartá-las?", + "APPLY": "Aplicar as alterações", + "DISCARD": "Descartar alterações" + }, + "DIFF_DIALOG": { + "TITLE": "Alterações não publicadas", + "DESCRIPTION": "Compara seu rascunho com a versão que está disponível no momento.", + "TITLE_LABEL": "Título" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Mais propriedades", "UNCATEGORIZED": "Não categorizado", diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json index 4331fade0..df63e26a4 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Houve um erro ao conectar ao Instagram, por favor, tente novamente", "ERROR_AUTH": "Houve um erro ao conectar ao Instagram, por favor, tente novamente", "NEW_INBOX_SUGGESTION": "Esta conta do Instagram estava conectada a uma caixa de entrada diferente e agora foi migrada para aqui. Todas as novas mensagens aparecerão aqui. A caixa de entrada antiga não poderá mais enviar ou receber mensagens para esta conta.", - "DUPLICATE_INBOX_BANNER": "Esta conta do Instagram foi migrada para a nova caixa de entrada de canal do Instagram. Você não poderá mais enviar/receber mensagens do Instagram desta caixa de entrada." + "DUPLICATE_INBOX_BANNER": "Esta conta do Instagram foi migrada para a nova caixa de entrada de canal do Instagram. Você não poderá mais enviar/receber mensagens do Instagram desta caixa de entrada.", + "SETTINGS_RESTRICTED_WARNING": "O Instagram está com restrições no momento. Algumas mensagens ou ações podem sofrer atrasos ou/e ficar indisponíveis enquanto restauramos o funcionamento completo.", + "STATUS_LINK": "Ver atualização de status" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continuar com TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Conecte seu perfil do TikTok", "HELP": "Para adicionar seu perfil do TikTok como um canal, é necessário autenticar seu perfil clicando em 'Continuar com TikTok'. ", "ERROR_MESSAGE": "Ocorreu um erro ao conectar com o TikTok, por favor, tente novamente", - "ERROR_AUTH": "Ocorreu um erro ao conectar com o TikTok, por favor, tente novamente" + "ERROR_AUTH": "Ocorreu um erro ao conectar com o TikTok, por favor, tente novamente", + "NORTH_AMERICA_WARNING": "As conexões com o TikTok para contas da América do Norte estão temporariamente indisponíveis enquanto aguardamos uma atualização da equipe do TikTok." }, "TWITTER": { "HELP": "Para adicionar seu perfil do Twitter como um canal, você precisa autenticar seu perfil do Twitter clicando em 'Entrar com o Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Chamada de voz requer credenciais de chave da API Twilio. Elas são usadas para gerar tokens para conexões de voz do agente." + }, + "INBOUND": { + "LABEL": "Permitir chamadas de entrada", + "DESCRIPTION": "Permita que os clientes liguem para este número. Quando desativado, as chamadas recebidas são recusadas automaticamente — os atendentes não são notificados e nenhuma conversa é criada. Os atendentes ainda podem realizar chamadas de saída." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "Esta caixa de entrada está conectada através da inscrição incorporada do WhatsApp.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "Você pode reconfigurar esta caixa de entrada para atualizar suas configurações do WhatsApp Business.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigurar", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Alternar para Configuração Manual", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "Esta caixa de entrada foi conectada por meio do cadastro incorporado do WhatsApp, que não é mais compatível. Informe as credenciais da API do WhatsApp Cloud da sua própria aplicação da Meta para migrar esta caixa de entrada para uma configuração manual. Antes de realizar a migração, configure o webhook na sua aplicação da Meta utilizando o token de verificação acima.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "ID do Número de Telefone", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID da conta do WhatsApp Business", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Chave API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Informe um token de acesso permanente da sua aplicação da Meta", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Alternar para Configuração Manual", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Caixa de entrada migrada para configuração manual com sucesso.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Não foi possível migrar para a configuração manual. Verifique as credenciais e tente novamente.", "WHATSAPP_CONNECT_TITLE": "Conectar ao WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Atualize para o cadastro integrado do WhatsApp para um gerenciamento mais fácil.", "WHATSAPP_CONNECT_DESCRIPTION": "Conecte esta caixa de entrada ao WhatsApp Business para ter recursos aprimorados e um gerenciamento mais fácil.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Sincronize manualmente os modelos de mensagens do WhatsApp para atualizar seus modelos disponíveis.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sincronizar Modelos", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Sincronização de modelos iniciada com sucesso. Pode demorar alguns minutos para atualizar.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Configuração manual recomendada", + "DESCRIPTION": "Esta caixa de entrada está conectada por meio da aplicação compartilhada da Meta utilizada no cadastro incorporado, que foi afetada por restrições recentes da Meta. Para evitar problemas semelhantes no futuro, recomendamos reconectá-la utilizando sua própria aplicação da Meta.", + "START": "Iniciar migração manual", + "GUIDE": "Ver guia" + }, + "DIALOG": { + "EYEBROW": "Migração manual do WhatsApp", + "TITLE": "Reconectar caixa de entrada do WhatsApp", + "CLOSE": "Fechar", + "ACTION_REQUIRED_TITLE": "Reconectar com sua própria aplicação da Meta", + "ACTION_REQUIRED_DESCRIPTION": "As caixas de entrada conectadas por meio da sua própria aplicação da Meta não são afetadas pelas restrições da aplicação compartilhada utilizada no cadastro incorporado. Este fluxo guiado atualiza a conexão com a API do WhatsApp sem criar uma nova caixa de entrada.", + "GUIDE_LINK": "Abrir o guia de configuração manual", + "PRESERVED_TITLE": "Preservado", + "PRESERVED_DESCRIPTION": "Conversas, contatos, colaboradores, roteamento, horário de atendimento e configurações da caixa de entrada.", + "UPDATED_TITLE": "Atualizado", + "UPDATED_DESCRIPTION": "ID da WABA, ID do número de telefone, token de acesso e configuração do webhook.", + "WABA_ID": "ID da WABA", + "WABA_PLACEHOLDER": "Informe o ID da WABA", + "WABA_HELP": "A conta do WhatsApp Business que possui este número de telefone.", + "PHONE_NUMBER_ID": "ID do Número de Telefone", + "PHONE_NUMBER_PLACEHOLDER": "Informe o ID do número de telefone", + "PHONE_NUMBER_HELP": "ID exclusivo da Meta para o número do WhatsApp conectado a esta caixa de entrada.", + "DISPLAY_PHONE_NUMBER": "Número de telefone exibido", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Informe o número de telefone de exibição", + "DISPLAY_PHONE_NUMBER_HELP": "O número do WhatsApp exibido aos clientes. Ele não pode ser alterado durante a migração.", + "ACCESS_TOKEN": "Token de acesso permanente ou token do usuário do sistema", + "ACCESS_TOKEN_PLACEHOLDER": "Colar token de acesso", + "TOKEN_HELP_PREFIX": "O token deve incluir", + "TOKEN_HELP_MIDDLE": "Adicionar", + "TOKEN_HELP_SUFFIX": "para gerenciamento de modelos de sincronização e templates.", + "MESSAGING_PERMISSION": "mensagem_de_empresas_whatsapping.", + "MANAGEMENT_PERMISSION": "gerência_de_empresas_whatsapp", + "REVIEW_TITLE": "Revisar antes de reconectar", + "INBOX": "Caixa de Entrada", + "PHONE_NUMBER": "Número de telefone", + "NOT_ENTERED": "Não inserido", + "VERIFY_NOTICE": "O Chatwoot verificará estas credenciais com o Meta antes de aplicar quaisquer alterações. Se a verificação falhar, a configuração atual ficará intacta.", + "BACK": "Anterior", + "CANCEL": "Cancelar", + "CONTINUE": "Continuar", + "REVIEW_MIGRATION": "Revisar a migração", + "RECONNECT": "Reconectar caixa de entrada do WhatsApp" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Antes de começar", + "DESCRIPTION": "Isto reconecta os detalhes da API do WhatsApp para esta caixa de entrada. Conversos, colaboradores, roteadores, horários de funcionamento, CSS e configurações do bot serão preservadas." + }, + "BUSINESS_DETAILS": { + "TITLE": "Dados da empresa", + "DESCRIPTION": "Digite os ativos do WhatsApp da conta Meta Business do cliente." + }, + "ACCESS_TOKEN": { + "TITLE": "Token de acesso", + "DESCRIPTION": "Cole um token de acesso permanente ou de sistema com as permissões do WhatsApp." + }, + "REVIEW_MIGRATION": { + "TITLE": "Revisar a migração", + "DESCRIPTION": "Confirme os detalhes da conexão antes de reconectar esta caixa de entrada. O Chatwoot verificará o token, WABA e o número de telefone com meta antes de aplicar as alterações." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Ativar chamadas de voz", "DESCRIPTION": "Permita que os atendentes iniciem e recebam chamadas de voz do WhatsApp nesta caixa de entrada. Disponível apenas para canais do WhatsApp Cloud com cadastro incorporado e permissão de chamadas concedida pela Meta." diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/index.js b/app/javascript/dashboard/i18n/locale/pt_BR/index.js index ab2907b3c..a2eadadb7 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/index.js +++ b/app/javascript/dashboard/i18n/locale/pt_BR/index.js @@ -34,6 +34,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -80,6 +81,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json index 900c4cce3..be23fc251 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Eventos Inscritos", "LEARN_MORE": "Saiba mais sobre webhooks", + "PAYWALL": { + "TITLE": "Webhooks estão disponíveis nos planos pagos", + "AVAILABLE_ON": "Use webhooks para receber eventos em tempo real de sua conta Chatwoot.", + "UPGRADE_PROMPT": "Atualize para Startups, Business ou Enterprise plano para usar webhooks.", + "UPGRADE_NOW": "Atualizar agora", + "CANCEL_ANYTIME": "Altere ou cancele seu plano a qualquer momento." + }, "SECRET": { "LABEL": "Segredo", "COPY": "Copiar segredo para a área de transferência", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Capitão", "HEADER_KNOW_MORE": "Saiba mais", + "OVERVIEW": { + "HEADER": "Visão geral", + "WELCOME": { + "LABEL": "Resumo do Capitão", + "LOADING": "Gerando resumo…" + }, + "INBOX_BANNER": { + "TEXT": "Este assistente ainda não está conectado a nenhuma caixa de entrada, então ele não responderá a conversas.", + "ACTION": "Conectar caixa de entrada", + "DISMISS": "Recusar" + }, + "COVERAGE_BANNER": { + "TEXT": "Perguntas Frequentes {count} estão pendentes, mantendo a cobertura em {coverage}%. Aprove-os para que seu assistente possa resolver mais por conta própria.", + "ACTION": "Revisar FAQs", + "DISMISS": "Recusar" + }, + "RANGES": { + "LAST_DAYS": "Últimos {count} dias", + "THIS_MONTH": "Este mês", + "LAST_MONTH": "Último mês" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Manipulação de conversas", + "HINT": "Conversas distintas em que este assistente respondeu." + }, + "AUTO_RESOLUTION": { + "LABEL": "Taxa de resolução automática", + "HINT": "Compartilhamento de conversas manipuladas fechadas sem uma resposta humana." + }, + "HANDOFF": { + "LABEL": "Taxa de entrega", + "HINT": "Compartilhamento de conversas manipuladas escalado para um agente humano." + }, + "HOURS_SAVED": { + "LABEL": "Tempo economizado", + "HINT": "Estimativa: Capitão responde a cerca de 2 minutos de esforço assumido de agente por resposta. Direcional, não medida de trabalho." + }, + "REOPEN": { + "LABEL": "Reabrir tarifa", + "HINT": "Conversas resolvidas automaticamente que foram reabertas depois." + }, + "DEPTH": { + "LABEL": "Mensagens / conversa", + "HINT": "Média de respostas que o assistente envia por conversa." + } + }, + "DRILLDOWN": { + "CLOSE": "Detalhes do fechamento", + "EMPTY": "Não foram encontrados registros para essa métrica.", + "ERROR": "Não foi possível carregar os registros. Por favor, tente novamente.", + "LOAD_MORE": "Carregar mais", + "RESULT_COUNT_CONVERSATION": "Conversa {count} + Conversas {count}" + }, + "KNOWLEDGE": { + "TITLE": "Cobertura de conhecimento", + "COVERAGE": "{pct}% aprovado", + "APPROVED": "FAQs Aprovadas", + "PENDING": "FAQs pendentes", + "DOCUMENTS": "Documentos" + }, + "LINKS": { + "DOCS": { + "TITLE": "Documentação do capitão", + "DESCRIPTION": "Guias e guias para o Capitão" + }, + "PLAYGROUND": { + "TITLE": "Área de testes", + "DESCRIPTION": "Testar respostas deste assistente" + }, + "BILLING": { + "TITLE": "Cobrança", + "DESCRIPTION": "Gerenciar créditos e plano" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistentes", "SWITCH_ASSISTANT": "Alternar entre assistentes", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Digite o nome do assistente", "ERROR": "O nome é obrigatório" }, - "TEMPERATURE": { - "LABEL": "Temperatura da resposta", - "DESCRIPTION": "Ajuste o quão criativo ou restritivo as respostas do assistente devem ser. Valores mais baixos produzem respostas mais focadas e deterministas, enquanto valores mais altos permitem resultados mais criativos e variados." - }, "DESCRIPTION": { "LABEL": "Descrição", "PLACEHOLDER": "Digite a descrição do assistente", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documentos", "ADD_NEW": "Criar um novo documento", + "FAQ_COUNT": "Perguntas Frequentes (F{n} ) {n} FAQs", "SELECTED": "{count} selecionado", "SELECT_ALL": "Selecionar todos ({count})", "UNSELECT_ALL": "Desmarcar todos ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "FAQs Relacionadas", - "DESCRIPTION": "Estes FAQs são gerados diretamente a partir do documento." + "EMPTY": "Nenhuma FAQs foi gerada a partir deste documento ainda." + }, + "DETAILS": { + "DESCRIPTION": "Revise o conteúdo raswled e as FAQs geradas a partir desta fonte.", + "SOURCE": "fonte", + "GENERATED_FAQS": "FAQs Geradas", + "LAST_UPDATED": "Última atualização", + "NOT_AVAILABLE": "Indisponível", + "CONTENT_TAB": "Conteúdo Rastejado", + "PDF_TAB": "Detalhes do PDF", + "CONTENT_TITLE": "Conteúdo Rastejado", + "PDF_TITLE": "Arquivo PDF", + "PDF_DESCRIPTION": "Revise a fonte PDF original.", + "CHARACTER_COUNT": "{count} caracteres extraídos", + "COPY_CONTENT": "Copiar", + "COPY_SUCCESS": "Conteúdo copiado para a área de transferência", + "COPY_ERROR": "Não foi possível copiar o conteúdo rastreador", + "VIEW_RAW": "Ver raw", + "VIEW_PREVIEW": "Visualizar visualização", + "UNREADABLE_CONTENT": "O conteúdo legível não pôde ser extraído deste documento. Você pode visualizar o conteúdo extraído em bruto.", + "EMPTY_CONTENT": "Nenhum conteúdo rastreador está disponível para este documento ainda." }, "FORM_DESCRIPTION": "Digite o URL do documento para adicioná-lo como fonte de conhecimento e escolha o assistente para associá-lo.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Ocorreu um erro ao excluir o documento, por favor, tente novamente." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Visualizar Respostas relacionadas", + "VIEW_DETAILS": "Ver detalhes", "SYNC_NOW": "Atualizar agora", "RETRY_SYNC": "Tentar atualizar novamente", "DELETE_DOCUMENT": "Excluir Documento" diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/onboarding.json b/app/javascript/dashboard/i18n/locale/pt_BR/onboarding.json index 3bc40bf65..e00a62933 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Por favor, preencha todos os campos obrigatórios", "SUCCESS": "Detalhes salvos com sucesso", "ERROR": "Não foi possível salvar os detalhes. Por favor, tente novamente." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Vamos montar algumas coisas", + "SUBTITLE": "Isto lhe dará início em sua área de trabalho", + "CONTINUE": "Continuar", + "SKIP": "Pular", + "ERROR": "Algo deu errado. Por favor, tente novamente.", + "WHATSAPP_CONNECTED": "WhatsApp conectado com sucesso", + "FACEBOOK_CONNECTED": "Facebook conectado com sucesso", + "CREATED_FOR_YOU": { + "TITLE": "Criamos o seguinte para você", + "LIVE_CHAT": "Widget de bate-papo ao vivo", + "LIVE_CHAT_DESCRIPTION": "Mensageiro instantâneo para seu site", + "LIVE_CHAT_STATUS": "Quase terminado…", + "LIVE_CHAT_READY": "Pronto", + "HELP_CENTER": "Centro de Ajuda", + "HELP_CENTER_DESCRIPTION": "Sua enciclopédia digital", + "HELP_CENTER_GENERATING": "Criando seu centro de ajuda…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analisando seu site…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Configurando categorias…", + "HELP_CENTER_CURATING_ARTICLES": "Curando artigos…", + "HELP_CENTER_ARTICLES": "Artigo {count} criado com {count} artigos", + "HELP_CENTER_CATEGORIES": "categoria {count} | {count} categorias", + "HELP_CENTER_SUMMARY": "Artigo {count} criado com {categories} (200) {count} artigos criados com {categories}" + }, + "CHANNELS": { + "TITLE": "Conectar todos os seus canais de conversa", + "HEADER": "Encontramos alguns canais que você pode conectar", + "CONNECT": "Conectar", + "CONNECTED": "Conectado", + "MORE_CHANNELS_NOTE": "Configure canais {email} e {voice} mais tarde dentro do aplicativo", + "MORE_CHANNELS_EMAIL": "E-mail", + "MORE_CHANNELS_VOICE": "Voz", + "VIEW_ALL": "Visualizar tudo", + "GMAIL": "Gmail", + "OUTLOOK": "Perspectiva", + "OTHER_EMAIL": "Outros provedores de e-mail" + }, + "CHANNELS_DIALOG": { + "TITLE": "Conecte todos os seus canais instantaneamente", + "SUBTITLE": "Gerencie todos eles a partir de um painel. Você também pode configurar e editar caixas de entrada mais tarde dentro do aplicativo.", + "NOTE": "SMS, API, Voz e outros provedores de e-mail podem ser configurados posteriormente a partir do seu painel.", + "CONNECT_TITLE": "Conecte a sua conta {name}", + "CONNECT_SUBTITLE": "Preencha estes detalhes rápidos", + "CONNECT": "Conectar", + "BACK": "Anterior", + "SETUP_LATER": "Configurar mais tarde no aplicativo", + "FACEBOOK_SUBTITLE": "Autorizar acesso e escolher uma página para conectar.", + "FACEBOOK_LAUNCH": "Continue com o Facebook", + "FACEBOOK_SELECT_PAGE": "Selecione uma página para conectar", + "FACEBOOK_LOADING": "Carregando suas Páginas do Facebook…", + "FACEBOOK_NO_PAGES": "Nenhuma página conectável encontrada. Todas as suas páginas já estão conectadas.", + "FACEBOOK_ERROR": "Não foi possível conectar-se ao Facebook. Por favor, tente novamente." + } } } diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/report.json b/app/javascript/dashboard/i18n/locale/pt_BR/report.json index e3d59d222..1bb25efa3 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/report.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Limpar filtros", "EMPTY_LIST": "Nenhum resultado encontrado" }, + "DRILLDOWN": { + "TITLE": "Detalhes {metric}", + "RESULT_COUNT_CONVERSATION": "Conversa {count} + Conversas {count}", + "RESULT_COUNT_MESSAGE": "Mensagem de {count} + {count}", + "EMPTY": "Nenhum registro encontrado para esta barra.", + "ERROR": "Não foi possível carregar os registros. Por favor, tente novamente.", + "ADMIN_ONLY": "Apenas os administradores podem detalhar nos registros do relatório.", + "LOAD_MORE": "Carregar mais", + "CLOSE": "Detalhes do fechamento", + "PREVIOUS_BUCKET": "Barra anterior", + "NEXT_BUCKET": "Próxima barra", + "UNKNOWN_CONTACT": "Contato desconhecido", + "UNKNOWN_INBOX": "Caixa de entrada desconhecida", + "UNASSIGNED_AGENT": "Não atribuídas", + "NO_MESSAGE_CONTENT": "Nenhum conteúdo de mensagem", + "MESSAGE_CREATED_AT": "Mensagem criada em {time}", + "EVENT_OCCURRED_AT": "Ocorreu um evento em {time}", + "INCOMING_MESSAGE": "Mensagem de entrada", + "OUTGOING_MESSAGE": "Mensagem de saída" + }, "PAGINATION": { "RESULTS": "Exibindo {start} — {end} de {total} resultados", "PER_PAGE_TEMPLATE": "{size} / página" @@ -513,7 +533,7 @@ "TOOLTIP": "Número total de respostas enviadas pelo bot" }, "RESOLUTION_RATE": { - "LABEL": "Tempo de resolução", + "LABEL": "Taxa de resolução", "TOOLTIP": "Número total de conversas resolvidas pelo bot / número total de conversas manipuladas pelo bot * 100" }, "HANDOFF_RATE": { diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/sessionLimit.json b/app/javascript/dashboard/i18n/locale/pt_BR/sessionLimit.json new file mode 100644 index 000000000..11d7eba31 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/pt_BR/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Limite de sessão ativo atingido", + "DESCRIPTION": "Você atingiu seu limite de sessões ativas. Por favor, encerre uma sessão antes de fazer o login.", + "END": "Término", + "END_ALL": "Encerrar todas as sessões", + "LOG_IN": "Efetuar Login", + "CANCEL": "Voltar ao login", + "UNKNOWN_DEVICE": "Dispositivo desconhecido", + "STARTED": "Iniciado" + } +} diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json index 69700c43b..533c56f8d 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/settings.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/settings.json @@ -86,9 +86,21 @@ "NOTE": "Gerencie recursos adicionais de segurança para sua conta.", "MFA_BUTTON": "Gerenciar autenticação de dois fatores " }, + "SESSIONS_SECTION": { + "TITLE": "Sessões ativas", + "NOTE": "Estes são os dispositivos atualmente conectados à sua conta.", + "CURRENT": "Sessão atual", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Sessão revogada com sucesso", + "REVOKE_ERROR": "Não foi possível revogar a sessão. Por favor, tente novamente.", + "FETCH_ERROR": "Não foi possível realizar a sessão. Por favor, tente novamente.", + "LAST_ACTIVE": "Última atividade em", + "UNKNOWN_DEVICE": "Dispositivo desconhecido" + }, "ACCESS_TOKEN": { "TITLE": "Token de acesso", "NOTE": "Esse token pode ser usado se você estiver criando uma integração baseada em API", + "PAID_PLAN_NOTE": "Tokens de acesso API estão disponíveis em planos pagos.", "COPY": "Copiar", "RESET": "Reiniciar", "CONFIRM_RESET": "Você tem certeza?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Todas as empresas", "CAPTAIN": "Capitão", "CAPTAIN_ASSISTANTS": "Assistentes", + "CAPTAIN_OVERVIEW": "Visão geral", "CAPTAIN_DOCUMENTS": "Documentos", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Ferramentas", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notificações", "CANNED_RESPONSES": "Respostas Prontas", "INTEGRATIONS": "Integrações", + "DATA": "Dado", "PROFILE_SETTINGS": "Configurações do Perfil", "ACCOUNT_SETTINGS": "Conta", "APPLICATIONS": "Aplicações", @@ -379,11 +393,124 @@ "INFO_TEXT": "Deixe o sistema marcar você automaticamente quando você não estiver usando o app ou o painel de controle.", "INFO_SHORT": "Marcar off-line automaticamente quando não estiver usando o aplicativo." }, + "SORT_TOOLTIP": "Ordenar", + "SORT_BY": "Classificar por", + "SORT_GROUPS": { + "CREATED": "Ordenar por data de criação", + "ALPHABETICAL": "Ordenar em ordem alfabética", + "UNREAD_COUNT": "Classificar por contagem não lida" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Mais recentes primeiro", + "CREATED_ASC": "Mais antigos primeiro", + "ALPHABETICAL_ASC": "Ascendente (A - Z)", + "ALPHABETICAL_DESC": "Descendente (Z - A)", + "UNREAD_COUNT_DESC": "Mais alto primeiro", + "UNREAD_COUNT_ASC": "Mais baixo primeiro" + }, "DOCS": "Ler documentos", "SECURITY": "Segurança", "CAPTAIN_AI": "Capitão", "CONVERSATION_WORKFLOW": "Fluxo de Conversa" }, + "DATA_IMPORTS": { + "HEADER": "Dado", + "DESCRIPTION": "Trazer seus contatos e conversas anteriores para esta conta de outra ferramenta de suporte. Cada importação é executada em segundo plano, então você pode continuar funcionando enquanto ela termina, acompanhar o seu progresso e rever tudo o que foi ignorado ao longo do caminho.", + "LOADING": "Buscando importações", + "DEFAULT_IMPORT_NAME": "Importação Intercom", + "TABS": { + "IMPORT": "Importar", + "EXPORT": "Exportar" + }, + "TYPES": { + "CONTACTS": "Contatos", + "CONVERSATIONS": "Conversas", + "MESSAGES": "Mensagens" + }, + "DRAWER": { + "TITLE": "Nova importação", + "SOURCE": "fonte", + "NAME": "Nome da importação", + "NAME_PLACEHOLDER": "Migração Intercom Julho", + "ACCESS_KEY": "Chave de acesso Intercom", + "ACCESS_KEY_PLACEHOLDER": "Cole sua chave de acesso Intercom", + "DATA_TYPES": "Dados para importar", + "VALIDATING": "Validando chave de acesso...", + "VALID_KEY": "Chave de acesso validada.", + "INVALID_KEY": "Não foi possível validar esta chave de acesso.", + "ACTIVE_IMPORT": "Espere a importação ativa terminar antes de iniciar outra.", + "CANCEL": "Cancelar", + "IMPORT": "Importar" + }, + "EXPORT": { + "TITLE": "As exportações estão a caminho", + "DESCRIPTION": "Exporte seus contatos e conversas para fora desta conta. Este fluxo de trabalho estará disponível em breve.", + "COMING_SOON": "Em breve" + }, + "TABLE": { + "TITLE": "Importações recentes", + "EMPTY": "Nenhuma importação ainda", + "EMPTY_DESCRIPTION": "Inicie uma importação para trazer o histórico de clientes existente para esta conta.", + "NEW_IMPORT": "Importar", + "COUNT": "Importações {count}", + "UNNAMED": "Importação sem título", + "IMPORTED_COUNT": "{count} importados", + "VIEW": "Ver importação", + "NAME": "Nome", + "TYPE": "Tipo", + "STATUS": "Status", + "IMPORTED": "Importado", + "CREATED": "Criado", + "ABANDON": "Descartar" + }, + "DETAIL": { + "BACK": "Voltar às importações", + "ERRORS": "Erros", + "SKIP_LOGS": "Pular registros", + "SOURCE": "fonte", + "IMPORT_TYPES": "Tipos de importação", + "CREATED": "Criado", + "DURATION": "Duração", + "INITIATED_BY": "Iniciado por", + "PROGRESS": "Importar progresso", + "PROGRESS_WITH_TOTAL": "{imported} de {total} importados", + "PROGRESS_WITHOUT_TOTAL": "{imported} importados", + "PROGRESS_OF_TOTAL": "de {total} importadas", + "PROGRESS_IMPORTED": "importado", + "LAST_UPDATED_TOOLTIP": "Última atualização em {time}", + "NO_SKIP_LOGS": "Nenhum registro foi ignorado ou com falha registrado.", + "DOWNLOAD_SKIP_LOGS": "Baixar CSV", + "DOWNLOAD_ERROR_LOGS": "Baixar CSV", + "ALL_SKIP_LOGS": "Todos", + "KIND": "Tipo", + "NO_ERRORS": "Nenhum erro registrado.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Objeto de origem", + "MESSAGE": "Mensagem" + }, + "MONITOR": { + "LIVE": "Atualizações ao vivo a cada {seconds}s", + "LAST_UPDATED": "Última atualização em {time}", + "REFRESH": "Atualizar", + "REFRESHING": "Atualizando", + "STAGES": { + "unknown": "Aguardando atualização", + "queued": "Enfileirado", + "contacts": "Importando contatos", + "conversations": "Importando conversas", + "finalizing": "Finalizando a importação", + "completed": "Concluído", + "completed_with_errors": "Concluído com erros", + "failed": "Falha", + "abandoned": "Abandonado" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Importação Intercom iniciada.", + "IMPORT_ABANDONED": "A importação de Intercom foi abandonada.", + "IMPORT_FAILED": "Não foi possível iniciar a importação de Intercom." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Configurações do Capitão", "DESCRIPTION": "Configure seus modelos e recursos de IA para o Capitão. O Capitão utiliza um modelo de cobrança baseado em créditos; você será cobrado em créditos por cada ação que o Capitão realizar, dependendo do modelo selecionado.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Ative ou desative recursos com tecnologia de IA.", "AUDIO_TRANSCRIPTION": { "TITLE": "Transcrição de Áudio", - "DESCRIPTION": "Converte automaticamente mensagens de voz e gravações de chamadas em transcrições de texto pesquisáveis." + "DESCRIPTION": "Converte automaticamente mensagens de voz e gravações de chamadas em transcrições de texto pesquisáveis.", + "MODEL_TITLE": "Modelo de transcrição de áudio", + "MODEL_DESCRIPTION": "Selecione o modelo de IA a ser usado para converter mensagens de áudio em transcrições de texto" }, "HELP_CENTER_SEARCH": { "TITLE": "Indexação de Pesquisa da Central de Ajuda", @@ -439,7 +568,18 @@ "TITLE": "Plano Atual", "PLAN_NOTE": "Você está atualmente inscrito no plano **{plan}** com **{quantity}** licenças", "SEAT_COUNT": "Número de assentos", - "RENEWS_ON": "Renovações em" + "RENEWS_ON": "Renovações em", + "CURRENCY": "moeda" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Escolha sua moeda de faturamento", + "DESCRIPTION": "Selecione a moeda na qual você gostaria de ser cobrado. Isso não poderá ser alterado depois que sua assinatura for criada." + }, + "OPTIONS": { + "USD": "Dólar Americano (USD)", + "BRL": "Real Brasileiro (BRL)" + } }, "VIEW_PRICING": "Ver Preços", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Comprar Créditos", "LOADING": "Carregando opções...", "FETCH_ERROR": "Falha ao carregar opções de crédito. Por favor, tente novamente.", + "RETRY": "Tentar novamente", "PURCHASE_ERROR": "Falha ao processar a compra. Por favor, tente novamente.", "PURCHASE_SUCCESS": "Foram adicionados {credits} créditos com sucesso à sua conta", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Máximo de atribuições", "DURATION": "Conversas por agente a cada" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Pular conversas obsoletas", + "DESCRIPTION": "Pular conversas não atribuídas mais antigas. O padrão é 7 dias; limpar para desativar." + }, "INBOXES": { "LABEL": "Caixas de entrada adicionadas", "DESCRIPTION": "Adicionar caixas de entrada às quais esta política será aplicada.", diff --git a/app/javascript/dashboard/i18n/locale/ro/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ro/advancedFilters.json index bdd511f66..5c6fdef4d 100644 --- a/app/javascript/dashboard/i18n/locale/ro/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ro/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "SAU" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Egal cu", "not_equal_to": "Nu este egal cu", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Nume Inbox", "TEAM_NAME": "Numele echipei", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Etichete", diff --git a/app/javascript/dashboard/i18n/locale/ro/chatlist.json b/app/javascript/dashboard/i18n/locale/ro/chatlist.json index 8f9fb4142..95e9cbb6d 100644 --- a/app/javascript/dashboard/i18n/locale/ro/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ro/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ro/companies.json b/app/javascript/dashboard/i18n/locale/ro/companies.json index ce8d6b86f..8a4ee9a8f 100644 --- a/app/javascript/dashboard/i18n/locale/ro/companies.json +++ b/app/javascript/dashboard/i18n/locale/ro/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ro/contact.json b/app/javascript/dashboard/i18n/locale/ro/contact.json index 5ceb50f26..8f306ba73 100644 --- a/app/javascript/dashboard/i18n/locale/ro/contact.json +++ b/app/javascript/dashboard/i18n/locale/ro/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notițe", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ro/conversation.json b/app/javascript/dashboard/i18n/locale/ro/conversation.json index a2679e6ac..0f551a3bb 100644 --- a/app/javascript/dashboard/i18n/locale/ro/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ro/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Poți răspunde la această conversație doar folosind un mesaj șablon datorat", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restricţie fereastră mesaj 24 de ore", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Răspundeți la:", "REMOVE_SELECTION": "Elimină selecția", "DOWNLOAD": "Descărcare", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Nu s-a putut deschide audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Trageți și plasați aici pentru atașare", + "IMAGE_UPLOAD_SUCCESS": "Imagine încărcată cu succes", "START_AUDIO_RECORDING": "Pornirea înregistrării audio", "STOP_AUDIO_RECORDING": "Mesaj audio", "COPILOT_THINKING": "Copilot se gândește", @@ -303,6 +306,25 @@ "MESSAGE": "Nu puteți anula această acțiune", "DELETE": "Şterge", "CANCEL": "Renunță" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Descriere", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ro/emoji.json b/app/javascript/dashboard/i18n/locale/ro/emoji.json index 61df28b26..ad13eaacc 100644 --- a/app/javascript/dashboard/i18n/locale/ro/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ro/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Caută emoji-uri", "NOT_FOUND": "Niciun emoji nu corespunde căutării tale", "REMOVE": "Elimină" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Niciun emoji nu corespunde căutării tale", + "NO_ICON": "No icons match your search", + "REMOVE": "Elimină", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ro/helpCenter.json b/app/javascript/dashboard/i18n/locale/ro/helpCenter.json index a2f04e3d6..c4da4c366 100644 --- a/app/javascript/dashboard/i18n/locale/ro/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ro/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Publicat", "ARCHIVED": "Arhivat" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Şterge", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Categorie nouă", "EDIT_CATEGORY": "Editare categorie", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nu au fost găsite categorii", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Şterge" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Necategorizat" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Nume" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Adaugați o nouă limba", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Previzualizați", "PUBLISH": "Publicați", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Ciornă", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Titlu" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Necategorizat", diff --git a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json index 4919eb398..511c54147 100644 --- a/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ro/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Pentru a vă adăuga profilul de Twitter ca si canal, trebuie să vă autentificați profilul de Twitter făcând clic pe \"Conectați-vă cu Twitter\" ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID-ul contului de companie", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Cheie API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Închide", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Adaugă", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Număr de telefon", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Înapoi", + "CANCEL": "Renunță", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ro/index.js b/app/javascript/dashboard/i18n/locale/ro/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ro/index.js +++ b/app/javascript/dashboard/i18n/locale/ro/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ro/integrations.json b/app/javascript/dashboard/i18n/locale/ro/integrations.json index c74eddd30..b63ff83c5 100644 --- a/app/javascript/dashboard/i18n/locale/ro/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ro/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Evenimente subscrise", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Aflați mai multe", + "OVERVIEW": { + "HEADER": "Prezentare generală", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Mediu de testare", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Facturare", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistenți", "SWITCH_ASSISTANT": "Comutați între asistenți", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Descriere", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copiază", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Vezi detaliile", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/ro/onboarding.json b/app/javascript/dashboard/i18n/locale/ro/onboarding.json index 66cb06914..86476fa75 100644 --- a/app/javascript/dashboard/i18n/locale/ro/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ro/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Ceva nu a mers bine. Vă rugăm să încercați din nou.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Asistenta", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Conectează-te", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-mail", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Conectează-te", + "BACK": "Înapoi", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ro/report.json b/app/javascript/dashboard/i18n/locale/ro/report.json index fb1f2d9d4..4ba55683c 100644 --- a/app/javascript/dashboard/i18n/locale/ro/report.json +++ b/app/javascript/dashboard/i18n/locale/ro/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Niciun rezultat găsit" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Neatribuit", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ro/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ro/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ro/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ro/settings.json b/app/javascript/dashboard/i18n/locale/ro/settings.json index cc6cc718d..6deebf0a8 100644 --- a/app/javascript/dashboard/i18n/locale/ro/settings.json +++ b/app/javascript/dashboard/i18n/locale/ro/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token acces", "NOTE": "Acest token poate fi utilizat dacă construiți o integrare bazată pe API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copiază", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Prezentare generală", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notificări", "CANNED_RESPONSES": "Răspunsuri predefinite", "INTEGRATIONS": "Integrări", + "DATA": "Data", "PROFILE_SETTINGS": "Setări profil", "ACCOUNT_SETTINGS": "Setările contului", "APPLICATIONS": "Aplicatii", @@ -379,11 +393,124 @@ "INFO_TEXT": "Permiteți sistemului să vă marcheze automat offline atunci când nu utilizați aplicația sau tabloul de bord.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sortați după", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Citiți Documente", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importă", + "EXPORT": "Exportă" + }, + "TYPES": { + "CONTACTS": "Contacte", + "CONVERSATIONS": "Conversații", + "MESSAGES": "Mesaje" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Renunță", + "IMPORT": "Importă" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importă", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Nume", + "TYPE": "Tip", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Creat", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Creat", + "DURATION": "Durata", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Toate", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Mesaj" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Reîmprospătare", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Finalizată", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Pentru acest plan nu sunt disponibile extraoptiuni", "PLAN_NOTE": "În prezent sunteți abonat la planul **{plan}** cu licențe **{quantity}**", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/ru/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ru/advancedFilters.json index a2ae62eba..8147add81 100644 --- a/app/javascript/dashboard/i18n/locale/ru/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ru/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ИЛИ" }, "INPUT_PLACEHOLDER": "Введите значение", + "CONTACT_SEARCH_PLACEHOLDER": "Поиск контактов", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Равно", "not_equal_to": "Не равно", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Имя назначенного", "INBOX_NAME": "Имя источника", "TEAM_NAME": "Название команды", + "CONTACT": "Контакт", "CONVERSATION_IDENTIFIER": "Идентификатор беседы", "CAMPAIGN_NAME": "Название кампании", "LABELS": "Категории", diff --git a/app/javascript/dashboard/i18n/locale/ru/chatlist.json b/app/javascript/dashboard/i18n/locale/ru/chatlist.json index 4f0bc0c98..a1b4d9e5f 100644 --- a/app/javascript/dashboard/i18n/locale/ru/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ru/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Приоритет: Сначала высокие, Создано: Сначала старые" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ru/companies.json b/app/javascript/dashboard/i18n/locale/ru/companies.json index 2dd912860..dd3aa9386 100644 --- a/app/javascript/dashboard/i18n/locale/ru/companies.json +++ b/app/javascript/dashboard/i18n/locale/ru/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Добавить компанию" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Добавить информацию о компании", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ru/contact.json b/app/javascript/dashboard/i18n/locale/ru/contact.json index 49645ea4b..34e5d3150 100644 --- a/app/javascript/dashboard/i18n/locale/ru/contact.json +++ b/app/javascript/dashboard/i18n/locale/ru/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Свойства", "HISTORY": "История", "NOTES": "Заметки", + "MEDIA": "Медиа", "MERGE": "Объединить" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ru/conversation.json b/app/javascript/dashboard/i18n/locale/ru/conversation.json index a868b746d..6d569abde 100644 --- a/app/javascript/dashboard/i18n/locale/ru/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ru/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Вы можете ответить в этой беседе только с помощью шаблона сообщения", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Ограничение на 24 часа", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Данный аккаунт Instagram был перенесен в новый канал Instagram. Все новые сообщения будут появляться там. Вы больше не сможете отправлять сообщения из этого диалога.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Вы отвечаете на:", "REMOVE_SELECTION": "Удалить выделенное", "DOWNLOAD": "Скачать", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Не удалось открыть аудио", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Перетащите сюда, чтобы прикрепить", + "IMAGE_UPLOAD_SUCCESS": "Изображение успешно загружено", "START_AUDIO_RECORDING": "Начать запись аудио", "STOP_AUDIO_RECORDING": "Остановить запись аудио", "COPILOT_THINKING": "Copilot думает", @@ -303,6 +306,25 @@ "MESSAGE": "Вы не можете отменить это действие", "DELETE": "Удалить", "CANCEL": "Отменить" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Описание", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Посмотреть все", "SHOW_LESS": "Показать меньше", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Файл без заголовка" + "UNTITLED_FILE": "Файл без заголовка", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ru/emoji.json b/app/javascript/dashboard/i18n/locale/ru/emoji.json index eada5b4b2..2762c07e8 100644 --- a/app/javascript/dashboard/i18n/locale/ru/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ru/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Поиск эмодзи", "NOT_FOUND": "Эмодзи не соответствуют вашему запросу", "REMOVE": "Удалить" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Эмодзи не соответствуют вашему запросу", + "NO_ICON": "No icons match your search", + "REMOVE": "Удалить", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ru/helpCenter.json b/app/javascript/dashboard/i18n/locale/ru/helpCenter.json index 25f82d516..3ec924d8e 100644 --- a/app/javascript/dashboard/i18n/locale/ru/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ru/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Опубликовано", "ARCHIVED": "Архив" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Без категории" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Все локали" }, + "SEARCH_PLACEHOLDER": "Поиск статей...", "NEW_ARTICLE": "Новая статья" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "В этой категории нет статей", "SUBTITLE": "Статьи в этой категории будут отображаться здесь" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Удалить", "STATUS_SUCCESS": "Статьи успешно обновлены", "STATUS_ERROR": "Ошибка обновления статей", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Удаление статьи | Удалить статьи {count}", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Новая категория", "EDIT_CATEGORY": "Редактировать категорию", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} категорий | {n} категорий", "BREADCRUMB": { "CATEGORY_LOCALE": "Категории ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Категорий не найдено", "SUBTITLE": "Категории появятся здесь. Вы можете добавить категорию, нажав на кнопку 'Новая категория'." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} статьи | {count} статьи" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Нет доступных локалей | {n} локаль | {n} локалей", "NEW_LOCALE_BUTTON_TEXT": "Новая локаль", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} статьи | {count} статьи", "CATEGORIES_COUNT": "{count} категория | {count} категории", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Сделать по умолчанию", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Удалить" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Поиск...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Без категории" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Имя" + }, + "PAGE_TITLE": { + "LABEL": "Заголовок страницы" + }, + "HEADER_TEXT": { + "LABEL": "Текст заголовка" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Добавить новую локаль", "DESCRIPTION": "Выберите язык, на котором будет написана эта статья. Этот язык будет добавлен в ваш список переводов, и вы сможете добавить другие языки позже.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Предпросмотр", "PUBLISH": "Опубликовано", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Черновик", "ARCHIVE": "Архив", "BACK_TO_ARTICLES": "Назад к статьям" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Название" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Больше параметров", "UNCATEGORIZED": "Без категории", diff --git a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json index 0f10f4684..ebe41eb02 100644 --- a/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ru/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Произошла ошибка при подключении к Instagram, попробуйте еще раз", "ERROR_AUTH": "Произошла ошибка при подключении к Instagram, попробуйте еще раз", "NEW_INBOX_SUGGESTION": "Ранее эта учетная запись Instagram была связана с другой папкой \"Входящие\" и теперь была перенесена сюда. Здесь появятся все новые сообщения. Старая папка \"Входящие\" больше не сможет отправлять или получать сообщения для этой учетной записи.", - "DUPLICATE_INBOX_BANNER": "Этот аккаунт Instagram был перенесен в новый почтовый ящик Instagram. Вы больше не сможете отправлять и получать сообщения Instagram из этого ящика." + "DUPLICATE_INBOX_BANNER": "Этот аккаунт Instagram был перенесен в новый почтовый ящик Instagram. Вы больше не сможете отправлять и получать сообщения Instagram из этого ящика.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Продолжить в TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Подключить ваш профиль TikTok", "HELP": "Чтобы добавить ваш профиль TikTok в качестве источника, вам нужно авторизоваться в вашем профиле TikTok, нажав на 'Продолжить в TikTok' ", "ERROR_MESSAGE": "Произошла ошибка при подключении к TikTok, попробуйте еще раз", - "ERROR_AUTH": "Произошла ошибка при подключении к TikTok, попробуйте еще раз" + "ERROR_AUTH": "Произошла ошибка при подключении к TikTok, попробуйте еще раз", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Чтобы добавить свой Twitter профиль в качестве источника, вам нужно авторизоваться при помощи входа через Twitter ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Голосовой вызов требует учетные данные Twilio API Key. Они используются для генерации токенов для голосовых подключений агентов." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "Этот почтовый ящик подключён через WhatsApp Embedded Signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "Вы можете перенастроить этот почтовый ящик для обновления параметров WhatsApp Business.", "WHATSAPP_RECONFIGURE_BUTTON": "Изменить настройки", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID бизнес-аккаунта", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Ключ API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Подключение к WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Обновитесь до WhatsApp embedded signup, чтобы облегчить управление.", "WHATSAPP_CONNECT_DESCRIPTION": "Подключите этот почтовый ящик к WhatsApp Business для расширения функций и упрощения управления.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Вручную синхронизируйте шаблоны сообщений из WhatsApp, чтобы обновить доступные шаблоны.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Синхронизировать шаблоны", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Синхронизация шаблонов успешно запущена. Обновление может занять несколько минут.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Закрыть", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Обновлено", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Показать номер телефона", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Добавить", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Электронная почта", + "PHONE_NUMBER": "Номер телефона", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Назад", + "CANCEL": "Отменить", + "CONTINUE": "Продолжить", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ru/index.js b/app/javascript/dashboard/i18n/locale/ru/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ru/index.js +++ b/app/javascript/dashboard/i18n/locale/ru/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ru/integrations.json b/app/javascript/dashboard/i18n/locale/ru/integrations.json index c58f87d1c..216210081 100644 --- a/app/javascript/dashboard/i18n/locale/ru/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ru/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "События с подпиской", "LEARN_MORE": "Узнать больше о вебхуках", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Обновить сейчас", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Капитан", "HEADER_KNOW_MORE": "Узнать больше", + "OVERVIEW": { + "HEADER": "Обзор", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Отклонить" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Отклонить" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Загрузить ещё", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Документы" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Площадка", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Платёж", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Ассистенты", "SWITCH_ASSISTANT": "Переключиться между помощниками", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Введите имя помощника", "ERROR": "Имя обязательно" }, - "TEMPERATURE": { - "LABEL": "Температура ответа", - "DESCRIPTION": "Настройте творческие или ограничительные реакции помощника. Меньшие ценности дают более сфокусированные и детерминированные отклики, а более высокие ценности позволяют более творчески и разнообразно вырабатывать результаты." - }, "DESCRIPTION": { "LABEL": "Описание", "PLACEHOLDER": "Введите описание помощника", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Документы", "ADD_NEW": "Создать новый документ", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "Выбрано {count}", "SELECT_ALL": "Выбрать все ({count})", "UNSELECT_ALL": "Сбросить все ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Связанные FAQ", - "DESCRIPTION": "Эти FAQ генерируются напрямую из документа." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Недоступен", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Копировать", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Введите URL документа, чтобы добавить его в качестве источника знаний и выберите ассистента, с которым он свяжется.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "При удалении документа произошла ошибка, пожалуйста, попробуйте еще раз." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Просмотр связанных ответов", + "VIEW_DETAILS": "Просмотреть подробности", "SYNC_NOW": "Обновите сейчас", "RETRY_SYNC": "Повторите обновление", "DELETE_DOCUMENT": "Удалить документ" diff --git a/app/javascript/dashboard/i18n/locale/ru/onboarding.json b/app/javascript/dashboard/i18n/locale/ru/onboarding.json index 45ccce014..5ae7ef42e 100644 --- a/app/javascript/dashboard/i18n/locale/ru/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ru/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Пожалуйста, заполните все обязательные поля", "SUCCESS": "Данные успешно сохранены", "ERROR": "Не удалось сохранить детали. Пожалуйста, попробуйте еще раз." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Продолжить", + "SKIP": "Skip", + "ERROR": "Что-то пошло не так. Попробуйте еще раз.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Готово", + "HELP_CENTER": "Центр поддержки", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} категория | {count} категории", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Подключить", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Голосовая связь", + "VIEW_ALL": "Посмотреть все", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Подключить", + "BACK": "Назад", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ru/report.json b/app/javascript/dashboard/i18n/locale/ru/report.json index 6183528d1..b93d6c2f5 100644 --- a/app/javascript/dashboard/i18n/locale/ru/report.json +++ b/app/javascript/dashboard/i18n/locale/ru/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Очистить фильтр", "EMPTY_LIST": "Результаты не найдены" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Загрузить ещё", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Неназначен", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Показаны {start} - {end} из {total} результатов", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ru/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ru/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ru/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ru/settings.json b/app/javascript/dashboard/i18n/locale/ru/settings.json index 5be58d538..8194c6d4f 100644 --- a/app/javascript/dashboard/i18n/locale/ru/settings.json +++ b/app/javascript/dashboard/i18n/locale/ru/settings.json @@ -86,9 +86,21 @@ "NOTE": "Управление дополнительными функциями безопасности для вашей учетной записи.", "MFA_BUTTON": "Управление двухфакторной аутентификацией" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Токен доступа", "NOTE": "Этот токен может быть использован, если вы настраиваете интеграцию на основе API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Копировать", "RESET": "Сброс", "CONFIRM_RESET": "Вы уверены?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Все компании", "CAPTAIN": "Капитан", "CAPTAIN_ASSISTANTS": "Ассистенты", + "CAPTAIN_OVERVIEW": "Обзор", "CAPTAIN_DOCUMENTS": "Документы", "CAPTAIN_RESPONSES": "FAQ", "CAPTAIN_TOOLS": "Инструменты", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Уведомления", "CANNED_RESPONSES": "Шаблонные ответы", "INTEGRATIONS": "Интеграции", + "DATA": "Data", "PROFILE_SETTINGS": "Настройки профиля", "ACCOUNT_SETTINGS": "Настройки аккаунта", "APPLICATIONS": "Приложения", @@ -379,11 +393,124 @@ "INFO_TEXT": "Позволить системе автоматически отмечать вас в автономном режиме, если вы не используете приложение или приборную панель.", "INFO_SHORT": "Автоматически отмечать оффлайн, когда вы не используете приложение." }, + "SORT_TOOLTIP": "Сортировка", + "SORT_BY": "Сортировать по", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Открыть документацию", "SECURITY": "Безопасность", "CAPTAIN_AI": "Капитан", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Импортировать", + "EXPORT": "Экспорт" + }, + "TYPES": { + "CONTACTS": "Контакты", + "CONVERSATIONS": "Диалоги", + "MESSAGES": "Сообщения" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Отменить", + "IMPORT": "Импортировать" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Импортировать", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Имя", + "TYPE": "Тип", + "STATUS": "Статус", + "IMPORTED": "Imported", + "CREATED": "Создан", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Создан", + "DURATION": "Продолжительность", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Последнее обновление {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Все", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Сообщение" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Последнее обновление {time}", + "REFRESH": "Обновить", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Выполнено", + "completed_with_errors": "Completed with errors", + "failed": "Не удалось", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Текущий план", "PLAN_NOTE": "На данный момент вы подписаны на ** план{plan}** с **{quantity}** лицензиями", "SEAT_COUNT": "Количество мест", - "RENEWS_ON": "Продление" + "RENEWS_ON": "Продление", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Посмотреть цены", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Купить кредиты", "LOADING": "Загрузка настроек...", "FETCH_ERROR": "Не удалось загрузить настройки оплаты. Попробуйте ещё раз.", + "RETRY": "Повторить", "PURCHASE_ERROR": "Не удалось провести оплату. Попробуйте ещё раз.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Назначить макс.", "DURATION": "Диалоги на каждого агента в каждом" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Добавленные ящики", "DESCRIPTION": "Добавьте почтовые ящики, для которых будет применяться эта политика.", diff --git a/app/javascript/dashboard/i18n/locale/sh/advancedFilters.json b/app/javascript/dashboard/i18n/locale/sh/advancedFilters.json index a991cb25b..deef6fadd 100644 --- a/app/javascript/dashboard/i18n/locale/sh/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/sh/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Kontakt", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/sh/chatlist.json b/app/javascript/dashboard/i18n/locale/sh/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/sh/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/sh/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/sh/companies.json b/app/javascript/dashboard/i18n/locale/sh/companies.json index 463127228..51fcf5e5d 100644 --- a/app/javascript/dashboard/i18n/locale/sh/companies.json +++ b/app/javascript/dashboard/i18n/locale/sh/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sh/contact.json b/app/javascript/dashboard/i18n/locale/sh/contact.json index 79bd872b9..4b65f447e 100644 --- a/app/javascript/dashboard/i18n/locale/sh/contact.json +++ b/app/javascript/dashboard/i18n/locale/sh/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/sh/conversation.json b/app/javascript/dashboard/i18n/locale/sh/conversation.json index 0fdac9cd5..60a5df19e 100644 --- a/app/javascript/dashboard/i18n/locale/sh/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sh/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Možete odgovoriti na ovaj razgovor samo pomoću šablona poruke zbog", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "ograničenja od 24 sata za slanje poruka", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Odgovarate na:", "REMOVE_SELECTION": "Ukloni izbor", "DOWNLOAD": "Preuzmi", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Prevucite ovde za dodavanje", + "IMAGE_UPLOAD_SUCCESS": "Slika je uspešno otpremljena", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot razmišlja", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/sh/emoji.json b/app/javascript/dashboard/i18n/locale/sh/emoji.json index d5b96f0f9..145f5c4fb 100644 --- a/app/javascript/dashboard/i18n/locale/sh/emoji.json +++ b/app/javascript/dashboard/i18n/locale/sh/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Ukloni", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/sh/helpCenter.json b/app/javascript/dashboard/i18n/locale/sh/helpCenter.json index 2afac34aa..094dbdd9b 100644 --- a/app/javascript/dashboard/i18n/locale/sh/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/sh/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Objavljeno", "ARCHIVED": "Arhivirano" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Bez kategorije" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Svi jezici" }, + "SEARCH_PLACEHOLDER": "Pretraži članke...", "NEW_ARTICLE": "Novi članak" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Nema članaka u ovoj kategoriji", "SUBTITLE": "Članci iz ove kategorije će se pojaviti ovde" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nova kategorija", "EDIT_CATEGORY": "Izmeni kategoriju", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nema pronađenih kategorija", "SUBTITLE": "Kategorije će se pojaviti ovde. Možete dodati kategoriju klikom na dugme 'Nova kategorija'." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "Novi jezik", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Postavi kao podrazumevano", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Obriši" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Nekategorizovano" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Naslov stranice" + }, + "HEADER_TEXT": { + "LABEL": "Tekst zaglavlja" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Dodaj novu lokalizaciju", "DESCRIPTION": "Izaberite jezik na kojem će ovaj članak biti napisan. Ovo će biti dodato na vašu listu prevoda, a kasnije možete dodati još jezika.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Pregled", "PUBLISH": "Objavi", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Nacrt", "ARCHIVE": "Arhiviraj", "BACK_TO_ARTICLES": "Nazad na članke" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Više opcija", "UNCATEGORIZED": "Bez kategorije", diff --git a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json index bdee453dc..e2e169458 100644 --- a/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sh/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Došlo je do pogreške pri povezivanju s Instagramom, molimo pokušajte ponovno", "ERROR_AUTH": "Došlo je do pogreške pri povezivanju s Instagramom, molimo pokušajte ponovno", "NEW_INBOX_SUGGESTION": "Ovaj Instagram račun je prethodno bio povezan s drugim inboxom i sada je migriran ovdje. Sve nove poruke pojavit će se ovdje. Stari inbox više neće moći slati niti primati poruke za ovaj račun.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "Za dodavanje vašeg TikTok profila kao kanala, morate potvrditi svoj TikTok profil klikom na 'Nastavi s TikTokom' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Za dodavanje vašeg Twitter profila kao kanala, morate potvrditi svoj Twitter profil klikom na 'Prijavi se s Twitterom' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "Možete rekonfigurirati ovaj inbox za ažuriranje postavki WhatsApp Businessa.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID poslovnog računa", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API ključ", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Zatvori", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Prikaži telefonski broj", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Phone number", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Nastavi", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/sh/index.js b/app/javascript/dashboard/i18n/locale/sh/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/sh/index.js +++ b/app/javascript/dashboard/i18n/locale/sh/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/sh/integrations.json b/app/javascript/dashboard/i18n/locale/sh/integrations.json index 788ef8e5a..92da79289 100644 --- a/app/javascript/dashboard/i18n/locale/sh/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sh/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Pretplaćeni događaji", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Tajna", "COPY": "Kopiraj tajnu u međuspremnik", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Kapetan", "HEADER_KNOW_MORE": "Saznaj više", + "OVERVIEW": { + "HEADER": "Pregled", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Dokumenti" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Igralište", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Naplate", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistenti", "SWITCH_ASSISTANT": "Prebaci između asistenata", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Unesite ime asistenta", "ERROR": "Ime je obavezno" }, - "TEMPERATURE": { - "LABEL": "Temperatura odgovora", - "DESCRIPTION": "Prilagodite koliko kreativni ili ograničeni trebaju biti odgovori asistenta. Niže vrijednosti daju fokusiranije i determinističke odgovore, dok više vrijednosti dopuštaju kreativnije i raznovrsnije rezultate." - }, "DESCRIPTION": { "LABEL": "Opis", "PLACEHOLDER": "Unesite opis asistenta", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Dokumenti", "ADD_NEW": "Kreiraj novi dokument", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} odabrano", "SELECT_ALL": "Odaberi sve ({count})", "UNSELECT_ALL": "Poništi odabir svih ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Povezana često postavljana pitanja", - "DESCRIPTION": "Ova često postavljana pitanja generirana su izravno iz dokumenta." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopiraj", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Unesite URL dokumenta da ga dodate kao izvor znanja i odaberite asistenta s kojim će biti povezan.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Došlo je do pogreške pri brisanju dokumenta, molimo pokušajte ponovno." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Pogledaj povezane odgovore", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Izbriši dokument" diff --git a/app/javascript/dashboard/i18n/locale/sh/onboarding.json b/app/javascript/dashboard/i18n/locale/sh/onboarding.json index b10b9a5ac..9771b3dd5 100644 --- a/app/javascript/dashboard/i18n/locale/sh/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/sh/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Nastavi", + "SKIP": "Preskoči", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Centar za pomoć", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Poveži", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Glas", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Poveži", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/sh/report.json b/app/javascript/dashboard/i18n/locale/sh/report.json index 6a4473eac..b6c4c2845 100644 --- a/app/javascript/dashboard/i18n/locale/sh/report.json +++ b/app/javascript/dashboard/i18n/locale/sh/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Nedodeljeni", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/sh/sessionLimit.json b/app/javascript/dashboard/i18n/locale/sh/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/sh/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/sh/settings.json b/app/javascript/dashboard/i18n/locale/sh/settings.json index 98ff3cdcf..cb60e842a 100644 --- a/app/javascript/dashboard/i18n/locale/sh/settings.json +++ b/app/javascript/dashboard/i18n/locale/sh/settings.json @@ -86,9 +86,21 @@ "NOTE": "Upravljajte dodatnim sigurnosnim značajkama za svoj račun.", "MFA_BUTTON": "Upravljajte dvofaktorskom autentifikacijom" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Pristupni token", "NOTE": "Ovaj token se može koristiti ako gradite integraciju temeljenu na API-ju", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopiraj", "RESET": "Resetuj", "CONFIRM_RESET": "Jeste li sigurni?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Sve tvrtke", "CAPTAIN": "Kapetan", "CAPTAIN_ASSISTANTS": "Pomoćnici", + "CAPTAIN_OVERVIEW": "Pregled", "CAPTAIN_DOCUMENTS": "Dokumenti", "CAPTAIN_RESPONSES": "Često postavljana pitanja", "CAPTAIN_TOOLS": "Alati", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Obavijesti", "CANNED_RESPONSES": "Predlošci odgovora", "INTEGRATIONS": "Integracije", + "DATA": "Data", "PROFILE_SETTINGS": "Postavke profila", "ACCOUNT_SETTINGS": "Postavke računa", "APPLICATIONS": "Aplikacije", @@ -379,11 +393,124 @@ "INFO_TEXT": "Neka sustav automatski označi da ste nedostupni kada ne koristite aplikaciju ili nadzornu ploču.", "INFO_SHORT": "Automatski označi kao izvan mreže kada ne koristiš aplikaciju." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sortiraj po", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Pročitajte dokumentaciju", "SECURITY": "Sigurnost", "CAPTAIN_AI": "Kapetan", "CONVERSATION_WORKFLOW": "Tok razgovora" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kontakti", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Uskoro" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Postavke Kapetana", "DESCRIPTION": "Konfigurirajte svoje AI modele i značajke za Captain. Captain koristi naplatu temeljenu na kreditima, bit ćete naplaćeni kredite za svaku radnju koju Captain izvrši na temelju odabranog modela.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Omogući ili onemogući značajke pokretane umjetnom inteligencijom.", "AUDIO_TRANSCRIPTION": { "TITLE": "Prepisivanje zvuka", - "DESCRIPTION": "Automatski pretvori glasovne poruke i snimke poziva u pretražive tekstualne transkripte." + "DESCRIPTION": "Automatski pretvori glasovne poruke i snimke poziva u pretražive tekstualne transkripte.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Indeksiranje pretraživanja centra za pomoć", @@ -439,7 +568,18 @@ "TITLE": "Trenutni plan", "PLAN_NOTE": "Trenutno ste pretplaćeni na plan **{plan}** s **{quantity}** licenci", "SEAT_COUNT": "Broj mjesta", - "RENEWS_ON": "Obnavlja se" + "RENEWS_ON": "Obnavlja se", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Pogledaj cijene", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Kupi kredite", "LOADING": "Učitavanje opcija...", "FETCH_ERROR": "Neuspjelo učitavanje opcija kredita. Molimo pokušajte ponovo.", + "RETRY": "Retry", "PURCHASE_ERROR": "Neuspjelo procesiranje kupovine. Molimo pokušajte ponovo.", "PURCHASE_SUCCESS": "Uspješno dodano {credits} kredita na vaš račun", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Maksimalno dodijeli", "DURATION": "Razgovori po agentu u svakih" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/sk/advancedFilters.json b/app/javascript/dashboard/i18n/locale/sk/advancedFilters.json index a18a50b8f..d4cde9121 100644 --- a/app/javascript/dashboard/i18n/locale/sk/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/sk/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Názov tímu", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/sk/chatlist.json b/app/javascript/dashboard/i18n/locale/sk/chatlist.json index 02811892d..68ad032cc 100644 --- a/app/javascript/dashboard/i18n/locale/sk/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/sk/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/sk/companies.json b/app/javascript/dashboard/i18n/locale/sk/companies.json index 06d8493ba..51ecd2411 100644 --- a/app/javascript/dashboard/i18n/locale/sk/companies.json +++ b/app/javascript/dashboard/i18n/locale/sk/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sk/contact.json b/app/javascript/dashboard/i18n/locale/sk/contact.json index b8efbaaca..224adeae3 100644 --- a/app/javascript/dashboard/i18n/locale/sk/contact.json +++ b/app/javascript/dashboard/i18n/locale/sk/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Poznámky", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/sk/conversation.json b/app/javascript/dashboard/i18n/locale/sk/conversation.json index 8010f662d..4747c895d 100644 --- a/app/javascript/dashboard/i18n/locale/sk/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sk/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Na túto konverzáciu môžete odpovedať len pomocou šablóny správy z dôvodu", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24-hodinové obmedzenie okna správ", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Odpovedáte na:", "REMOVE_SELECTION": "Odstrániť výber", "DOWNLOAD": "Stiahnuť", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Potiahnite sem na pripojenie", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot rozmýšľa", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Vymazať", "CANCEL": "Zrušiť" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/sk/emoji.json b/app/javascript/dashboard/i18n/locale/sk/emoji.json index d5b96f0f9..f5572d569 100644 --- a/app/javascript/dashboard/i18n/locale/sk/emoji.json +++ b/app/javascript/dashboard/i18n/locale/sk/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Remove", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/sk/helpCenter.json b/app/javascript/dashboard/i18n/locale/sk/helpCenter.json index b2a0d3f9b..f3629a1cd 100644 --- a/app/javascript/dashboard/i18n/locale/sk/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/sk/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Vymazať", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Vymazať" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Meno" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json index 9c13e2903..bf217cf43 100644 --- a/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sk/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Ak chcete pridať svoj profil na Twitteri ako kanál, musíte overiť svoj profil Twitter kliknutím na \"Prihlásiť sa pomocou Twitteru\" ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API kľúč", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Zatvoriť", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Pridať", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Schránka", + "PHONE_NUMBER": "Telefónne číslo", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Späť", + "CANCEL": "Zrušiť", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/sk/index.js b/app/javascript/dashboard/i18n/locale/sk/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/sk/index.js +++ b/app/javascript/dashboard/i18n/locale/sk/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/sk/integrations.json b/app/javascript/dashboard/i18n/locale/sk/integrations.json index 23f8b1acf..360fdbd4a 100644 --- a/app/javascript/dashboard/i18n/locale/sk/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sk/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Viac informácií", + "OVERVIEW": { + "HEADER": "Prehľad", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Ihrisko", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistenti", "SWITCH_ASSISTANT": "Prepnite medzi asistentmi", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Description", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copy", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Ukáž detaily", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/sk/onboarding.json b/app/javascript/dashboard/i18n/locale/sk/onboarding.json index 4a6e1dc3b..ea63c548d 100644 --- a/app/javascript/dashboard/i18n/locale/sk/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/sk/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connect", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connect", + "BACK": "Späť", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/sk/report.json b/app/javascript/dashboard/i18n/locale/sk/report.json index e7c7b4e25..5c51aae09 100644 --- a/app/javascript/dashboard/i18n/locale/sk/report.json +++ b/app/javascript/dashboard/i18n/locale/sk/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Žiadne výsledky neboli nájdené" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Nepriradené", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/sk/sessionLimit.json b/app/javascript/dashboard/i18n/locale/sk/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/sk/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/sk/settings.json b/app/javascript/dashboard/i18n/locale/sk/settings.json index 327247fcd..51f85f4a9 100644 --- a/app/javascript/dashboard/i18n/locale/sk/settings.json +++ b/app/javascript/dashboard/i18n/locale/sk/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Prístupový token", "NOTE": "Tento token môžete použiť, ak vytvárate integráciu založenú na rozhraní API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copy", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Prehľad", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Upozornenia", "CANNED_RESPONSES": "Uložené odpovede", "INTEGRATIONS": "Integrations", + "DATA": "Data", "PROFILE_SETTINGS": "Profile Settings", "ACCOUNT_SETTINGS": "Account Settings", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importovať", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kontakty", + "CONVERSATIONS": "Rozhovory", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Zrušiť", + "IMPORT": "Importovať" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importovať", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Meno", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Všetko", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Správa" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Obnoviť", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/sl/advancedFilters.json b/app/javascript/dashboard/i18n/locale/sl/advancedFilters.json index 58d60b00c..39734df24 100644 --- a/app/javascript/dashboard/i18n/locale/sl/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/sl/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ALI" }, "INPUT_PLACEHOLDER": "Vnesite vrednost", + "CONTACT_SEARCH_PLACEHOLDER": "Išči stike", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Enako", "not_equal_to": "Ni enako", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Ime prejemnika", "INBOX_NAME": "Ime nabiralnika", "TEAM_NAME": "Ime ekipe", + "CONTACT": "Kontakt", "CONVERSATION_IDENTIFIER": "Identifikator pogovora", "CAMPAIGN_NAME": "Ime kampanje", "LABELS": "Označbe", diff --git a/app/javascript/dashboard/i18n/locale/sl/chatlist.json b/app/javascript/dashboard/i18n/locale/sl/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/sl/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/sl/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/sl/companies.json b/app/javascript/dashboard/i18n/locale/sl/companies.json index eda06793c..92aca0f6d 100644 --- a/app/javascript/dashboard/i18n/locale/sl/companies.json +++ b/app/javascript/dashboard/i18n/locale/sl/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sl/contact.json b/app/javascript/dashboard/i18n/locale/sl/contact.json index 268130bc3..866965ea3 100644 --- a/app/javascript/dashboard/i18n/locale/sl/contact.json +++ b/app/javascript/dashboard/i18n/locale/sl/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Atributi", "HISTORY": "Zgodovina", "NOTES": "Beležke", + "MEDIA": "Media", "MERGE": "Združi" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/sl/conversation.json b/app/javascript/dashboard/i18n/locale/sl/conversation.json index ee8ab9116..bc41571f6 100644 --- a/app/javascript/dashboard/i18n/locale/sl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sl/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "You are replying to:", "REMOVE_SELECTION": "Remove Selection", "DOWNLOAD": "Download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Slika je bila uspešno naložena", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot razmišlja", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Prikaži vse", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/sl/emoji.json b/app/javascript/dashboard/i18n/locale/sl/emoji.json index d6caf99a2..c3e6361f2 100644 --- a/app/javascript/dashboard/i18n/locale/sl/emoji.json +++ b/app/javascript/dashboard/i18n/locale/sl/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Iskanje emojijev", "NOT_FOUND": "Z vašim iskanjem se ne ujema noben emoji", "REMOVE": "Odstrani" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Z vašim iskanjem se ne ujema noben emoji", + "NO_ICON": "No icons match your search", + "REMOVE": "Odstrani", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/sl/helpCenter.json b/app/javascript/dashboard/i18n/locale/sl/helpCenter.json index 61e1b5ba2..3f1ebfb53 100644 --- a/app/javascript/dashboard/i18n/locale/sl/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/sl/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Objavljeno", "ARCHIVED": "Arhivirano" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Brez kategorije" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Vsi jeziki" }, + "SEARCH_PLACEHOLDER": "Išči članke...", "NEW_ARTICLE": "Nov članek" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "V tej kategoriji ni člankov", "SUBTITLE": "Članki v tej kategoriji se bodo prikazali tukaj" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Nova kategorija", "EDIT_CATEGORY": "Uredi kategorijo", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} kategorija | {n} kategorije", "BREADCRUMB": { "CATEGORY_LOCALE": "Kategorije ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Ni najdenih kategorij", "SUBTITLE": "Kategorije se bodo prikazale tukaj. Kategorijo lahko dodate s klikom na gumb »Nova kategorija«." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} članek | {count} članki" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Ni razpoložljivih jezikovnih različic | {n} jezikovna različica | {n} jezikovnih različic", "NEW_LOCALE_BUTTON_TEXT": "Nov jezik", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} članek | {count} članki", "CATEGORIES_COUNT": "{count} kategorija | {count} kategorije", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Nastavi kot privzeto", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Izbriši" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Iskanje ...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Brez kategorije" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Naslov strani" + }, + "HEADER_TEXT": { + "LABEL": "Besedilo glave" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Dodaj nov jezik", "DESCRIPTION": "Izberite jezik, v katerem bo ta članek napisan. Ta bo dodan na vaš seznam prevodov, kasneje pa lahko dodate še več.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Predogled", "PUBLISH": "Objavi", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Osnutek", "ARCHIVE": "Arhiv", "BACK_TO_ARTICLES": "Nazaj na članke" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Več lastnosti", "UNCATEGORIZED": "Nekategorizirano", diff --git a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json index 9b5579c29..9f7a4bed7 100644 --- a/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sl/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "Ta Instagram račun je bil prej povezan z drugim vhodnim predalom in je bil zdaj sem prenesen. Vsa nova sporočila se bodo prikazovala tukaj. Stari vhodni predal ne bo več mogel pošiljati ali prejemati sporočil za ta račun.", - "DUPLICATE_INBOX_BANNER": "Ta Instagram račun je bil prenesen v nov vhodni predal kanala Instagram. Iz tega vhodnega predala ne boste več mogli pošiljati/prejemati Instagram sporočil." + "DUPLICATE_INBOX_BANNER": "Ta Instagram račun je bil prenesen v nov vhodni predal kanala Instagram. Iz tega vhodnega predala ne boste več mogli pošiljati/prejemati Instagram sporočil.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Nadaljuj s TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Povežite svoj TikTok profil", "HELP": "Če želite dodati svoj TikTok profil kot kanal, se morate prijaviti s svojim TikTok profilom tako, da kliknete »Nadaljuj s TikTok« ", "ERROR_MESSAGE": "Pri povezovanju s TikTok je prišlo do napake, prosimo, poskusite znova", - "ERROR_AUTH": "Pri povezovanju s TikTok je prišlo do napake, prosimo, poskusite znova" + "ERROR_AUTH": "Pri povezovanju s TikTok je prišlo do napake, prosimo, poskusite znova", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "To add your Twitter profile as a channel, you need to authenticate your Twitter Profile by clicking on 'Sign in with Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "Ta poštni predal je povezan prek vgrajene prijave WhatsApp.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "Lahko ponovno konfigurirate ta nabiralnik za posodobitev nastavitev WhatsApp Business.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID poslovnega računa", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API ključ", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Nadgradite na vgrajeno prijavo WhatsApp za lažje upravljanje.", "WHATSAPP_CONNECT_DESCRIPTION": "Povežite ta nabiralnik z WhatsApp Business za izboljšane funkcije in lažje upravljanje.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Ročno sinhronizirajte predloge sporočil iz WhatsApp, da posodobite razpoložljive predloge.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sinhroniziraj predloge", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Sinhronizacija predlog uspešno začeta. Posodobitev lahko traja nekaj minut.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Close", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Prikaži telefonsko številko", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Telefonska številka", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Nadaljuj", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/sl/index.js b/app/javascript/dashboard/i18n/locale/sl/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/sl/index.js +++ b/app/javascript/dashboard/i18n/locale/sl/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/sl/integrations.json b/app/javascript/dashboard/i18n/locale/sl/integrations.json index 245860920..14acb45d3 100644 --- a/app/javascript/dashboard/i18n/locale/sl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sl/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Naročeni dogodki", "LEARN_MORE": "Izvedite več o webhook", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Kapitan", "HEADER_KNOW_MORE": "Izvedi več", + "OVERVIEW": { + "HEADER": "Pregled", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Dokumenti" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Poligon", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Računovodstvo", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Pomočniki", "SWITCH_ASSISTANT": "Preklapljanje med pomočniki", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Description", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Dokumenti", "ADD_NEW": "Ustvari nov dokument", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} izbranih", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Povezana pogosta vprašanja", - "DESCRIPTION": "Ta pogosta vprašanja so ustvarjena neposredno iz dokumenta." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopiraj", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Vnesite URL dokumenta, da ga dodate kot vir znanja, in izberite asistenta, s katerim ga želite povezati.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Pri brisanju dokumenta je prišlo do napake, prosimo, poskusite znova." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Ogled povezanih odgovorov", + "VIEW_DETAILS": "Poglej podrobnosti", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Izbriši dokument" diff --git a/app/javascript/dashboard/i18n/locale/sl/onboarding.json b/app/javascript/dashboard/i18n/locale/sl/onboarding.json index 2b7f78041..64c33bbb9 100644 --- a/app/javascript/dashboard/i18n/locale/sl/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/sl/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Nadaljuj", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Pripravljeno", + "HELP_CENTER": "Pomoč", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} kategorija | {count} kategorije", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Poveži", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-pošta", + "MORE_CHANNELS_VOICE": "Glas", + "VIEW_ALL": "Prikaži vse", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Poveži", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/sl/report.json b/app/javascript/dashboard/i18n/locale/sl/report.json index b17386e89..2166841f5 100644 --- a/app/javascript/dashboard/i18n/locale/sl/report.json +++ b/app/javascript/dashboard/i18n/locale/sl/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/sl/sessionLimit.json b/app/javascript/dashboard/i18n/locale/sl/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/sl/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/sl/settings.json b/app/javascript/dashboard/i18n/locale/sl/settings.json index 6b2d0a255..1ec1337c1 100644 --- a/app/javascript/dashboard/i18n/locale/sl/settings.json +++ b/app/javascript/dashboard/i18n/locale/sl/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Dostopni žeton", "NOTE": "Ta žeton lahko uporabite, če ustvarjate integracijo na osnovi API-ja", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopiraj", "RESET": "Ponastavi", "CONFIRM_RESET": "Ste prepričani?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Kapitan", "CAPTAIN_ASSISTANTS": "Pomočniki", + "CAPTAIN_OVERVIEW": "Pregled", "CAPTAIN_DOCUMENTS": "Dokumenti", "CAPTAIN_RESPONSES": "Pogosta vprašanja", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Obvestila", "CANNED_RESPONSES": "Vnaprej pripravljeni odgovori", "INTEGRATIONS": "Integracije", + "DATA": "Data", "PROFILE_SETTINGS": "Nastavitve profila", "ACCOUNT_SETTINGS": "Nastavitve računa", "APPLICATIONS": "Aplikacije", @@ -379,11 +393,124 @@ "INFO_TEXT": "Dovoli sistemu, da te samodejno označi kot nedosegljivega, ko ne uporabljaš aplikacije ali nadzorne plošče.", "INFO_SHORT": "Samodejno označi kot nedosegljiv, ko aplikacije ne uporabljaš." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Razvrsti po", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Preberite dokumentacijo", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Uvozi", + "EXPORT": "Izvozi" + }, + "TYPES": { + "CONTACTS": "Stiki", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Uvozi" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Uvozi", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Ustvarjeno", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Ustvarjeno", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Sporočilo" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Neuspešno", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Trenutni načrt", "PLAN_NOTE": "Trenutno ste naročeni na načrt **{plan}** z **{quantity}** licencami", "SEAT_COUNT": "Število mest", - "RENEWS_ON": "Obnavlja se dne" + "RENEWS_ON": "Obnavlja se dne", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Ogled cen", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Največ dodeli", "DURATION": "Pogovori na agenta v vsakem" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Dodani predali", "DESCRIPTION": "Dodajte predale, za katere bo ta politika veljala.", diff --git a/app/javascript/dashboard/i18n/locale/sq/advancedFilters.json b/app/javascript/dashboard/i18n/locale/sq/advancedFilters.json index a991cb25b..7a3ac6de1 100644 --- a/app/javascript/dashboard/i18n/locale/sq/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/sq/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Kërko kontakte", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Kontakti", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/sq/chatlist.json b/app/javascript/dashboard/i18n/locale/sq/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/sq/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/sq/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/sq/companies.json b/app/javascript/dashboard/i18n/locale/sq/companies.json index 89e1682ba..a773e0d31 100644 --- a/app/javascript/dashboard/i18n/locale/sq/companies.json +++ b/app/javascript/dashboard/i18n/locale/sq/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sq/contact.json b/app/javascript/dashboard/i18n/locale/sq/contact.json index 521d69672..9bc0552cf 100644 --- a/app/javascript/dashboard/i18n/locale/sq/contact.json +++ b/app/javascript/dashboard/i18n/locale/sq/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Karakteristika", "HISTORY": "Historia", "NOTES": "Shënime", + "MEDIA": "Media", "MERGE": "Bashko" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/sq/conversation.json b/app/javascript/dashboard/i18n/locale/sq/conversation.json index 593b6413b..a9fee4db6 100644 --- a/app/javascript/dashboard/i18n/locale/sq/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sq/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Kjo llogari Instagram u migrua te kutia hyrëse e re e kanalit të Instagram-it. Të gjitha mesazhet e reja do të shfaqen atje. Nuk do të mund të dërgoni më mesazhe nga kjo bisedë.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Po përgjigjeni tek:", "REMOVE_SELECTION": "Hiq përzgjedhjen", "DOWNLOAD": "Shkarko", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Imazhi u ngarkua me sukses", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot po mendon", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/sq/emoji.json b/app/javascript/dashboard/i18n/locale/sq/emoji.json index d5b96f0f9..6d18f9361 100644 --- a/app/javascript/dashboard/i18n/locale/sq/emoji.json +++ b/app/javascript/dashboard/i18n/locale/sq/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Hiq", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/sq/helpCenter.json b/app/javascript/dashboard/i18n/locale/sq/helpCenter.json index 507ee7945..00e086975 100644 --- a/app/javascript/dashboard/i18n/locale/sq/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/sq/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Botuar", "ARCHIVED": "Arkivuar" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Pa kategori" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Të gjitha gjuhët" }, + "SEARCH_PLACEHOLDER": "Kërko artikuj...", "NEW_ARTICLE": "Artikull i ri" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Nuk ka artikuj në këtë kategori", "SUBTITLE": "Artikujt në këtë kategori do të shfaqen këtu" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Kategori e re", "EDIT_CATEGORY": "Ndrysho kategorinë", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} kategori | {n} kategori", "BREADCRUMB": { "CATEGORY_LOCALE": "Kategoritë ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nuk u gjetën kategori", "SUBTITLE": "Kategoritë do të shfaqen këtu. Mund të shtoni një kategori duke klikuar butonin 'Kategori e Re'." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} artikull | {count} artikuj" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Nuk ka gjuhë të disponueshme | {n} gjuhë | {n} gjuhë", "NEW_LOCALE_BUTTON_TEXT": "Gjuhë e re", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} artikull | {count} artikuj", "CATEGORIES_COUNT": "{count} kategori | {count} kategori", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Bëje parazgjedhje", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Fshi" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Pa kategori" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Titulli i faqes" + }, + "HEADER_TEXT": { + "LABEL": "Teksti i kokës" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Shto një gjuhë të re", "DESCRIPTION": "Zgjidhni gjuhën në të cilën do të shkruhet ky artikull. Kjo do të shtohet në listën tuaj të përkthimeve, dhe mund të shtoni më shumë më vonë.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Parapamje", "PUBLISH": "Publiko", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Arkivo", "BACK_TO_ARTICLES": "Kthehu te artikujt" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Më shumë vetitë", "UNCATEGORIZED": "Pa kategori", diff --git a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json index d28896636..3662da393 100644 --- a/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sq/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "Ndodhi një gabim gjatë lidhjes me Instagram, ju lutemi provoni përsëri", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "Ky llogari Instagram është migruar në inbox-in e ri të kanalit Instagram. Nuk do të mund të dërgoni/merrni më mesazhe Instagram nga ky inbox." + "DUPLICATE_INBOX_BANNER": "Ky llogari Instagram është migruar në inbox-in e ri të kanalit Instagram. Nuk do të mund të dërgoni/merrni më mesazhe Instagram nga ky inbox.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Për të shtuar profilin tuaj në Twitter si kanal, duhet të autentikoni profilin tuaj në Twitter duke klikuar në 'Kyçu me Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Rikonfiguro", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID e Llogarisë së Biznesit", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Çelësi API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Lidheni këtë inbox me WhatsApp Business për funksione të avancuara dhe menaxhim më të lehtë.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sinkronizo shabllonet", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Sinkronizimi i modeleve u nis me sukses. Mund të duhen disa minuta për t'u përditësuar.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Mbyll", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Trego numrin e telefonit", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Numri i telefonit", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Vazhdo", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/sq/index.js b/app/javascript/dashboard/i18n/locale/sq/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/sq/index.js +++ b/app/javascript/dashboard/i18n/locale/sq/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/sq/integrations.json b/app/javascript/dashboard/i18n/locale/sq/integrations.json index 21eac5300..c7aa73ebd 100644 --- a/app/javascript/dashboard/i18n/locale/sq/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sq/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Ngjarjet e abonuar", "LEARN_MORE": "Mëso më shumë rreth webhook-eve", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Sekret", "COPY": "Kopjo sekretin në kujtesën e përkohshme", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Kapiten", "HEADER_KNOW_MORE": "Mëso më shumë", + "OVERVIEW": { + "HEADER": "Përmbledhje", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pyetjet e shpeshta në pritje", + "DOCUMENTS": "Dokumentet" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Fushë loje", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Faturimi", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistentë", "SWITCH_ASSISTANT": "Ndrysho midis asistentëve", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Shkruani emrin e asistentit", "ERROR": "Emri është i nevojshëm" }, - "TEMPERATURE": { - "LABEL": "Temperatura e përgjigjes", - "DESCRIPTION": "Rregullo sa krijuese ose kufizuese duhet të jenë përgjigjet e asistentit. Vlerat më të ulëta prodhojnë përgjigje më të përqendruara dhe deterministe, ndërsa vlerat më të larta lejojnë rezultate më krijuese dhe të ndryshme." - }, "DESCRIPTION": { "LABEL": "Përshkrimi", "PLACEHOLDER": "Shkruani përshkrimin e asistentit", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Dokumentet", "ADD_NEW": "Krijo një dokument të ri", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} i/e zgjedhur", "SELECT_ALL": "Zgjidh të gjitha ({count})", "UNSELECT_ALL": "Hiq zgjedhjen nga të gjitha ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Pyetje të Shpeshta të lidhura", - "DESCRIPTION": "Këto Pyetje të Shpeshta janë gjeneruar direkt nga dokumenti." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Nuk është i disponueshëm", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopjo", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Futni URL-në e dokumentit për ta shtuar si burim njohurish dhe zgjidhni asistentin me të cilin do të lidhet.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Ndodhi një gabim gjatë fshirjes së dokumentit, ju lutemi provoni përsëri." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Shiko Përgjigjet e Lidhura", + "VIEW_DETAILS": "Shiko detajet", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Fshi Dokumentin" diff --git a/app/javascript/dashboard/i18n/locale/sq/onboarding.json b/app/javascript/dashboard/i18n/locale/sq/onboarding.json index ce8e5e7fc..8a1ee05c8 100644 --- a/app/javascript/dashboard/i18n/locale/sq/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/sq/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Vazhdo", + "SKIP": "Anulo", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Gati", + "HELP_CENTER": "Qendra e Ndihmës", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} kategori | {count} kategori", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Lidhu", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Zë", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Lidhu", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/sq/report.json b/app/javascript/dashboard/i18n/locale/sq/report.json index e98f1417e..1723298ca 100644 --- a/app/javascript/dashboard/i18n/locale/sq/report.json +++ b/app/javascript/dashboard/i18n/locale/sq/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/sq/sessionLimit.json b/app/javascript/dashboard/i18n/locale/sq/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/sq/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/sq/settings.json b/app/javascript/dashboard/i18n/locale/sq/settings.json index 2cdbd9bc2..5c304ca7e 100644 --- a/app/javascript/dashboard/i18n/locale/sq/settings.json +++ b/app/javascript/dashboard/i18n/locale/sq/settings.json @@ -86,9 +86,21 @@ "NOTE": "Menaxhoni veçori shtesë të sigurisë për llogarinë tuaj.", "MFA_BUTTON": "Menaxho Autentikimin me Dy Faktorë" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Tokeni i Hyrjes", "NOTE": "Ky token mund të përdoret nëse po ndërtoni një integrim bazuar në API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopjo", "RESET": "Rivendos", "CONFIRM_RESET": "A jeni i sigurt?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Të gjitha kompanitë", "CAPTAIN": "Kapiten", "CAPTAIN_ASSISTANTS": "Asistentët", + "CAPTAIN_OVERVIEW": "Përmbledhje", "CAPTAIN_DOCUMENTS": "Dokumentet", "CAPTAIN_RESPONSES": "Pyetjet e Shpeshta", "CAPTAIN_TOOLS": "Mjetet", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Njoftimet", "CANNED_RESPONSES": "Përgjigjet e Paracaktuara", "INTEGRATIONS": "Integrimet", + "DATA": "Data", "PROFILE_SETTINGS": "Cilësimet e Profilit", "ACCOUNT_SETTINGS": "Cilësimet e Llogarisë", "APPLICATIONS": "Aplikacionet", @@ -379,11 +393,124 @@ "INFO_TEXT": "Lejoni sistemin të shënojë automatikisht jashtë linje kur nuk po përdorni aplikacionin ose panelin.", "INFO_SHORT": "Shëno automatikisht jashtë linje kur nuk po përdorni aplikacionin." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Rendit sipas", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Lexo dokumentacionin", "SECURITY": "Siguria", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Procesi i Bisedës" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importo", + "EXPORT": "Eksporto" + }, + "TYPES": { + "CONTACTS": "Kontaktet", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Importo" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Së shpejti" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importo", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Krijuar", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Krijuar", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Dështuar", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Cilësimet e Captain", "DESCRIPTION": "Konfiguroni modelet dhe veçoritë AI për Captain. Captain përdor faturim bazuar në kredi, do të ngarkoheni me kredi për çdo veprim që Captain kryen bazuar në modelin e zgjedhur.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Aktivizo ose çaktivizo veçoritë me fuqi AI.", "AUDIO_TRANSCRIPTION": { "TITLE": "Transkriptimi i Audios", - "DESCRIPTION": "Konverton automatikisht mesazhet zanore dhe regjistrimet e thirrjeve në transkripte tekstuale të kërkueshme." + "DESCRIPTION": "Konverton automatikisht mesazhet zanore dhe regjistrimet e thirrjeve në transkripte tekstuale të kërkueshme.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Indeksimi i Kërkimit në Qendrën e Ndihmës", @@ -439,7 +568,18 @@ "TITLE": "Plani Aktual", "PLAN_NOTE": "Aktualisht jeni abonuar në planin **{plan}** me **{quantity}** licenca", "SEAT_COUNT": "Numri i vendeve", - "RENEWS_ON": "Rinovohet më" + "RENEWS_ON": "Rinovohet më", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Shiko Çmimet", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Bleni Kredite", "LOADING": "Duke ngarkuar opsionet...", "FETCH_ERROR": "Dështoi ngarkimi i opsioneve të kredive. Ju lutemi provoni përsëri.", + "RETRY": "Retry", "PURCHASE_ERROR": "Dështoi përpunimi i blerjes. Ju lutemi provoni përsëri.", "PURCHASE_SUCCESS": "U shtuan me sukses {credits} kredi në llogarinë tuaj", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Cakto maksimumin", "DURATION": "Biseda për agjent në çdo" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Kutirat e shtuara", "DESCRIPTION": "Shto kutira për të cilat kjo politikë do të jetë e zbatueshme.", diff --git a/app/javascript/dashboard/i18n/locale/sr/advancedFilters.json b/app/javascript/dashboard/i18n/locale/sr/advancedFilters.json index 4fd201a32..47e586c85 100644 --- a/app/javascript/dashboard/i18n/locale/sr/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/sr/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "ILI" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Jednako sa", "not_equal_to": "Nije jednako sa", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Naziv prijemnog sandučeta", "TEAM_NAME": "Naziv tima", + "CONTACT": "Kontakt", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Oznake", diff --git a/app/javascript/dashboard/i18n/locale/sr/chatlist.json b/app/javascript/dashboard/i18n/locale/sr/chatlist.json index 196992d18..adb1643e8 100644 --- a/app/javascript/dashboard/i18n/locale/sr/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/sr/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/sr/companies.json b/app/javascript/dashboard/i18n/locale/sr/companies.json index 32583aeed..af285abd4 100644 --- a/app/javascript/dashboard/i18n/locale/sr/companies.json +++ b/app/javascript/dashboard/i18n/locale/sr/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sr/contact.json b/app/javascript/dashboard/i18n/locale/sr/contact.json index 734ee43a3..89ee7f8f6 100644 --- a/app/javascript/dashboard/i18n/locale/sr/contact.json +++ b/app/javascript/dashboard/i18n/locale/sr/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Beleške", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/sr/conversation.json b/app/javascript/dashboard/i18n/locale/sr/conversation.json index c1e8dc3b5..916cbd803 100644 --- a/app/javascript/dashboard/i18n/locale/sr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sr/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Možete jedino da odgovarate na ovaj razgovor koristeći šablon poruka zbog", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24-časovno ograničenje poruka", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Odgovarate na:", "REMOVE_SELECTION": "Ukloni izbor", "DOWNLOAD": "Preuzmi", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Nije moguće pristupiti zvuku", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Prevuci i pusti za dodavanje", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Pokreni snimanje zvuka", "STOP_AUDIO_RECORDING": "Zaustavi snimanje zvuka", "COPILOT_THINKING": "Copilot razmišlja", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Izbriši", "CANCEL": "Otkaži" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Opis", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/sr/emoji.json b/app/javascript/dashboard/i18n/locale/sr/emoji.json index dbc02dbd8..bc8b80404 100644 --- a/app/javascript/dashboard/i18n/locale/sr/emoji.json +++ b/app/javascript/dashboard/i18n/locale/sr/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Ukloni" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Ukloni", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/sr/helpCenter.json b/app/javascript/dashboard/i18n/locale/sr/helpCenter.json index 698732737..6d9a57b81 100644 --- a/app/javascript/dashboard/i18n/locale/sr/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/sr/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Objavljeno", "ARCHIVED": "Arhivirano" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Izbriši", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Nije pronađena nijedna kategorija", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Izbriši" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Ime" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Dodaj novi lokal", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Pregledajte", "PUBLISH": "Objavite", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Nacrt", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Naslov" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json index b0e2bb5b3..4355556dc 100644 --- a/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sr/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Da bi ste dodali Tviter profil kao kanal, morate da autentifikujete vaš Tviter profil klikom na 'Prijavi se sa Tviterom' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID poslovnog naloga", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API ključ", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Zatvori", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Dodaj", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Prijemno sanduče", + "PHONE_NUMBER": "Broj telefona", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Nazad", + "CANCEL": "Otkaži", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/sr/index.js b/app/javascript/dashboard/i18n/locale/sr/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/sr/index.js +++ b/app/javascript/dashboard/i18n/locale/sr/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/sr/integrations.json b/app/javascript/dashboard/i18n/locale/sr/integrations.json index e6008c006..a3a46c241 100644 --- a/app/javascript/dashboard/i18n/locale/sr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sr/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Pretplaćeni događaji", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Saznaj više", + "OVERVIEW": { + "HEADER": "Pregled", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Prostor za igru", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Plaćanje", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistenti", "SWITCH_ASSISTANT": "Prebaci se između asistenata", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Opis", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopiraj", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Pogledaj detalje", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/sr/onboarding.json b/app/javascript/dashboard/i18n/locale/sr/onboarding.json index 4a9723a78..cfaf0b410 100644 --- a/app/javascript/dashboard/i18n/locale/sr/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/sr/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Poveži se", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-pošta", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Poveži se", + "BACK": "Nazad", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/sr/report.json b/app/javascript/dashboard/i18n/locale/sr/report.json index dceafe024..3fb5b4167 100644 --- a/app/javascript/dashboard/i18n/locale/sr/report.json +++ b/app/javascript/dashboard/i18n/locale/sr/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Ništa nije pronađeno" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Nedodeljen", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/sr/sessionLimit.json b/app/javascript/dashboard/i18n/locale/sr/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/sr/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/sr/settings.json b/app/javascript/dashboard/i18n/locale/sr/settings.json index 11726e5e5..63bfcc392 100644 --- a/app/javascript/dashboard/i18n/locale/sr/settings.json +++ b/app/javascript/dashboard/i18n/locale/sr/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token za pristup", "NOTE": "Ovaj token se može koristiti ako izgrađujete integraciju zasnovanu na API-ju", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopiraj", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Pregled", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Obaveštenja", "CANNED_RESPONSES": "Gotovi odgovori", "INTEGRATIONS": "Integracije", + "DATA": "Data", "PROFILE_SETTINGS": "Podešavanja profila", "ACCOUNT_SETTINGS": "Podešavanja naloga", "APPLICATIONS": "Aplikacije", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sortirajte prema", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Pročitaj dokumentaciju", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Uvoz", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kontakti", + "CONVERSATIONS": "Razgovori", + "MESSAGES": "Poruke" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Otkaži", + "IMPORT": "Uvoz" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Uvoz", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Ime", + "TYPE": "Tip", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Kreirano", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Kreirano", + "DURATION": "Trajanje", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Sve", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Poruka" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Osveži", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Završeno", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Trenutni plan", "PLAN_NOTE": "Trenutno ste pretplaćeni na **{plan}** plan sa **{quantity}** licenci", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/sv/advancedFilters.json b/app/javascript/dashboard/i18n/locale/sv/advancedFilters.json index 048ee26a3..d2e162e2c 100644 --- a/app/javascript/dashboard/i18n/locale/sv/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/sv/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Etiketter", diff --git a/app/javascript/dashboard/i18n/locale/sv/chatlist.json b/app/javascript/dashboard/i18n/locale/sv/chatlist.json index 7f4140ea7..86d059ad5 100644 --- a/app/javascript/dashboard/i18n/locale/sv/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/sv/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/sv/companies.json b/app/javascript/dashboard/i18n/locale/sv/companies.json index e6debadad..b6960bdd4 100644 --- a/app/javascript/dashboard/i18n/locale/sv/companies.json +++ b/app/javascript/dashboard/i18n/locale/sv/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sv/contact.json b/app/javascript/dashboard/i18n/locale/sv/contact.json index 0479bb741..3dd0d68a1 100644 --- a/app/javascript/dashboard/i18n/locale/sv/contact.json +++ b/app/javascript/dashboard/i18n/locale/sv/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/sv/conversation.json b/app/javascript/dashboard/i18n/locale/sv/conversation.json index 479b23707..4bd2fdba0 100644 --- a/app/javascript/dashboard/i18n/locale/sv/conversation.json +++ b/app/javascript/dashboard/i18n/locale/sv/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Du kan bara svara på denna konversation med ett mallmeddelande på grund av", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 timmars meddelandebegränsning", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Du svarar:", "REMOVE_SELECTION": "Ta bort urval", "DOWNLOAD": "Hämta", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Kunde inte öppna ljudet", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Dra och släpp hit för att bifoga", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Starta ljudinspelning", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Copilot tänker", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Radera", "CANCEL": "Avbryt" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Beskrivning", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Visa alla", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/sv/emoji.json b/app/javascript/dashboard/i18n/locale/sv/emoji.json index c60f1c424..9e52fa573 100644 --- a/app/javascript/dashboard/i18n/locale/sv/emoji.json +++ b/app/javascript/dashboard/i18n/locale/sv/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Sök emoji", "NOT_FOUND": "Ingen emoji matchar din sökning", "REMOVE": "Radera" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Ingen emoji matchar din sökning", + "NO_ICON": "No icons match your search", + "REMOVE": "Radera", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/sv/helpCenter.json b/app/javascript/dashboard/i18n/locale/sv/helpCenter.json index cd66d0342..4a5bd81f0 100644 --- a/app/javascript/dashboard/i18n/locale/sv/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/sv/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Radera", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Radera" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Namn" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Okategoriserade", diff --git a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json index c14066d02..7750b2e39 100644 --- a/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/sv/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "För att lägga till din Twitter-profil som en kanal måste du autentisera din Twitter-profil genom att klicka på \"Logga in med Twitter\" ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Stäng", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inkorg", + "PHONE_NUMBER": "Telefonnummer", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Tillbaka", + "CANCEL": "Avbryt", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/sv/index.js b/app/javascript/dashboard/i18n/locale/sv/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/sv/index.js +++ b/app/javascript/dashboard/i18n/locale/sv/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/sv/integrations.json b/app/javascript/dashboard/i18n/locale/sv/integrations.json index e3043a81f..8db2c28aa 100644 --- a/app/javascript/dashboard/i18n/locale/sv/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sv/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Läs mer", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Testmiljö", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Assistenter", "SWITCH_ASSISTANT": "Växla mellan assistenter", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Beskrivning", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopiera", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/sv/onboarding.json b/app/javascript/dashboard/i18n/locale/sv/onboarding.json index 023c31848..d061bd155 100644 --- a/app/javascript/dashboard/i18n/locale/sv/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/sv/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Anslut", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-post", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Visa alla", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Anslut", + "BACK": "Tillbaka", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/sv/report.json b/app/javascript/dashboard/i18n/locale/sv/report.json index 62ae2d04f..0cf0a4c52 100644 --- a/app/javascript/dashboard/i18n/locale/sv/report.json +++ b/app/javascript/dashboard/i18n/locale/sv/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Inga resultat hittades" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Otilldelade", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/sv/sessionLimit.json b/app/javascript/dashboard/i18n/locale/sv/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/sv/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/sv/settings.json b/app/javascript/dashboard/i18n/locale/sv/settings.json index 8ac8bdce3..728d109df 100644 --- a/app/javascript/dashboard/i18n/locale/sv/settings.json +++ b/app/javascript/dashboard/i18n/locale/sv/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Åtkomsttoken", "NOTE": "Denna token kan användas om du bygger en API-baserad integration", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopiera", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Aviseringar", "CANNED_RESPONSES": "Svarsmallar", "INTEGRATIONS": "Integrationer", + "DATA": "Data", "PROFILE_SETTINGS": "Profilinställningar", "ACCOUNT_SETTINGS": "Kontoinställningar", "APPLICATIONS": "Applikationer", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Importera", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Kontakter", + "CONVERSATIONS": "Konversationer", + "MESSAGES": "Meddelanden" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Avbryt", + "IMPORT": "Importera" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Importera", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Namn", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Alla", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Meddelande" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/ta/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ta/advancedFilters.json index 8ff15fa38..99458a4bb 100644 --- a/app/javascript/dashboard/i18n/locale/ta/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ta/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/ta/chatlist.json b/app/javascript/dashboard/i18n/locale/ta/chatlist.json index 7e20f0629..499ecfaae 100644 --- a/app/javascript/dashboard/i18n/locale/ta/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ta/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ta/companies.json b/app/javascript/dashboard/i18n/locale/ta/companies.json index d703a50c8..6c97c19a4 100644 --- a/app/javascript/dashboard/i18n/locale/ta/companies.json +++ b/app/javascript/dashboard/i18n/locale/ta/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ta/contact.json b/app/javascript/dashboard/i18n/locale/ta/contact.json index 2521f0c04..0f1c36105 100644 --- a/app/javascript/dashboard/i18n/locale/ta/contact.json +++ b/app/javascript/dashboard/i18n/locale/ta/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ta/conversation.json b/app/javascript/dashboard/i18n/locale/ta/conversation.json index 43c7937d0..edae36209 100644 --- a/app/javascript/dashboard/i18n/locale/ta/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ta/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "You are replying to:", "REMOVE_SELECTION": "Remove Selection", "DOWNLOAD": "பதிவிறக்கம்", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "கோபைலட் யோசிக்கிறது", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "ரத்துசெய்" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ta/emoji.json b/app/javascript/dashboard/i18n/locale/ta/emoji.json index 2869c27f2..43e7c344a 100644 --- a/app/javascript/dashboard/i18n/locale/ta/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ta/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "நீக்கு" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "நீக்கு", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ta/helpCenter.json b/app/javascript/dashboard/i18n/locale/ta/helpCenter.json index 91537b04c..2428b8ad0 100644 --- a/app/javascript/dashboard/i18n/locale/ta/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ta/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Delete" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "பெயர்" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json index c3fcf92ef..e9da9fb82 100644 --- a/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ta/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram-க்கு இணைக்கும்போது பிழை ஏற்பட்டது, தயவுசெய்து மீண்டும் முயற்சிக்கவும்", "ERROR_AUTH": "Instagram-க்கு இணைக்கும்போது பிழை ஏற்பட்டது, தயவுசெய்து மீண்டும் முயற்சிக்கவும்", "NEW_INBOX_SUGGESTION": "இந்த Instagram கணக்கு முந்தையதாக வேறு இன்பாக்ஸுடன் இணைக்கப்பட்டிருந்தது மற்றும் இப்போது இங்கே மாற்றப்பட்டுள்ளது. அனைத்து புதிய செய்திகள் இங்கே தோன்றும். பழைய இன்பாக்ஸ் இந்த கணக்குக்கான செய்திகள் அனுப்பவோ பெறவோ முடியாது.", - "DUPLICATE_INBOX_BANNER": "இந்த Instagram கணக்கு புதிய Instagram சேனல் இன்பாக்ஸுக்கு மாற்றப்பட்டுள்ளது. இ இன்பாக்ஸில் இருந்து இன்ஸ்டாகிராம் செய்திகள் அனுப்பவோ பெறவோ முடியாது." + "DUPLICATE_INBOX_BANNER": "இந்த Instagram கணக்கு புதிய Instagram சேனல் இன்பாக்ஸுக்கு மாற்றப்பட்டுள்ளது. இ இன்பாக்ஸில் இருந்து இன்ஸ்டாகிராம் செய்திகள் அனுப்பவோ பெறவோ முடியாது.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "உங்கள் ட்விட்டர் சுயவிவரத்தை ஒரு சேனலாக சேர்க்க, 'ட்விட்டருடன் உள்நுழைக' என்பதைக் கிளிக் செய்யாவும், இதன் மூலம் உங்கள் சுயவிவரத்தை ட்விட்டர் வாயிலாக அங்கீகரிக்கிறீர்கள் ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "வணிக கணக்கு ஐடி", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API விசை", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "மூடு", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "தொலைபேசி எண்", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "ரத்துசெய்", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ta/index.js b/app/javascript/dashboard/i18n/locale/ta/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ta/index.js +++ b/app/javascript/dashboard/i18n/locale/ta/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ta/integrations.json b/app/javascript/dashboard/i18n/locale/ta/integrations.json index 33909fe59..f108e40de 100644 --- a/app/javascript/dashboard/i18n/locale/ta/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ta/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "சந்தா எடுத்த நிகழ்வுகள்", "LEARN_MORE": "வெப்ஹுக்குகள் பற்றி மேலும் அறிக", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "ரகசியம்", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "கேப்டன்", "HEADER_KNOW_MORE": "மேலும் அறியவும்", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "நிலுவையில் உள்ள அடிக்கடி கேட்கப்படும் கேள்விகள்", + "DOCUMENTS": "ஆவணங்கள்" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "விளையாட்டு மைதானம்", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "உதவியாளர்கள்", "SWITCH_ASSISTANT": "உதவியாளர்களுக்கு இடையே மாறவும்", @@ -494,10 +577,6 @@ "PLACEHOLDER": "உதவியாளர் பெயரை உள்ளிடவும்", "ERROR": "பெயர் அவசியம்" }, - "TEMPERATURE": { - "LABEL": "பதில் வெப்பநிலை", - "DESCRIPTION": "உதவியாளரின் பதில்கள் எவ்வளவு படைப்பாற்றல் அல்லது கட்டுப்படுத்தப்பட்டதாக இருக்க வேண்டும் என்பதை சரிசெய்க. குறைந்த மதிப்புகள் அதிக கவனம் செலுத்திய மற்றும் தீர்மானமான பதில்களை உருவாக்கும், அதிக மதிப்புகள் அதிக படைப்பாற்றல் மற்றும் மாறுபட்ட வெளியீடுகளை அனுமதிக்கும்." - }, "DESCRIPTION": { "LABEL": "விளக்கம்", "PLACEHOLDER": "உதவியாளர் விளக்கத்தை உள்ளிடவும்", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "ஆவணங்கள்", "ADD_NEW": "புதிய ஆவணத்தை உருவாக்கவும்", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} தேர்ந்தெடுக்கப்பட்டது", "SELECT_ALL": "அனைத்தையும் தேர்ந்தெடு ({count})", "UNSELECT_ALL": "அனைத்தையும் தேர்விலிருந்து நீக்கு ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "சம்பந்தப்பட்ட அடிக்கடி கேட்கப்படும் கேள்விகள்", - "DESCRIPTION": "இந்த அடிக்கடி கேட்கப்படும் கேள்விகள் நேரடியாக ஆவணத்திலிருந்து உருவாக்கப்பட்டவை." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "நகல்", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "அறிவுத்தளமாக சேர்க்க ஆவணத்தின் URL ஐ உள்ளிடவும் மற்றும் அதை தொடர்புபடுத்த வேண்டிய உதவியாளரை தேர்ந்தெடுக்கவும்.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "ஆவணத்தை நீக்குவதில் பிழை ஏற்பட்டது, தயவுசெய்து மீண்டும் முயற்சிக்கவும்." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "சம்பந்தப்பட்ட பதில்களைப் பார்க்கவும்", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "ஆவணத்தை நீக்கு" diff --git a/app/javascript/dashboard/i18n/locale/ta/onboarding.json b/app/javascript/dashboard/i18n/locale/ta/onboarding.json index 2a1adcc8a..4230ae90a 100644 --- a/app/javascript/dashboard/i18n/locale/ta/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ta/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "உதவி மையம்", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "இணைக்கவும்", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "இமெயில்", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "இணைக்கவும்", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ta/report.json b/app/javascript/dashboard/i18n/locale/ta/report.json index a7d86ac01..ed5fe76d1 100644 --- a/app/javascript/dashboard/i18n/locale/ta/report.json +++ b/app/javascript/dashboard/i18n/locale/ta/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "ஒதுக்கப்படாதது", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ta/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ta/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ta/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ta/settings.json b/app/javascript/dashboard/i18n/locale/ta/settings.json index 9fb190e01..51c2b4fd6 100644 --- a/app/javascript/dashboard/i18n/locale/ta/settings.json +++ b/app/javascript/dashboard/i18n/locale/ta/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "அணுகுவதற்கான டோக்கன்", "NOTE": "நீங்கள் API அடிப்படையிலான ஒருங்கிணைப்பை உருவாக்கினால் இந்த டோக்கனைப் பயன்படுத்தலாம்", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "நகல்", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifications", "CANNED_RESPONSES": "பதிவு செய்யப்பட்ட பதில்கள்", "INTEGRATIONS": "சேர்ப்புகள்", + "DATA": "Data", "PROFILE_SETTINGS": "சுயவிவர அமைப்புகள்", "ACCOUNT_SETTINGS": "கணக்கின் அமைப்புகள்", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Contacts", + "CONVERSATIONS": "உரையாடல்கள்", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "ரத்துசெய்", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "பெயர்", + "TYPE": "Type", + "STATUS": "நிலை", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "எல்லாம்", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/th/advancedFilters.json b/app/javascript/dashboard/i18n/locale/th/advancedFilters.json index 343dbe560..59fac9c11 100644 --- a/app/javascript/dashboard/i18n/locale/th/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/th/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "หรือ" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "เท่ากับ", "not_equal_to": "ไม่เท่ากับ", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "ชื่อทีม", + "CONTACT": "ผู้ติดต่อ", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "ป้ายกำกับ", diff --git a/app/javascript/dashboard/i18n/locale/th/chatlist.json b/app/javascript/dashboard/i18n/locale/th/chatlist.json index 9cce5d633..f1d8f0bc9 100644 --- a/app/javascript/dashboard/i18n/locale/th/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/th/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/th/companies.json b/app/javascript/dashboard/i18n/locale/th/companies.json index 7231c2f93..3cca2fc71 100644 --- a/app/javascript/dashboard/i18n/locale/th/companies.json +++ b/app/javascript/dashboard/i18n/locale/th/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/th/contact.json b/app/javascript/dashboard/i18n/locale/th/contact.json index da9b4d480..f27deee64 100644 --- a/app/javascript/dashboard/i18n/locale/th/contact.json +++ b/app/javascript/dashboard/i18n/locale/th/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "โน้ต", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/th/conversation.json b/app/javascript/dashboard/i18n/locale/th/conversation.json index e0bb4d12e..26459894c 100644 --- a/app/javascript/dashboard/i18n/locale/th/conversation.json +++ b/app/javascript/dashboard/i18n/locale/th/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "คุณสามารถตอบกลับการสนทนานี้ได้โดยใช้รูปแบบข้อความที่กำหนดเท่านั้น", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "การจำกัดหน้าต่างข้อความ 24 ชั่วโมง", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "คุณกำลังตอบกลับ:", "REMOVE_SELECTION": "ลบตัวเลือก", "DOWNLOAD": "ดาวโหลด", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "ไม่สามารถเปิดการใช้งานเสียงได้", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "ลากเเละปล่อยที่นี่เพื่อเพิ่ม", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "เริ่มบันทึกเสียง", "STOP_AUDIO_RECORDING": "หยุดบันทึกเสียง", "COPILOT_THINKING": "Copilot กำลังคิด", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "ลบ", "CANCEL": "ยกเลิก" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "คำอธิบาย", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/th/emoji.json b/app/javascript/dashboard/i18n/locale/th/emoji.json index f9204a276..c1733147b 100644 --- a/app/javascript/dashboard/i18n/locale/th/emoji.json +++ b/app/javascript/dashboard/i18n/locale/th/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "ลบรูปภาพ" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "ลบรูปภาพ", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/th/helpCenter.json b/app/javascript/dashboard/i18n/locale/th/helpCenter.json index 2a30dd993..53ae676db 100644 --- a/app/javascript/dashboard/i18n/locale/th/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/th/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "ลบ", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "ลบ" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "ชื่อ" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "โครงร่าง", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "หัวข้อ" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json index 89660ba78..3b7df0509 100644 --- a/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/th/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "ในการเพิ่มโปรไฟล์ Twitter ของคุณเป็นช่องคุณต้องตรวจสอบสิทธิ์โปรไฟล์ Twitter ของคุณโดยคลิกที่ \"ลงชื่อเข้าใช้ด้วย Twitter\" ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "ปิด", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "เพิ่ม", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "กล่องข้อความ", + "PHONE_NUMBER": "หมายเลขโทรศัพท์", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "ย้อนกลับ", + "CANCEL": "ยกเลิก", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/th/index.js b/app/javascript/dashboard/i18n/locale/th/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/th/index.js +++ b/app/javascript/dashboard/i18n/locale/th/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/th/integrations.json b/app/javascript/dashboard/i18n/locale/th/integrations.json index ef4dd7a8c..3fbb72dbd 100644 --- a/app/javascript/dashboard/i18n/locale/th/integrations.json +++ b/app/javascript/dashboard/i18n/locale/th/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "เหตุการณ์ที่ติดตามอยู่", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "รู้เพิ่มเติม", + "OVERVIEW": { + "HEADER": "ภาพรวม", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "สนามทดสอบ", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "ผู้ช่วย", "SWITCH_ASSISTANT": "สลับระหว่างผู้ช่วย", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "คำอธิบาย", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "คัดลอก", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "ดูรายละเอียด", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/th/onboarding.json b/app/javascript/dashboard/i18n/locale/th/onboarding.json index 66aea76dc..805a8d1d8 100644 --- a/app/javascript/dashboard/i18n/locale/th/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/th/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "เชื่อมต่อ", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "อีเมล์", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "เชื่อมต่อ", + "BACK": "ย้อนกลับ", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/th/report.json b/app/javascript/dashboard/i18n/locale/th/report.json index 6e8cea9c7..3f3cd6cda 100644 --- a/app/javascript/dashboard/i18n/locale/th/report.json +++ b/app/javascript/dashboard/i18n/locale/th/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "ไม่ได้รับมอบหมาย", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/th/sessionLimit.json b/app/javascript/dashboard/i18n/locale/th/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/th/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/th/settings.json b/app/javascript/dashboard/i18n/locale/th/settings.json index 317e42587..ca696501d 100644 --- a/app/javascript/dashboard/i18n/locale/th/settings.json +++ b/app/javascript/dashboard/i18n/locale/th/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Access Token", "NOTE": "คุณสามารถใช้ token นี้เชื่อมต่อกับ API ได้", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "คัดลอก", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "ภาพรวม", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "การแจ้งเตือน", "CANNED_RESPONSES": "คำตอบสำเร็จรูป", "INTEGRATIONS": "การเชื่อมต่อกับระบบ", + "DATA": "Data", "PROFILE_SETTINGS": "ตั้งค่าข้อมูลส่วนตัว", "ACCOUNT_SETTINGS": "ตั้งค่าบัญชี", "APPLICATIONS": "โปรแกรม", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "เรียงด้วย", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "นำเข้า", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "ผู้ติดต่อ", + "CONVERSATIONS": "การสนทนา", + "MESSAGES": "ข้อความทั้งหมด" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "ยกเลิก", + "IMPORT": "นำเข้า" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "นำเข้า", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "ชื่อ", + "TYPE": "ประเภท", + "STATUS": "สถานะ", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "ทั้งหมด", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "ข้อความ" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "โหลดใหม่", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "เสร็จสิ้น", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/tl/advancedFilters.json b/app/javascript/dashboard/i18n/locale/tl/advancedFilters.json index a991cb25b..a3df18903 100644 --- a/app/javascript/dashboard/i18n/locale/tl/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/tl/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Maghanap ng mga kontak", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Kontak", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/tl/chatlist.json b/app/javascript/dashboard/i18n/locale/tl/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/tl/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/tl/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/tl/companies.json b/app/javascript/dashboard/i18n/locale/tl/companies.json index 8b0568ce7..f165ea048 100644 --- a/app/javascript/dashboard/i18n/locale/tl/companies.json +++ b/app/javascript/dashboard/i18n/locale/tl/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/tl/contact.json b/app/javascript/dashboard/i18n/locale/tl/contact.json index 398a1e751..3e21c442a 100644 --- a/app/javascript/dashboard/i18n/locale/tl/contact.json +++ b/app/javascript/dashboard/i18n/locale/tl/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Mga Katangian", "HISTORY": "Kasaysayan", "NOTES": "Mga Tala", + "MEDIA": "Media", "MERGE": "Pagsamahin" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/tl/conversation.json b/app/javascript/dashboard/i18n/locale/tl/conversation.json index b8dd7852f..148d1bc4b 100644 --- a/app/javascript/dashboard/i18n/locale/tl/conversation.json +++ b/app/javascript/dashboard/i18n/locale/tl/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Sumasagot ka kay:", "REMOVE_SELECTION": "Alisin ang Pinili", "DOWNLOAD": "I-download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Matagumpay na na-upload ang larawan", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "Iniisip ng Copilot", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Tingnan lahat", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/tl/emoji.json b/app/javascript/dashboard/i18n/locale/tl/emoji.json index d5b96f0f9..3e84c7820 100644 --- a/app/javascript/dashboard/i18n/locale/tl/emoji.json +++ b/app/javascript/dashboard/i18n/locale/tl/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Alisin", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/tl/helpCenter.json b/app/javascript/dashboard/i18n/locale/tl/helpCenter.json index 744e14c70..0f97f59e4 100644 --- a/app/javascript/dashboard/i18n/locale/tl/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/tl/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Nailathala", "ARCHIVED": "Na-archive" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Walang Kategorya" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Lahat ng wika" }, + "SEARCH_PLACEHOLDER": "Maghanap ng mga artikulo...", "NEW_ARTICLE": "Bagong artikulo" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Walang artikulo sa kategoryang ito", "SUBTITLE": "Lalabas dito ang mga artikulo sa kategoryang ito" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Bagong kategorya", "EDIT_CATEGORY": "I-edit ang kategorya", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} kategorya | {n} mga kategorya", "BREADCRUMB": { "CATEGORY_LOCALE": "Mga kategorya ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Walang nahanap na mga kategorya", "SUBTITLE": "Lalabas dito ang mga kategorya. Maaari kang magdagdag ng kategorya sa pamamagitan ng pag-click sa 'Bagong Kategorya' na button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} artikulo | {count} mga artikulo" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "Walang magagamit na locale | {n} locale | {n} mga locale", "NEW_LOCALE_BUTTON_TEXT": "Bagong locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} artikulo | {count} mga artikulo", "CATEGORIES_COUNT": "{count} kategorya | {count} mga kategorya", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Gawing default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Tanggalin" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Hindi naka-kategorya" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Pamagat ng pahina" + }, + "HEADER_TEXT": { + "LABEL": "Teksto ng header" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Magdagdag ng bagong wika", "DESCRIPTION": "Piliin ang wikang gagamitin sa artikulong ito. Idadagdag ito sa iyong listahan ng mga pagsasalin, at maaari kang magdagdag pa mamaya.", @@ -730,10 +791,30 @@ }, "PREVIEW": "I-preview", "PUBLISH": "I-publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Burador", "ARCHIVE": "I-archive", "BACK_TO_ARTICLES": "Bumalik sa mga artikulo" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "Higit pang mga katangian", "UNCATEGORIZED": "Walang kategorya", diff --git a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json index 8cb35d098..c0d75f2f7 100644 --- a/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tl/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Nagkaroon ng error sa pagkonekta sa Instagram, pakisubukang muli", "ERROR_AUTH": "Nagkaroon ng error sa pagkonekta sa Instagram, pakisubukang muli", "NEW_INBOX_SUGGESTION": "Ang Instagram account na ito ay dating naka-link sa ibang inbox at ngayon ay nailipat dito. Lahat ng bagong mensahe ay lalabas dito. Ang lumang inbox ay hindi na makakapagpadala o makatanggap ng mga mensahe para sa account na ito.", - "DUPLICATE_INBOX_BANNER": "Ang Instagram account na ito ay nailipat sa bagong Instagram channel inbox. Hindi ka na makakapagpadala o makatanggap ng mga mensahe sa Instagram mula sa inbox na ito." + "DUPLICATE_INBOX_BANNER": "Ang Instagram account na ito ay nailipat sa bagong Instagram channel inbox. Hindi ka na makakapagpadala o makatanggap ng mga mensahe sa Instagram mula sa inbox na ito.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Magpatuloy gamit ang TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Ikonekta ang iyong TikTok Profile", "HELP": "Upang maidagdag ang iyong TikTok profile bilang channel, kailangan mong i-authenticate ang iyong TikTok Profile sa pamamagitan ng pag-click sa 'Magpatuloy gamit ang TikTok' ", "ERROR_MESSAGE": "Nagkaroon ng error sa pagkonekta sa TikTok, pakisubukang muli", - "ERROR_AUTH": "Nagkaroon ng error sa pagkonekta sa TikTok, pakisubukang muli" + "ERROR_AUTH": "Nagkaroon ng error sa pagkonekta sa TikTok, pakisubukang muli", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Para idagdag ang iyong Twitter profile bilang channel, kailangan mong i-authenticate ang iyong Twitter Profile sa pamamagitan ng pag-click sa 'Sign in with Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "Ang inbox na ito ay nakakonekta sa pamamagitan ng WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "Maaari mong i-reconfigure ang inbox na ito upang i-update ang iyong mga setting sa WhatsApp Business.", "WHATSAPP_RECONFIGURE_BUTTON": "I-reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Ikonekta sa WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Mag-upgrade sa WhatsApp embedded signup para sa mas madaling pamamahala.", "WHATSAPP_CONNECT_DESCRIPTION": "Ikonekta ang inbox na ito sa WhatsApp Business para sa mas pinahusay na mga tampok at mas madaling pamamahala.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manu-manong i-sync ang mga message template mula sa WhatsApp upang i-update ang iyong mga available na template.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "I-sync ang Mga Template", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Matagumpay na sinimulan ang pag-sync ng mga template. Maaaring tumagal ng ilang minuto bago ma-update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Isara", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Ipakitang numero ng telepono", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Numero ng Telepono", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Magpatuloy", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/tl/index.js b/app/javascript/dashboard/i18n/locale/tl/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/tl/index.js +++ b/app/javascript/dashboard/i18n/locale/tl/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/tl/integrations.json b/app/javascript/dashboard/i18n/locale/tl/integrations.json index 1306dd923..6b7a8d7c0 100644 --- a/app/javascript/dashboard/i18n/locale/tl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/tl/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Mga Nakalistang Kaganapan", "LEARN_MORE": "Alamin pa tungkol sa webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Lihim", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Alamin pa", + "OVERVIEW": { + "HEADER": "Pangkalahatan", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Mga nakabinbing karaniwang tanong", + "DOCUMENTS": "Mga Dokumento" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Palaruan", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Pagsingil", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Mga Katulong", "SWITCH_ASSISTANT": "Lumipat sa pagitan ng mga assistant", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Ilagay ang pangalan ng assistant", "ERROR": "Kinakailangan ang pangalan" }, - "TEMPERATURE": { - "LABEL": "Temperatura ng Tugon", - "DESCRIPTION": "Ayusin kung gaano ka-malikhain o mahigpit ang mga sagot ng assistant. Ang mas mababang halaga ay nagreresulta sa mas nakatuon at deterministic na mga sagot, habang ang mas mataas ay nagpapahintulot ng mas malikhain at iba't ibang output." - }, "DESCRIPTION": { "LABEL": "Paglalarawan", "PLACEHOLDER": "Ilagay ang paglalarawan ng assistant", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Mga Dokumento", "ADD_NEW": "Gumawa ng bagong dokumento", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} napili", "SELECT_ALL": "Piliin lahat ({count})", "UNSELECT_ALL": "Alisin ang pagpili sa lahat ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Mga Kaugnay na FAQ", - "DESCRIPTION": "Ang mga FAQ na ito ay direktang ginawa mula sa dokumento." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopyahin", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Ilagay ang URL ng dokumento upang idagdag ito bilang pinagkukunan ng kaalaman at piliin ang assistant na iuugnay dito.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Nagkaroon ng error sa pagtanggal ng dokumento, pakisubukang muli." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "Tingnan ang mga Kaugnay na Tugon", + "VIEW_DETAILS": "Tingnan ang mga detalye", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Tanggalin ang Dokumento" diff --git a/app/javascript/dashboard/i18n/locale/tl/onboarding.json b/app/javascript/dashboard/i18n/locale/tl/onboarding.json index 224550caf..35d79f8da 100644 --- a/app/javascript/dashboard/i18n/locale/tl/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/tl/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Magpatuloy", + "SKIP": "Laktawan", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Handa na", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} kategorya | {count} mga kategorya", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Ikonekta", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Boses", + "VIEW_ALL": "Tingnan lahat", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Ikonekta", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/tl/report.json b/app/javascript/dashboard/i18n/locale/tl/report.json index ed1a1c700..df4739020 100644 --- a/app/javascript/dashboard/i18n/locale/tl/report.json +++ b/app/javascript/dashboard/i18n/locale/tl/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Tanggalin ang filter", "EMPTY_LIST": "Walang nahanap na resulta" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Hindi Itinalaga", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Ipinapakita ang {start} hanggang {end} ng {total} resulta", "PER_PAGE_TEMPLATE": "{size} / pahina" diff --git a/app/javascript/dashboard/i18n/locale/tl/sessionLimit.json b/app/javascript/dashboard/i18n/locale/tl/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/tl/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/tl/settings.json b/app/javascript/dashboard/i18n/locale/tl/settings.json index b02567c3f..1588226cf 100644 --- a/app/javascript/dashboard/i18n/locale/tl/settings.json +++ b/app/javascript/dashboard/i18n/locale/tl/settings.json @@ -86,9 +86,21 @@ "NOTE": "Pamahalaan ang karagdagang mga tampok sa seguridad para sa iyong account.", "MFA_BUTTON": "Pamahalaan ang Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token ng access", "NOTE": "Magagamit ang token na ito kung gumagawa ka ng API based na integrasyon", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopyahin", "RESET": "I-reset", "CONFIRM_RESET": "Sigurado ka ba?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Lahat ng Kumpanya", "CAPTAIN": "Kapitan", "CAPTAIN_ASSISTANTS": "Mga Katulong", + "CAPTAIN_OVERVIEW": "Pangkalahatan", "CAPTAIN_DOCUMENTS": "Mga Dokumento", "CAPTAIN_RESPONSES": "Mga Madalas Itanong", "CAPTAIN_TOOLS": "Mga Kasangkapan", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Mga Abiso", "CANNED_RESPONSES": "Mga Nakahandang Sagot", "INTEGRATIONS": "Mga Integrasyon", + "DATA": "Data", "PROFILE_SETTINGS": "Mga Setting ng Profile", "ACCOUNT_SETTINGS": "Mga Setting ng Account", "APPLICATIONS": "Mga Aplikasyon", @@ -379,11 +393,124 @@ "INFO_TEXT": "Hayaan ang sistema na awtomatikong itakda kang offline kapag hindi mo ginagamit ang app o dashboard.", "INFO_SHORT": "Awtomatikong markahan bilang offline kapag hindi mo ginagamit ang app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Ayusin ayon sa", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Basahin ang mga dokumento", "SECURITY": "Seguridad", "CAPTAIN_AI": "Kapitan", "CONVERSATION_WORKFLOW": "Daloy ng Usapan" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "I-import", + "EXPORT": "I-export" + }, + "TYPES": { + "CONTACTS": "Mga Kontak", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Mga Mensahe" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "I-import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Malapit nang ilabas" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "I-import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Nilikha", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Nilikha", + "DURATION": "Tagal", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Nabigo", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Mga Setting ng Kapitan", "DESCRIPTION": "I-configure ang iyong mga AI na modelo at mga tampok para sa Kapitan. Ang Kapitan ay sumusunod sa credit-based na pagsingil, sisingilin ka ng mga credit para sa bawat aksyon na ginagawa ng Kapitan batay sa napiling modelo.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Paganahin o huwag paganahin ang mga tampok na pinapagana ng AI.", "AUDIO_TRANSCRIPTION": { "TITLE": "Transkripsiyon ng Audio", - "DESCRIPTION": "Awtomatikong i-convert ang mga voice message at recording ng tawag sa mga tekstong transcript na maaaring hanapin." + "DESCRIPTION": "Awtomatikong i-convert ang mga voice message at recording ng tawag sa mga tekstong transcript na maaaring hanapin.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Pag-index ng Paghahanap sa Help Center", @@ -439,7 +568,18 @@ "TITLE": "Kasalukuyang Plano", "PLAN_NOTE": "Kasulukuyan kang naka-subscribe sa planong **{plan}** na may **{quantity}** lisensya", "SEAT_COUNT": "Bilang ng mga upuan", - "RENEWS_ON": "Magre-renew sa" + "RENEWS_ON": "Magre-renew sa", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "Tingnan ang Presyo", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Bumili ng Kredito", "LOADING": "Naglo-load ng mga opsyon...", "FETCH_ERROR": "Nabigong i-load ang mga opsyon ng kredito. Pakisubukang muli.", + "RETRY": "Retry", "PURCHASE_ERROR": "Nabigong iproseso ang pagbili. Pakisubukang muli.", "PURCHASE_SUCCESS": "Matagumpay na naidagdag ang {credits} kredito sa iyong account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Italaga ang max", "DURATION": "Mga pag-uusap bawat ahente sa bawat" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Idinagdag na mga inbox", "DESCRIPTION": "Magdagdag ng mga inbox kung saan magiging applicable ang patakarang ito.", diff --git a/app/javascript/dashboard/i18n/locale/tr/advancedFilters.json b/app/javascript/dashboard/i18n/locale/tr/advancedFilters.json index 36d24d788..540f9e170 100644 --- a/app/javascript/dashboard/i18n/locale/tr/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/tr/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "YA DA" }, "INPUT_PLACEHOLDER": "Filtre verisini giriniz", + "CONTACT_SEARCH_PLACEHOLDER": "Kişileri Ara", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Eşit", "not_equal_to": "Eşit Değil", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Atanan Kişi Adı", "INBOX_NAME": "Gelen Kutusu Adı", "TEAM_NAME": "Ekip Adı", + "CONTACT": "İletişim", "CONVERSATION_IDENTIFIER": "Sohbet Kimliği", "CAMPAIGN_NAME": "Kampanya Adı", "LABELS": "Etiketler", diff --git a/app/javascript/dashboard/i18n/locale/tr/chatlist.json b/app/javascript/dashboard/i18n/locale/tr/chatlist.json index 98f794510..62cc87d86 100644 --- a/app/javascript/dashboard/i18n/locale/tr/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/tr/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/tr/companies.json b/app/javascript/dashboard/i18n/locale/tr/companies.json index acc35a355..ea15f3a7e 100644 --- a/app/javascript/dashboard/i18n/locale/tr/companies.json +++ b/app/javascript/dashboard/i18n/locale/tr/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/tr/contact.json b/app/javascript/dashboard/i18n/locale/tr/contact.json index 481e09958..54bc4060b 100644 --- a/app/javascript/dashboard/i18n/locale/tr/contact.json +++ b/app/javascript/dashboard/i18n/locale/tr/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Öznitelikler", "HISTORY": "Geçmiş", "NOTES": "Notlar", + "MEDIA": "Medya", "MERGE": "Birleştir" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/tr/conversation.json b/app/javascript/dashboard/i18n/locale/tr/conversation.json index 9ed15c840..32f553137 100644 --- a/app/javascript/dashboard/i18n/locale/tr/conversation.json +++ b/app/javascript/dashboard/i18n/locale/tr/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Bu konuşmaya yalnızca şablon mesaj kullanarak yanıt verebilirsiniz, çünkü", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 saat mesaj penceresi kısıtlaması", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Bu Instagram hesabı, yeni Instagram kanal gelen kutusuna taşındı. Tüm yeni mesajlar orada görünecektir. Artık bu konuşmadan mesaj gönderemeyeceksiniz.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Cevap veriyorsun:", "REMOVE_SELECTION": "Seçimi Kaldır", "DOWNLOAD": "İndir", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Mikrofon açılamadı", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Eklemek için buraya sürükleyip bırakın", + "IMAGE_UPLOAD_SUCCESS": "Resim başarıyla yüklendi", "START_AUDIO_RECORDING": "Ses kaydına başla", "STOP_AUDIO_RECORDING": "Ses kaydını durdur", "COPILOT_THINKING": "Copilot düşünüyor", @@ -303,6 +306,25 @@ "MESSAGE": "Bu eylemi geri alamazsınız", "DELETE": "Sil", "CANCEL": "İptal Et" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Açıklama", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Tümünü Görüntüle", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/tr/emoji.json b/app/javascript/dashboard/i18n/locale/tr/emoji.json index 532b29d71..c4bc53cf1 100644 --- a/app/javascript/dashboard/i18n/locale/tr/emoji.json +++ b/app/javascript/dashboard/i18n/locale/tr/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Emoji ara", "NOT_FOUND": "Aramanızla eşleşen emoji yok", "REMOVE": "Kaldır" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Aramanızla eşleşen emoji yok", + "NO_ICON": "No icons match your search", + "REMOVE": "Kaldır", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/tr/helpCenter.json b/app/javascript/dashboard/i18n/locale/tr/helpCenter.json index d962faee8..92557732d 100644 --- a/app/javascript/dashboard/i18n/locale/tr/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/tr/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Yayınlandı", "ARCHIVED": "Arşivlendi" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Kategorilendirilmemiş" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "Tüm Diller" }, + "SEARCH_PLACEHOLDER": "Makaleleri Ara...", "NEW_ARTICLE": "Yeni Makale" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "Bu kategoride makale bulunmamaktadır", "SUBTITLE": "Bu kategorideki makaleler burada görünecektir" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Sil", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Yeni kategori", "EDIT_CATEGORY": "Kategori düzenle", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} kategori | {n} kategori", "BREADCRUMB": { "CATEGORY_LOCALE": "Kategoriler ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Hiç kategori bulunamadı", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} makale | {count} makale" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "Yeni Dil", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} makale | {count} makale", "CATEGORIES_COUNT": "{count} kategori | {count} kategori", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Sil" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Ara...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Kategorize Edilmemiş" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "İsim" + }, + "PAGE_TITLE": { + "LABEL": "Sayfa Başlığı" + }, + "HEADER_TEXT": { + "LABEL": "Başlık Metni" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Yeni bir dil ekleyin", "DESCRIPTION": "Bu makalenin yazılacağı dili seçin. Seçilen dil çeviri listenize eklenecek ve daha sonra yeni diller ekleyebilirsiniz.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Önizleme", "PUBLISH": "Yayınla", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Taslak", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Makalelere geri dön" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Başlık" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Kategorize Edilmemiş", diff --git a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json index b22148386..aee3c4ebb 100644 --- a/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/tr/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram'a bağlanırken bir hata oluştu, lütfen tekrar deneyin", "ERROR_AUTH": "Instagram'a bağlanırken bir hata oluştu, lütfen tekrar deneyin", "NEW_INBOX_SUGGESTION": "Bu Instagram hesabı daha önce farklı bir gelen kutusuna bağlıydı ve şimdi buraya taşındı. Tüm yeni mesajlar burada görünecektir. Eski gelen kutusu, bu hesap için artık mesaj gönderemeyecek veya alamayacaktır.", - "DUPLICATE_INBOX_BANNER": "Bu Instagram hesabı yeni Instagram kanal gelen kutusuna taşındı. Artık bu gelen kutusundan Instagram mesajı gönderip alamayacaksınız." + "DUPLICATE_INBOX_BANNER": "Bu Instagram hesabı yeni Instagram kanal gelen kutusuna taşındı. Artık bu gelen kutusundan Instagram mesajı gönderip alamayacaksınız.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Twitter profilinizi bir kanal olarak eklemek için, 'Twitter ile Giriş Yap'ı tıklayarak Twitter Profilinizi doğrulamanız gerekir.", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "Bu gelen kutusu, WhatsApp embedded signup yoluyla bağlandı.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "WhatsApp Business ayarlarınızı güncellemek için bu gelen kutusunu yeniden yapılandırabilirsiniz.", "WHATSAPP_RECONFIGURE_BUTTON": "Yeniden yapılandır", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "İş Hesabı Kimliği", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Anahtarı", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "WhatsApp Business'a Bağlan", "WHATSAPP_CONNECT_SUBHEADER": "Daha kolay yönetim için WhatsApp gömülü kayda (embedded signup) yükseltin.", "WHATSAPP_CONNECT_DESCRIPTION": "Gelişmiş özellikler ve daha kolay yönetim için bu gelen kutusunu WhatsApp Business'a bağlayın.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "WhatsApp'tan mesaj şablonlarını manuel olarak senkronize ederek mevcut şablonlarınızı güncelleyin.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Şablonları Senkronize Et", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Şablon senkronizasyonu başarıyla başlatıldı. Güncellenmesi birkaç dakika sürebilir.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Kapat", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Telefon numarasını göster", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Ekle", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Gelen Kutusu", + "PHONE_NUMBER": "Telefon numarası", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Geri", + "CANCEL": "İptal Et", + "CONTINUE": "Devam et", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/tr/index.js b/app/javascript/dashboard/i18n/locale/tr/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/tr/index.js +++ b/app/javascript/dashboard/i18n/locale/tr/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/tr/integrations.json b/app/javascript/dashboard/i18n/locale/tr/integrations.json index 483bf0ae4..56eb0f834 100644 --- a/app/javascript/dashboard/i18n/locale/tr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/tr/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Abone Olunan Olaylar", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Şimdi yükselt", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Daha fazla bilgi edinin", + "OVERVIEW": { + "HEADER": "Önizleme", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Kapat" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Kapat" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Belgeler" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Oyun Alanı", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Fatura", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Asistanlar", "SWITCH_ASSISTANT": "Asistanlar arasında geçiş yap", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Asistan adını girin", "ERROR": "Ad gereklidir" }, - "TEMPERATURE": { - "LABEL": "Yanıt Sıcaklığı", - "DESCRIPTION": "Asistanın yanıtlarının ne kadar yaratıcı veya kısıtlayıcı olması gerektiğini ayarlayın. Düşük değerler daha odaklı ve deterministik yanıtlar üretir, yüksek değerler ise daha yaratıcı ve çeşitli yanıtlar sağlar." - }, "DESCRIPTION": { "LABEL": "Açıklama", "PLACEHOLDER": "Asistan açıklamasını girin", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Belgeler", "ADD_NEW": "Yeni belge oluştur", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Tümünü seç ({count})", "UNSELECT_ALL": "Tümünü kaldır ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "İlgili SSS", - "DESCRIPTION": "Bu SSS'ler doğrudan belgeden oluşturulmuştur." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Şu anda müsait değil", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Kopyala", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Bilgi kaynağı olarak eklemek için belgenin URL'sini girin ve ilişkilendirmek istediğiniz asistanı seçin.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "Belgeyi silerken bir hata oluştu, lütfen tekrar deneyin." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "İlgili Yanıtları Görüntüle", + "VIEW_DETAILS": "Detayları Göster", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Belgeyi Sil" diff --git a/app/javascript/dashboard/i18n/locale/tr/onboarding.json b/app/javascript/dashboard/i18n/locale/tr/onboarding.json index f71900d38..59b840473 100644 --- a/app/javascript/dashboard/i18n/locale/tr/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/tr/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Devam et", + "SKIP": "Skip", + "ERROR": "Bir şeyler yanlış gitti. Lütfen tekrar deneyin.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Hazır", + "HELP_CENTER": "Yardım Merkezi", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} kategori | {count} kategori", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Bağlan", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "E-Posta", + "MORE_CHANNELS_VOICE": "Ses", + "VIEW_ALL": "Tümünü Görüntüle", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Bağlan", + "BACK": "Geri", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/tr/report.json b/app/javascript/dashboard/i18n/locale/tr/report.json index cdb0a23da..1ad107a54 100644 --- a/app/javascript/dashboard/i18n/locale/tr/report.json +++ b/app/javascript/dashboard/i18n/locale/tr/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Kayıt bulunamadı" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Atanmamış", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/tr/sessionLimit.json b/app/javascript/dashboard/i18n/locale/tr/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/tr/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/tr/settings.json b/app/javascript/dashboard/i18n/locale/tr/settings.json index 0be0322e9..1d00f16f8 100644 --- a/app/javascript/dashboard/i18n/locale/tr/settings.json +++ b/app/javascript/dashboard/i18n/locale/tr/settings.json @@ -86,9 +86,21 @@ "NOTE": "Hesabınız için ek güvenlik özelliklerini yönetin.", "MFA_BUTTON": "İki Faktörlü Kimlik Doğrulamayı Yönet" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Erişim Jetonu", "NOTE": "Bu simge, API tabanlı bir entegrasyon oluşturuyorsanız kullanılabilir", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Kopyala", "RESET": "Reset", "CONFIRM_RESET": "Emin misiniz?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "Tüm Şirketler", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Önizleme", "CAPTAIN_DOCUMENTS": "Belgeler", "CAPTAIN_RESPONSES": "SSS", "CAPTAIN_TOOLS": "Araçlar", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Bildirimler", "CANNED_RESPONSES": "Hazır Yanıtlar", "INTEGRATIONS": "Entegrasyonlar", + "DATA": "Data", "PROFILE_SETTINGS": "Profil ayarları", "ACCOUNT_SETTINGS": "Hesap ayarları", "APPLICATIONS": "Uygulamalar", @@ -379,11 +393,124 @@ "INFO_TEXT": "Uygulamayı veya kontrol panelini kullanmadığınızda sistemin sizi otomatik olarak çevrimdışı olarak işaretlemesine izin verin.", "INFO_SHORT": "Uygulamayı kullanmadığınızda otomatik olarak çevrimdışı olarak işaretleyin." }, + "SORT_TOOLTIP": "Filtre", + "SORT_BY": "Sırala", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Dokümantasyonu oku", "SECURITY": "Güvenlik", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Konuşma Akışı" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "İçe Aktar", + "EXPORT": "Dışa Aktar" + }, + "TYPES": { + "CONTACTS": "Kişiler", + "CONVERSATIONS": "Konuşmalar", + "MESSAGES": "Mesajlar" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "İptal Et", + "IMPORT": "İçe Aktar" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Çok yakında" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "İçe Aktar", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "İsim", + "TYPE": "Tip", + "STATUS": "Durum", + "IMPORTED": "Imported", + "CREATED": "Oluşturuldu", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Oluşturuldu", + "DURATION": "Süre", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Hepsi", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Mesaj" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Yenile", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Tamamlandı", + "completed_with_errors": "Completed with errors", + "failed": "Başarısız", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Mevcut Plan", "PLAN_NOTE": "Şu anda **{plan}** planına **{quantity}** lisans abonesisiniz", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Tekrar dene", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/uk/advancedFilters.json b/app/javascript/dashboard/i18n/locale/uk/advancedFilters.json index ef24a87a8..cb07207cd 100644 --- a/app/javascript/dashboard/i18n/locale/uk/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/uk/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "АБО" }, "INPUT_PLACEHOLDER": "Введіть значення", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Дорівнює", "not_equal_to": "Не дорівнює", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Ім'я виконавця", "INBOX_NAME": "Назва Джерела", "TEAM_NAME": "Назва команди", + "CONTACT": "Контакт", "CONVERSATION_IDENTIFIER": "Номер діалогу", "CAMPAIGN_NAME": "Назва Кампанії", "LABELS": "Мітки", diff --git a/app/javascript/dashboard/i18n/locale/uk/chatlist.json b/app/javascript/dashboard/i18n/locale/uk/chatlist.json index e7dfc9ac0..d318b7c88 100644 --- a/app/javascript/dashboard/i18n/locale/uk/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/uk/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/uk/companies.json b/app/javascript/dashboard/i18n/locale/uk/companies.json index 4ef761f2e..080b8681d 100644 --- a/app/javascript/dashboard/i18n/locale/uk/companies.json +++ b/app/javascript/dashboard/i18n/locale/uk/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/uk/contact.json b/app/javascript/dashboard/i18n/locale/uk/contact.json index 6b3e14fce..bf61548b2 100644 --- a/app/javascript/dashboard/i18n/locale/uk/contact.json +++ b/app/javascript/dashboard/i18n/locale/uk/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Атрибути", "HISTORY": "History", "NOTES": "Нотатки", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/uk/conversation.json b/app/javascript/dashboard/i18n/locale/uk/conversation.json index d73463852..e853a057d 100644 --- a/app/javascript/dashboard/i18n/locale/uk/conversation.json +++ b/app/javascript/dashboard/i18n/locale/uk/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Ви можете відповісти на цю розмову тільки за допомогою шаблонного повідомлення через", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24-годинне обмеження на повідомлення", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Ви відповідаєте:", "REMOVE_SELECTION": "Видалити вибране", "DOWNLOAD": "Звантажити", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Не вдалося відкрити аудіо", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Перетягніть сюди, щоб прикріпити", + "IMAGE_UPLOAD_SUCCESS": "Зображення успішно завантажено", "START_AUDIO_RECORDING": "Почати аудіозапис", "STOP_AUDIO_RECORDING": "Зупинити аудіозапис", "COPILOT_THINKING": "Copilot думає", @@ -303,6 +306,25 @@ "MESSAGE": "Ви не зможете скасувати цю дію", "DELETE": "Видалити", "CANCEL": "Скасувати" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Опис", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "Переглянути все", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/uk/emoji.json b/app/javascript/dashboard/i18n/locale/uk/emoji.json index 672a59acb..9bb67e727 100644 --- a/app/javascript/dashboard/i18n/locale/uk/emoji.json +++ b/app/javascript/dashboard/i18n/locale/uk/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Пошук смайлів", "NOT_FOUND": "Немає смайликів, які відповідають вашому запиту", "REMOVE": "Видалити" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Немає смайликів, які відповідають вашому запиту", + "NO_ICON": "No icons match your search", + "REMOVE": "Видалити", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/uk/helpCenter.json b/app/javascript/dashboard/i18n/locale/uk/helpCenter.json index afdaf5429..8c8a412f5 100644 --- a/app/javascript/dashboard/i18n/locale/uk/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/uk/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Опубліковано", "ARCHIVED": "Архівовано" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Пошук статей...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Видалити", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Нова категорія", "EDIT_CATEGORY": "Редагувати категорію", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Категорій не знайдено", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Видалити" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Без категорії" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Ім'я" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Додати нову локаль", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Попередній перегляд", "PUBLISH": "Опублікувати", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Чернетка", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Назва" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Без категорії", diff --git a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json index 7744f4086..6efce75f6 100644 --- a/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/uk/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Продовжити в TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Приєднайте ваш профіль TikTok", "HELP": "Щоб додати ваш профіль TikTok як канал потрібно аутентифікувати його клацнувши 'Продовжити в TikTok' ", "ERROR_MESSAGE": "При спробі під'єднатися до TikTok виникла помилка, будь ласка, спробуйте пізніше", - "ERROR_AUTH": "При спробі під'єднатися до TikTok виникла помилка, будь ласка, спробуйте пізніше" + "ERROR_AUTH": "При спробі під'єднатися до TikTok виникла помилка, будь ласка, спробуйте пізніше", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Щоб додати свій профіль у Twitter як канал, вам потрібно авторизувати свій профіль у Twitter, натиснувши кнопку \"Увійти через Twitter\" ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Ідентифікатор бізнес-акаунту", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API ключ", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Закрити", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Додати", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Вхідні", + "PHONE_NUMBER": "Номер телефону", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Назад", + "CANCEL": "Скасувати", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/uk/index.js b/app/javascript/dashboard/i18n/locale/uk/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/uk/index.js +++ b/app/javascript/dashboard/i18n/locale/uk/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/uk/integrations.json b/app/javascript/dashboard/i18n/locale/uk/integrations.json index 47dbe3596..c692a89e4 100644 --- a/app/javascript/dashboard/i18n/locale/uk/integrations.json +++ b/app/javascript/dashboard/i18n/locale/uk/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Події з підпискою", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Оновити зараз", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Дізнатися більше", + "OVERVIEW": { + "HEADER": "Огляд", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Відхилити" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Відхилити" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Тестова зона", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Біллінг", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Асистенти", "SWITCH_ASSISTANT": "Перемикання між асистентами", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Опис", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Недоступно", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Копіювати", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Докладніше", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/uk/onboarding.json b/app/javascript/dashboard/i18n/locale/uk/onboarding.json index 721458489..7583e4158 100644 --- a/app/javascript/dashboard/i18n/locale/uk/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/uk/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Щось пішло не так. Будь ласка, оновіть сторінку.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Довідковий центр", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Підключитися", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "Переглянути все", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Підключитися", + "BACK": "Назад", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/uk/report.json b/app/javascript/dashboard/i18n/locale/uk/report.json index 3431096b8..9e158002c 100644 --- a/app/javascript/dashboard/i18n/locale/uk/report.json +++ b/app/javascript/dashboard/i18n/locale/uk/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Очистити фільтр", "EMPTY_LIST": "Результатів не знайдено" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Непризначені", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/uk/sessionLimit.json b/app/javascript/dashboard/i18n/locale/uk/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uk/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uk/settings.json b/app/javascript/dashboard/i18n/locale/uk/settings.json index 5fa9d166e..6cab78515 100644 --- a/app/javascript/dashboard/i18n/locale/uk/settings.json +++ b/app/javascript/dashboard/i18n/locale/uk/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Ключ доступу", "NOTE": "Цей ключ можна використовувати, якщо ви створюєте API-інтеграцію", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Копіювати", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Огляд", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Сповіщення", "CANNED_RESPONSES": "Швидкі відповіді", "INTEGRATIONS": "Інтеграції", + "DATA": "Data", "PROFILE_SETTINGS": "Налаштування облікового запису", "ACCOUNT_SETTINGS": "Налаштування акаунту", "APPLICATIONS": "Додатки", @@ -379,11 +393,124 @@ "INFO_TEXT": "Дозволити системі автоматично позначати як не в мережі коли ви не використовуєте програму або панель управління.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Сортувати", + "SORT_BY": "Сортувати за", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Читати документи", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Імпорт", + "EXPORT": "Експорт" + }, + "TYPES": { + "CONTACTS": "Контакти", + "CONVERSATIONS": "Бесіди", + "MESSAGES": "Текст повідомлень" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Скасувати", + "IMPORT": "Імпорт" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Імпорт", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Ім'я", + "TYPE": "Тип", + "STATUS": "Статус", + "IMPORTED": "Imported", + "CREATED": "Створено", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Створено", + "DURATION": "Тривалість", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Всі", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Текст повідомлення" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Оновити", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Завершено", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Поточний План", "PLAN_NOTE": "Зараз ви підписані на **{plan}** план з **{quantity}** ліцензій", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/ur/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ur/advancedFilters.json index 05bacccad..7b8b71522 100644 --- a/app/javascript/dashboard/i18n/locale/ur/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ur/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/ur/chatlist.json b/app/javascript/dashboard/i18n/locale/ur/chatlist.json index 027e18c6b..132e87c42 100644 --- a/app/javascript/dashboard/i18n/locale/ur/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ur/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ur/companies.json b/app/javascript/dashboard/i18n/locale/ur/companies.json index 9b22d3ea1..6750cf748 100644 --- a/app/javascript/dashboard/i18n/locale/ur/companies.json +++ b/app/javascript/dashboard/i18n/locale/ur/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ur/contact.json b/app/javascript/dashboard/i18n/locale/ur/contact.json index 332eb01a4..73ac2664e 100644 --- a/app/javascript/dashboard/i18n/locale/ur/contact.json +++ b/app/javascript/dashboard/i18n/locale/ur/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "نوٹس", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ur/conversation.json b/app/javascript/dashboard/i18n/locale/ur/conversation.json index 4be843ba0..31659fe2c 100644 --- a/app/javascript/dashboard/i18n/locale/ur/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ur/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "آپ اس بات چیت کا جواب صرف ایک ٹیمپلیٹ پیغام کا استعمال کرتے ہوئے دے سکتے ہیں, کيونکہ‎", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 گھنٹے میسج ونڈو کی پابندی", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "آپ جواب دے رہے ہیں:", "REMOVE_SELECTION": "انتخاب کو ہٹا دیں۔", "DOWNLOAD": "ڈاؤن لوڈ کریں", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "کوپائلٹ سوچ رہا ہے", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "حذف کریں۔", "CANCEL": "منسوخ کریں۔" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ur/emoji.json b/app/javascript/dashboard/i18n/locale/ur/emoji.json index d5b96f0f9..f5572d569 100644 --- a/app/javascript/dashboard/i18n/locale/ur/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ur/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Remove", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ur/helpCenter.json b/app/javascript/dashboard/i18n/locale/ur/helpCenter.json index 529f4983f..9307ca77a 100644 --- a/app/javascript/dashboard/i18n/locale/ur/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ur/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Published", "ARCHIVED": "Archived" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "حذف کریں۔", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "New category", "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "No categories found", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "حذف کریں۔" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "نام" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Add a new locale", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Preview", "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Draft", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Uncategorized", diff --git a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json index 592705323..53ebca69c 100644 --- a/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ur/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "To add your Twitter profile as a channel, you need to authenticate your Twitter Profile by clicking on 'Sign in with Twitter' ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Close", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "شامل کریں۔", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "ان باکس", + "PHONE_NUMBER": "فون نمبر", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "منسوخ کریں۔", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ur/index.js b/app/javascript/dashboard/i18n/locale/ur/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ur/index.js +++ b/app/javascript/dashboard/i18n/locale/ur/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ur/integrations.json b/app/javascript/dashboard/i18n/locale/ur/integrations.json index 00294e4e7..6c433a8b6 100644 --- a/app/javascript/dashboard/i18n/locale/ur/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ur/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Subscribed Events", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "مزید جانیں", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "پلے گراؤنڈ", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "اسسٹنٹس", "SWITCH_ASSISTANT": "اسسٹنٹس کے درمیان سوئچ کریں", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Description", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copy", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "تفصیلات دیکھیں", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/ur/onboarding.json b/app/javascript/dashboard/i18n/locale/ur/onboarding.json index d7c960002..51d511091 100644 --- a/app/javascript/dashboard/i18n/locale/ur/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ur/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connect", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connect", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ur/report.json b/app/javascript/dashboard/i18n/locale/ur/report.json index a19661e1d..2b8853297 100644 --- a/app/javascript/dashboard/i18n/locale/ur/report.json +++ b/app/javascript/dashboard/i18n/locale/ur/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "کوئی نتیجہ نہیں" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "نا مقرر کیا ہوا", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ur/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ur/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ur/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ur/settings.json b/app/javascript/dashboard/i18n/locale/ur/settings.json index 52e44cc3d..de22bc15a 100644 --- a/app/javascript/dashboard/i18n/locale/ur/settings.json +++ b/app/javascript/dashboard/i18n/locale/ur/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Access Token", "NOTE": "This token can be used if you are building an API based integration", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Copy", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Notifications", "CANNED_RESPONSES": "محفوظ کردہ جوابات", "INTEGRATIONS": "Integrations", + "DATA": "Data", "PROFILE_SETTINGS": "Profile Settings", "ACCOUNT_SETTINGS": "Account Settings", "APPLICATIONS": "Applications", @@ -379,11 +393,124 @@ "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Read docs", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "درآمد کریں۔", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "کانٹیکٹس", + "CONVERSATIONS": "مکالمات", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "منسوخ کریں۔", + "IMPORT": "درآمد کریں۔" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "درآمد کریں۔", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "نام", + "TYPE": "Type", + "STATUS": "اسٹیٹس", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "تمام", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Current Plan", "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/advancedFilters.json b/app/javascript/dashboard/i18n/locale/ur_IN/advancedFilters.json index a991cb25b..89143c62a 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "OR" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Equal to", "not_equal_to": "Not equal to", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Assignee name", "INBOX_NAME": "Inbox name", "TEAM_NAME": "Team name", + "CONTACT": "Contact", "CONVERSATION_IDENTIFIER": "Conversation identifier", "CAMPAIGN_NAME": "Campaign name", "LABELS": "Labels", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/chatlist.json b/app/javascript/dashboard/i18n/locale/ur_IN/chatlist.json index 1384dae2b..45755892d 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/companies.json b/app/javascript/dashboard/i18n/locale/ur_IN/companies.json index fcdc25a1c..874087498 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/companies.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/contact.json b/app/javascript/dashboard/i18n/locale/ur_IN/contact.json index a45e3518d..7237c2cd8 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/contact.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Notes", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json b/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json index 740d1aedb..fba7657d7 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "You are replying to:", "REMOVE_SELECTION": "Remove Selection", "DOWNLOAD": "Download", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Could not open the audio", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "تصویر کامیابی سے اپ لوڈ ہو گئی", "START_AUDIO_RECORDING": "Start audio recording", "STOP_AUDIO_RECORDING": "Stop audio recording", "COPILOT_THINKING": "کوپائلٹ سوچ رہا ہے", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Delete", "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/emoji.json b/app/javascript/dashboard/i18n/locale/ur_IN/emoji.json index d5b96f0f9..3da4d0b59 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/emoji.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "ہٹائیں", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/helpCenter.json b/app/javascript/dashboard/i18n/locale/ur_IN/helpCenter.json index 9f1c8c03d..058413c58 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "شائع شدہ", "ARCHIVED": "محفوظ شدہ" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "بغیر زمرہ" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "تمام مقامات" }, + "SEARCH_PLACEHOLDER": "مضامین تلاش کریں...", "NEW_ARTICLE": "نیا مضمون" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "اس زمرے میں کوئی مضمون نہیں ہے", "SUBTITLE": "اس زمرے کے مضامین یہاں ظاہر ہوں گے" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Delete", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "نئی قسم", "EDIT_CATEGORY": "قسم میں ترمیم کریں", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} قسم | {n} قسمیں", "BREADCRUMB": { "CATEGORY_LOCALE": "اقسام ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "کوئی زمرہ نہیں ملا", "SUBTITLE": "زمرے یہاں ظاہر ہوں گے۔ آپ 'نیا زمرہ' بٹن پر کلک کر کے زمرہ شامل کر سکتے ہیں۔." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} مضمون | {count} مضامین" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "کوئی لوکیل دستیاب نہیں | {n} لوکیل | {n} لوکیلز", "NEW_LOCALE_BUTTON_TEXT": "نیا لوکیل", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} مضمون | {count} مضامین", "CATEGORIES_COUNT": "{count} زمرہ | {count} زمرے", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "ڈیفالٹ بنائیں", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "حذف کریں" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "بغیر زمرہ" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "صفحہ کا عنوان" + }, + "HEADER_TEXT": { + "LABEL": "ہیڈر متن" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "نئی زبان شامل کریں", "DESCRIPTION": "اس زبان کا انتخاب کریں جس میں یہ مضمون لکھا جائے گا۔ یہ آپ کی ترجمہ کی فہرست میں شامل ہو جائے گا، اور آپ بعد میں مزید شامل کر سکتے ہیں۔.", @@ -730,10 +791,30 @@ }, "PREVIEW": "پیش نظارہ", "PUBLISH": "شائع کریں", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "مسودہ", "ARCHIVE": "محفوظ کریں", "BACK_TO_ARTICLES": "مضامین پر واپس جائیں" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "مزید خصوصیات", "UNCATEGORIZED": "بغیر زمرہ", diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json index a6f9ead24..20ac6decf 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "Instagram سے کنکشن میں خرابی ہوئی، براہ کرم دوبارہ کوشش کریں", "ERROR_AUTH": "Instagram سے کنکشن میں خرابی ہوئی، براہ کرم دوبارہ کوشش کریں", "NEW_INBOX_SUGGESTION": "یہ Instagram اکاؤنٹ پہلے ایک مختلف ان باکس سے منسلک تھا اور اب یہاں منتقل کر دیا گیا ہے۔ تمام نئے پیغامات یہاں ظاہر ہوں گے۔ پرانا ان باکس اس اکاؤنٹ کے لیے پیغامات بھیجنے یا وصول کرنے کے قابل نہیں رہے گا۔", - "DUPLICATE_INBOX_BANNER": "یہ Instagram اکاؤنٹ نئے Instagram چینل ان باکس میں منتقل کیا گیا ہے۔ آپ اس ان باکس سے Instagram پیغامات بھیجنے/وصول کرنے کے قابل نہیں ہوں گے۔" + "DUPLICATE_INBOX_BANNER": "یہ Instagram اکاؤنٹ نئے Instagram چینل ان باکس میں منتقل کیا گیا ہے۔ آپ اس ان باکس سے Instagram پیغامات بھیجنے/وصول کرنے کے قابل نہیں ہوں گے۔", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "TikTok کے ساتھ جاری رکھیں", "CONNECT_YOUR_TIKTOK_PROFILE": "اپنی TikTok پروفائل کو جوڑیں", "HELP": "اپنی TikTok پروفائل کو چینل کے طور پر شامل کرنے کے لیے، آپ کو 'TikTok کے ساتھ جاری رکھیں' پر کلک کر کے اپنی TikTok پروفائل کی تصدیق کرنی ہوگی۔ ", "ERROR_MESSAGE": "TikTok سے کنکشن میں خرابی ہوئی، براہ کرم دوبارہ کوشش کریں", - "ERROR_AUTH": "TikTok سے کنکشن میں خرابی ہوئی، براہ کرم دوبارہ کوشش کریں" + "ERROR_AUTH": "TikTok سے کنکشن میں خرابی ہوئی، براہ کرم دوبارہ کوشش کریں", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "اپنے ٹویٹر پروفائل کو چینل کے طور پر شامل کرنے کے لیے، آپ کو 'Sign in with Twitter' پر کلک کرکے اپنے ٹویٹر پروفائل کی تصدیق کرنی ہوگی۔ ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "یہ ان باکس واٹس ایپ Embedded Signup کے ذریعے منسلک ہے۔", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "آپ اپنے واٹس ایپ بزنس کی ترتیبات کو اپ ڈیٹ کرنے کے لیے اس ان باکس کو دوبارہ ترتیب دے سکتے ہیں۔", "WHATSAPP_RECONFIGURE_BUTTON": "دوبارہ ترتیب دیں", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "بزنس اکاؤنٹ آئی ڈی", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API کلید", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "واٹس ایپ بزنس سے کنیکٹ کریں", "WHATSAPP_CONNECT_SUBHEADER": "آسان انتظام کے لیے واٹس ایپ Embedded Signup میں اپ گریڈ کریں۔", "WHATSAPP_CONNECT_DESCRIPTION": "بہتر خصوصیات اور آسان انتظام کے لیے اس ان باکس کو واٹس ایپ بزنس سے کنیکٹ کریں۔", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "اپنے دستیاب ٹیمپلیٹس کو اپ ڈیٹ کرنے کے لیے واٹس ایپ سے میسج ٹیمپلیٹس کو دستی طور پر ہم آہنگ کریں۔", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "ٹیمپلیٹس کو ہم آہنگ کریں", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "ٹیمپلیٹس کی ہم آہنگی کامیابی سے شروع ہو گئی ہے۔ اپ ڈیٹ ہونے میں چند منٹ لگ سکتے ہیں۔", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Close", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "فون نمبر دکھائیں", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Phone number", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "جاری رکھیں", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/index.js b/app/javascript/dashboard/i18n/locale/ur_IN/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/index.js +++ b/app/javascript/dashboard/i18n/locale/ur_IN/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json index 2b1e36338..b5594ca5b 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "سبسکرائب شدہ واقعات", "LEARN_MORE": "ویب ہکس کے بارے میں مزید جانیں", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "کپٹن", "HEADER_KNOW_MORE": "مزید جانیں", + "OVERVIEW": { + "HEADER": "جائزہ", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "دستاویزات" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "پلے گراؤنڈ", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "بلنگ", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "اسسٹنٹس", "SWITCH_ASSISTANT": "اسسٹنٹس کے درمیان سوئچ کریں", @@ -494,10 +577,6 @@ "PLACEHOLDER": "اسسٹنٹ کا نام درج کریں", "ERROR": "نام ضروری ہے" }, - "TEMPERATURE": { - "LABEL": "جواب کا درجہ حرارت", - "DESCRIPTION": "اسسٹنٹ کے جوابات کتنے تخلیقی یا محدود ہونے چاہئیں، اسے ایڈجسٹ کریں۔ کم قیمتیں زیادہ مرکوز اور متعین جوابات دیتی ہیں، جبکہ زیادہ قیمتیں زیادہ تخلیقی اور متنوع نتائج کی اجازت دیتی ہیں۔" - }, "DESCRIPTION": { "LABEL": "تفصیل", "PLACEHOLDER": "اسسٹنٹ کی تفصیل درج کریں", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "دستاویزات", "ADD_NEW": "نئی دستاویز بنائیں", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} منتخب شدہ", "SELECT_ALL": "تمام منتخب کریں ({count})", "UNSELECT_ALL": "تمام غیر منتخب کریں ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "متعلقہ FAQs", - "DESCRIPTION": "یہ FAQs براہ راست دستاویز سے تیار کیے گئے ہیں۔" + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "کاپی کریں", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "دستاویز کا URL درج کریں تاکہ اسے معلوماتی ماخذ کے طور پر شامل کیا جا سکے اور اس سے منسلک اسسٹنٹ منتخب کریں۔", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "دستاویز کو حذف کرنے میں خرابی ہوئی، براہ کرم دوبارہ کوشش کریں۔" }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "متعلقہ جوابات دیکھیں", + "VIEW_DETAILS": "View details", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "دستاویز حذف کریں" diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/onboarding.json b/app/javascript/dashboard/i18n/locale/ur_IN/onboarding.json index 74776644e..b677cc877 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "جاری رکھیں", + "SKIP": "چھوڑ دیں", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "تیار", + "HELP_CENTER": "مدد مرکز", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} زمرہ | {count} زمرے", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "جوڑیں", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "وائس", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "جوڑیں", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/report.json b/app/javascript/dashboard/i18n/locale/ur_IN/report.json index 45c40de58..846c181a2 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/report.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "No results found" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/sessionLimit.json b/app/javascript/dashboard/i18n/locale/ur_IN/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/ur_IN/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/settings.json b/app/javascript/dashboard/i18n/locale/ur_IN/settings.json index c218b7d37..2041205cb 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/settings.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/settings.json @@ -86,9 +86,21 @@ "NOTE": "اپنے اکاؤنٹ کے لیے اضافی سیکیورٹی فیچرز کا انتظام کریں۔.", "MFA_BUTTON": "دوہری تصدیق کا انتظام کریں" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "رسائی ٹوکن", "NOTE": "اگر آپ API پر مبنی انٹیگریشن بنا رہے ہیں تو یہ ٹوکن استعمال کیا جا سکتا ہے", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "کاپی کریں", "RESET": "ری سیٹ کریں", "CONFIRM_RESET": "کیا آپ یقین ہیں؟", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "تمام کمپنیاں", "CAPTAIN": "کپتان", "CAPTAIN_ASSISTANTS": "اسسٹنٹس", + "CAPTAIN_OVERVIEW": "جائزہ", "CAPTAIN_DOCUMENTS": "دستاویزات", "CAPTAIN_RESPONSES": "اکثر پوچھے جانے والے سوالات", "CAPTAIN_TOOLS": "ٹولز", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "اطلاعات", "CANNED_RESPONSES": "تیار شدہ جوابات", "INTEGRATIONS": "انٹیگریشنز", + "DATA": "Data", "PROFILE_SETTINGS": "پروفائل کی ترتیبات", "ACCOUNT_SETTINGS": "اکاؤنٹ کی ترتیبات", "APPLICATIONS": "درخواستیں", @@ -379,11 +393,124 @@ "INFO_TEXT": "جب آپ ایپ یا ڈیش بورڈ استعمال نہیں کر رہے ہوں تو سسٹم خود بخود آپ کو آف لائن نشان زد کرے گا۔.", "INFO_SHORT": "جب آپ ایپ استعمال نہیں کر رہے ہوں تو خود بخود آپ کو آف لائن نشان زد کریں۔." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "ترتیب دیں", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "دستاویزات پڑھیں", "SECURITY": "سیکیورٹی", "CAPTAIN_AI": "کپتان", "CONVERSATION_WORKFLOW": "گفتگو کا ورک فلو" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "رابطے", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "جلد آ رہا ہے" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Message" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "ناکام", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "کپتان کی ترتیبات", "DESCRIPTION": "Captain کے لیے اپنے AI ماڈلز اور فیچرز کو ترتیب دیں۔ Captain کریڈٹ پر مبنی بلنگ پر عمل کرتا ہے، آپ کو منتخب کردہ ماڈل کی بنیاد پر ہر ایکشن کے لیے کریڈٹس چارج کیے جائیں گے۔.", @@ -414,7 +541,9 @@ "DESCRIPTION": "AI سے چلنے والے فیچرز کو فعال یا غیر فعال کریں۔.", "AUDIO_TRANSCRIPTION": { "TITLE": "آڈیو ٹرانسکرپشن", - "DESCRIPTION": "وائس میسجز اور کال ریکارڈنگز کو خود بخود قابل تلاش متن میں تبدیل کریں۔." + "DESCRIPTION": "وائس میسجز اور کال ریکارڈنگز کو خود بخود قابل تلاش متن میں تبدیل کریں۔.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "ہیلپ سینٹر سرچ انڈیکسنگ", @@ -439,7 +568,18 @@ "TITLE": "موجودہ منصوبہ", "PLAN_NOTE": "آپ اس وقت **{plan}** پلان کے ساتھ **{quantity}** لائسنس کے سبسکرائب ہیں", "SEAT_COUNT": "سیٹوں کی تعداد", - "RENEWS_ON": "دوبارہ تجدید کی تاریخ" + "RENEWS_ON": "دوبارہ تجدید کی تاریخ", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "قیمت دیکھیں", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "کریڈٹس خریدیں", "LOADING": "آپشنز لوڈ ہو رہے ہیں...", "FETCH_ERROR": "کریڈٹ آپشنز لوڈ کرنے میں ناکامی۔ براہ کرم دوبارہ کوشش کریں۔.", + "RETRY": "Retry", "PURCHASE_ERROR": "خریداری کے عمل میں ناکامی۔ براہ کرم دوبارہ کوشش کریں۔.", "PURCHASE_SUCCESS": "آپ کے اکاؤنٹ میں کامیابی سے {credits} کریڈٹس شامل کر دیے گئے ہیں", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "زیادہ سے زیادہ تفویض کریں", "DURATION": "ہر میں فی ایجنٹ گفتگو" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "شامل شدہ ان باکسز", "DESCRIPTION": "ان انباکسز کو شامل کریں جن کے لیے یہ پالیسی قابلِ اطلاق ہوگی۔.", diff --git a/app/javascript/dashboard/i18n/locale/uz/advancedFilters.json b/app/javascript/dashboard/i18n/locale/uz/advancedFilters.json new file mode 100644 index 000000000..89143c62a --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/advancedFilters.json @@ -0,0 +1,122 @@ +{ + "FILTER": { + "TITLE": "Filter conversations", + "SUBTITLE": "Add your filters below and hit 'Apply filters' to cut through the chat clutter.", + "EDIT_CUSTOM_FILTER": "Edit Folder", + "CUSTOM_VIEWS_SUBTITLE": "Add or remove filters and update your folder.", + "ADD_NEW_FILTER": "Add filter", + "FILTER_DELETE_ERROR": "Oops, looks like we can't save nothing! Please add at least one filter to save it.", + "SUBMIT_BUTTON_LABEL": "Apply filters", + "UPDATE_BUTTON_LABEL": "Update folder", + "CANCEL_BUTTON_LABEL": "Cancel", + "CLEAR_BUTTON_LABEL": "Clear filters", + "FOLDER_LABEL": "Folder Name", + "FOLDER_QUERY_LABEL": "Folder Query", + "EMPTY_VALUE_ERROR": "Value is required.", + "TOOLTIP_LABEL": "Filter conversations", + "QUERY_DROPDOWN_LABELS": { + "AND": "AND", + "OR": "OR" + }, + "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Search contacts", + "CONTACT_FALLBACK": "Contact #{id}", + "OPERATOR_LABELS": { + "equal_to": "Equal to", + "not_equal_to": "Not equal to", + "does_not_contain": "Does not contain", + "is_present": "Is present", + "is_not_present": "Is not present", + "is_greater_than": "Is greater than", + "is_less_than": "Is lesser than", + "days_before": "Is x days before", + "starts_with": "Starts with", + "equalTo": "Equal to", + "notEqualTo": "Not equal to", + "contains": "Contains", + "doesNotContain": "Does not contain", + "isPresent": "Is present", + "isNotPresent": "Is not present", + "isGreaterThan": "Is greater than", + "isLessThan": "Is lesser than", + "daysBefore": "Is x days before", + "startsWith": "Starts with" + }, + "ATTRIBUTE_LABELS": { + "TRUE": "True", + "FALSE": "False" + }, + "ATTRIBUTES": { + "STATUS": "Status", + "ASSIGNEE_NAME": "Assignee name", + "INBOX_NAME": "Inbox name", + "TEAM_NAME": "Team name", + "CONTACT": "Contact", + "CONVERSATION_IDENTIFIER": "Conversation identifier", + "CAMPAIGN_NAME": "Campaign name", + "LABELS": "Labels", + "BROWSER_LANGUAGE": "Browser language", + "PRIORITY": "Priority", + "COUNTRY_NAME": "Country name", + "REFERER_LINK": "Referer link", + "CUSTOM_ATTRIBUTE_LIST": "List", + "CUSTOM_ATTRIBUTE_TEXT": "Text", + "CUSTOM_ATTRIBUTE_NUMBER": "Number", + "CUSTOM_ATTRIBUTE_LINK": "Link", + "CUSTOM_ATTRIBUTE_CHECKBOX": "Checkbox", + "CREATED_AT": "Created at", + "LAST_ACTIVITY": "Last activity" + }, + "ERRORS": { + "VALUE_REQUIRED": "Value is required", + "ATTRIBUTE_KEY_REQUIRED": "Attribute key is required", + "FILTER_OPERATOR_REQUIRED": "Filter operator is required", + "VALUE_MUST_BE_BETWEEN_1_AND_998": "Value must be between 1 and 998" + }, + "GROUPS": { + "STANDARD_FILTERS": "Standard filters", + "ADDITIONAL_FILTERS": "Additional filters", + "CUSTOM_ATTRIBUTES": "Custom attributes" + }, + "CUSTOM_VIEWS": { + "ADD": { + "TITLE": "Do you want to save this filter?", + "LABEL": "Name this filter", + "PLACEHOLDER": "Name your filter to refer it later.", + "ERROR_MESSAGE": "Name is required.", + "SAVE_BUTTON": "Save filter", + "CANCEL_BUTTON": "Cancel", + "API_FOLDERS": { + "SUCCESS_MESSAGE": "Folder created successfully.", + "ERROR_MESSAGE": "Error while creating folder." + }, + "API_SEGMENTS": { + "SUCCESS_MESSAGE": "Segment created successfully.", + "ERROR_MESSAGE": "Error while creating segment." + } + }, + "EDIT": { + "EDIT_BUTTON": "Edit folder" + }, + "DELETE": { + "DELETE_BUTTON": "Delete filter", + "MODAL": { + "CONFIRM": { + "TITLE": "Confirm deletion", + "MESSAGE": "Are you sure to delete the filter ", + "YES": "Yes, delete", + "NO": "No, keep it" + } + }, + "API_FOLDERS": { + "SUCCESS_MESSAGE": "Folder deleted successfully.", + "ERROR_MESSAGE": "Error while deleting folder." + }, + "API_SEGMENTS": { + "SUCCESS_MESSAGE": "Segment deleted successfully.", + "ERROR_MESSAGE": "Error while deleting segment." + } + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/agentBots.json b/app/javascript/dashboard/i18n/locale/uz/agentBots.json new file mode 100644 index 000000000..c17ec60d0 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/agentBots.json @@ -0,0 +1,117 @@ +{ + "AGENT_BOTS": { + "HEADER": "Bots", + "LOADING_EDITOR": "Loading editor...", + "DESCRIPTION": "Agent Bots are like the most fabulous members of your team. They can handle the small stuff, so you can focus on the stuff that matters. Give them a try. You can manage your bots from this page or create new ones using the 'Add Bot' button.", + "LEARN_MORE": "Learn about agent bots", + "COUNT": "{n} bot | {n} bots", + "SEARCH_PLACEHOLDER": "Search bots...", + "NO_RESULTS": "No bots found matching your search", + "GLOBAL_BOT": "System bot", + "GLOBAL_BOT_BADGE": "System", + "AVATAR": { + "SUCCESS_DELETE": "Bot avatar deleted successfully", + "ERROR_DELETE": "Error deleting bot avatar, please try again" + }, + "BOT_CONFIGURATION": { + "TITLE": "Select an agent bot", + "DESC": "Assign an Agent Bot to your inbox. They can handle initial conversations and transfer them to a live agent when necessary.", + "SUBMIT": "Update", + "DISCONNECT": "Disconnect bot", + "SUCCESS_MESSAGE": "Successfully updated the agent bot.", + "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot.", + "ERROR_MESSAGE": "Could not update the agent bot. Please try again.", + "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot. Please try again.", + "SELECT_PLACEHOLDER": "Select bot" + }, + "ADD": { + "TITLE": "Add Bot", + "CANCEL_BUTTON_TEXT": "Cancel", + "API": { + "SUCCESS_MESSAGE": "Bot added successfully.", + "ERROR_MESSAGE": "Could not add bot. Please try again later." + } + }, + "LIST": { + "404": "No bots found. You can create a bot by clicking the 'Add Bot' button.", + "LOADING": "Fetching bots...", + "TABLE_HEADER": { + "DETAILS": "Bot Details", + "URL": "Webhook URL", + "ACTIONS": "Actions" + } + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "TITLE": "Delete bot", + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure you want to delete {name}?", + "YES": "Yes, Delete", + "NO": "No, Keep" + }, + "API": { + "SUCCESS_MESSAGE": "Bot deleted successfully.", + "ERROR_MESSAGE": "Could not delete bot. Please try again." + } + }, + "EDIT": { + "BUTTON_TEXT": "Edit", + "TITLE": "Edit bot", + "API": { + "SUCCESS_MESSAGE": "Bot updated successfully.", + "ERROR_MESSAGE": "Could not update bot. Please try again." + } + }, + "SECRET": { + "LABEL": "Webhook Secret", + "COPY": "Copy secret to clipboard", + "COPY_SUCCESS": "Secret copied to clipboard", + "TOGGLE": "Toggle secret visibility", + "CREATED_DESC": "Use the secret below to verify webhook signatures. Please copy it now, you can also find it later in the bot settings.", + "DONE": "Done", + "RESET_SUCCESS": "Webhook secret regenerated successfully", + "RESET_ERROR": "Unable to regenerate webhook secret. Please try again" + }, + "ACCESS_TOKEN": { + "TITLE": "Access Token", + "DESCRIPTION": "Copy the access token and save it securely", + "COPY_SUCCESSFUL": "Access token copied to clipboard", + "RESET_SUCCESS": "Access token regenerated successfully", + "RESET_ERROR": "Unable to regenerate access token. Please try again" + }, + "FORM": { + "AVATAR": { + "LABEL": "Bot avatar" + }, + "NAME": { + "LABEL": "Bot name", + "PLACEHOLDER": "Enter bot name", + "REQUIRED": "Bot name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "What does this bot do?" + }, + "WEBHOOK_URL": { + "LABEL": "Webhook URL", + "PLACEHOLDER": "https://example.com/webhook", + "REQUIRED": "Webhook URL is required" + }, + "ERRORS": { + "NAME": "Bot name is required", + "URL": "Webhook URL is required", + "VALID_URL": "Please enter a valid URL starting with http:// or https://" + }, + "CANCEL": "Cancel", + "CREATE": "Create Bot", + "UPDATE": "Update Bot" + }, + "WEBHOOK": { + "DESCRIPTION": "Configure a webhook bot to integrate with your custom services. The bot will receive and process events from conversations and can respond to them." + }, + "TYPES": { + "WEBHOOK": "Webhook bot" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/agentMgmt.json b/app/javascript/dashboard/i18n/locale/uz/agentMgmt.json new file mode 100644 index 000000000..4b66fe864 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/agentMgmt.json @@ -0,0 +1,127 @@ +{ + "AGENT_MGMT": { + "HEADER": "Agents", + "HEADER_BTN_TXT": "Add Agent", + "LOADING": "Fetching Agent List", + "DESCRIPTION": "An agent is a member of your customer support team who can view and respond to user messages. The list below shows all the agents in your account.", + "LEARN_MORE": "Learn about user roles", + "AGENT_TYPES": { + "ADMINISTRATOR": "Administrator", + "AGENT": "Agent" + }, + "COUNT": "{n} agent | {n} agents", + "LIST": { + "404": "There are no agents associated to this account", + "TITLE": "Manage agents in your team", + "DESC": "You can add/remove agents to/in your team.", + "NAME": "Name", + "EMAIL": "EMAIL", + "STATUS": "Status", + "ACTIONS": "Actions", + "VERIFIED": "Verified", + "VERIFICATION_PENDING": "Verification Pending", + "AVAILABLE_CUSTOM_ROLE": "Available custom role permissions" + }, + "ADD": { + "TITLE": "Add agent to your team", + "DESC": "You can add people who will be able to handle support for your inboxes.", + "CANCEL_BUTTON_TEXT": "Cancel", + "FORM": { + "NAME": { + "LABEL": "Agent Name", + "PLACEHOLDER": "Please enter a name of the agent" + }, + "AGENT_TYPE": { + "LABEL": "Role", + "PLACEHOLDER": "Please select a role", + "ERROR": "Role is required" + }, + "EMAIL": { + "LABEL": "Email Address", + "PLACEHOLDER": "Please enter an email address of the agent" + }, + "SUBMIT": "Add Agent" + }, + "API": { + "SUCCESS_MESSAGE": "Agent added successfully", + "EXIST_MESSAGE": "Agent email already in use, Please try another email address", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + } + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "API": { + "SUCCESS_MESSAGE": "Agent deleted successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + }, + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure to delete ", + "YES": "Yes, Delete ", + "NO": "No, Keep " + } + }, + "EDIT": { + "TITLE": "Edit agent", + "FORM": { + "NAME": { + "LABEL": "Agent Name", + "PLACEHOLDER": "Please enter a name of the agent" + }, + "AGENT_TYPE": { + "LABEL": "Role", + "PLACEHOLDER": "Please select a role", + "ERROR": "Role is required" + }, + "EMAIL": { + "LABEL": "Email Address", + "PLACEHOLDER": "Please enter an email address of the agent" + }, + "AGENT_AVAILABILITY": { + "LABEL": "Availability", + "PLACEHOLDER": "Please select an availability status", + "ERROR": "Availability is required" + }, + "SUBMIT": "Edit Agent" + }, + "BUTTON_TEXT": "Edit", + "CANCEL_BUTTON_TEXT": "Cancel", + "API": { + "SUCCESS_MESSAGE": "Agent updated successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + }, + "PASSWORD_RESET": { + "ADMIN_RESET_BUTTON": "Reset Password", + "ADMIN_SUCCESS_MESSAGE": "An email with reset password instructions has been sent to the agent", + "SUCCESS_MESSAGE": "Agent password reset successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + } + }, + "SEARCH_PLACEHOLDER": "Search agents...", + "NO_RESULTS": "No agents found matching your search", + "SEARCH": { + "NO_RESULTS": "No results found." + }, + "MULTI_SELECTOR": { + "PLACEHOLDER": "None", + "TITLE": { + "AGENT": "Select agent", + "TEAM": "Select team" + }, + "LIST": { + "NONE": "None" + }, + "SEARCH": { + "NO_RESULTS": { + "AGENT": "No agents found", + "TEAM": "No teams found" + }, + "PLACEHOLDER": { + "AGENT": "Search agents", + "TEAM": "Search teams", + "INPUT": "Search for agents" + } + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/attributesMgmt.json b/app/javascript/dashboard/i18n/locale/uz/attributesMgmt.json new file mode 100644 index 000000000..1815e0c72 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/attributesMgmt.json @@ -0,0 +1,147 @@ +{ + "ATTRIBUTES_MGMT": { + "HEADER": "Custom Attributes", + "HEADER_BTN_TXT": "Add Custom Attribute", + "LOADING": "Fetching custom attributes", + "DESCRIPTION": "A custom attribute tracks additional details about your contacts, companies, or conversations—such as the subscription plan or the date of their first purchase. You can add different types of custom attributes, such as text, lists, or numbers, to capture the specific information you need.", + "LEARN_MORE": "Learn more about custom attributes", + "COUNT": "{n} attribute | {n} attributes", + "SEARCH_PLACEHOLDER": "Search attributes...", + "NO_RESULTS": "No attributes found matching your search", + "ATTRIBUTE_MODELS": { + "CONVERSATION": "Conversation", + "CONTACT": "Contact", + "COMPANY": "Company" + }, + "ATTRIBUTE_TYPES": { + "TEXT": "Text", + "NUMBER": "Number", + "LINK": "Link", + "DATE": "Date", + "LIST": "List", + "CHECKBOX": "Checkbox" + }, + "ADD": { + "TITLE": "Add Custom Attribute", + "SUBMIT": "Create", + "CANCEL_BUTTON_TEXT": "Cancel", + "FORM": { + "NAME": { + "LABEL": "Display Name", + "PLACEHOLDER": "Enter custom attribute display name", + "ERROR": "Name is required" + }, + "DESC": { + "LABEL": "Description", + "PLACEHOLDER": "Enter custom attribute description", + "ERROR": "Description is required" + }, + "MODEL": { + "LABEL": "Applies to", + "PLACEHOLDER": "Please select one", + "ERROR": "Model is required" + }, + "TYPE": { + "LABEL": "Type", + "PLACEHOLDER": "Please select a type", + "ERROR": "Type is required", + "LIST": { + "LABEL": "List Values", + "PLACEHOLDER": "Please enter value and press enter key", + "ERROR": "Must have at least one value" + } + }, + "KEY": { + "LABEL": "Key", + "PLACEHOLDER": "Enter custom attribute key", + "ERROR": "Key is required", + "IN_VALID": "Invalid key" + }, + "REGEX_PATTERN": { + "LABEL": "Regex Pattern", + "PLACEHOLDER": "Please enter custom attribute regex pattern. (Optional)" + }, + "REGEX_CUE": { + "LABEL": "Regex Cue", + "PLACEHOLDER": "Please enter regex pattern hint. (Optional)" + }, + "ENABLE_REGEX": { + "LABEL": "Enable regex validation" + }, + "BADGES": { + "PRE_CHAT": "Pre-chat", + "RESOLUTION": "Resolution" + } + }, + "API": { + "SUCCESS_MESSAGE": "Custom Attribute added successfully!", + "ERROR_MESSAGE": "Could not create a Custom Attribute. Please try again later." + } + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "API": { + "SUCCESS_MESSAGE": "Custom Attribute deleted successfully.", + "ERROR_MESSAGE": "Couldn't delete the custom attribute. Try again." + }, + "CONFIRM": { + "TITLE": "Are you sure want to delete - {attributeName}", + "PLACE_HOLDER": "Please type {attributeName} to confirm", + "MESSAGE": "Deleting will remove the custom attribute", + "YES": "Delete ", + "NO": "Cancel" + } + }, + "EDIT": { + "TITLE": "Edit Custom Attribute", + "UPDATE_BUTTON_TEXT": "Update", + "TYPE": { + "LIST": { + "LABEL": "List Values", + "PLACEHOLDER": "Please enter values and press enter key" + } + }, + "API": { + "SUCCESS_MESSAGE": "Custom Attribute updated successfully", + "ERROR_MESSAGE": "There was an error updating custom attribute, please try again" + } + }, + "TABS": { + "HEADER": "Custom Attributes", + "CONVERSATION": "Conversation", + "CONTACT": "Contact", + "COMPANY": "Company" + }, + "LIST": { + "TABLE_HEADER": { + "NAME": "Name", + "DESCRIPTION": "Description", + "TYPE": "Type", + "KEY": "Key" + }, + "BUTTONS": { + "EDIT": "Edit", + "DELETE": "Delete" + }, + "EMPTY_RESULT": { + "404": "There are no custom attributes created", + "NOT_FOUND": "There are no custom attributes configured" + }, + "REGEX_PATTERN": { + "LABEL": "Regex Pattern", + "PLACEHOLDER": "Please enter custom attribute regex pattern. (Optional)" + }, + "REGEX_CUE": { + "LABEL": "Regex Cue", + "PLACEHOLDER": "Please enter regex pattern hint. (Optional)" + }, + "ENABLE_REGEX": { + "LABEL": "Enable regex validation" + } + }, + "BADGES": { + "PRE_CHAT": "Pre-chat", + "RESOLUTION": "Resolution" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/auditLogs.json b/app/javascript/dashboard/i18n/locale/uz/auditLogs.json new file mode 100644 index 000000000..f85ad2a3e --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/auditLogs.json @@ -0,0 +1,77 @@ +{ + "AUDIT_LOGS": { + "HEADER": "Audit Logs", + "HEADER_BTN_TXT": "Add Audit Logs", + "LOADING": "Fetching Audit Logs", + "DESCRIPTION": "Audit Logs maintain a record of activities in your account, allowing you to track and audit your account, team, or services.", + "LEARN_MORE": "Learn more about audit logs", + "SEARCH_404": "There are no items matching this query", + "SIDEBAR_TXT": "

Audit Logs

Audit Logs are trails for events and actions in a Chatwoot System.

", + "LIST": { + "404": "There are no Audit Logs available in this account.", + "TITLE": "Manage Audit Logs", + "DESC": "Audit Logs are trails for events and actions in a Chatwoot System.", + "TABLE_HEADER": { + "ACTIVITY": "Activity", + "TIME": "Time", + "IP_ADDRESS": "IP Address" + } + }, + "API": { + "SUCCESS_MESSAGE": "AuditLogs retrieved successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + }, + "DEFAULT_USER": "System", + "AUTOMATION_RULE": { + "ADD": "{agentName} created a new automation rule (#{id})", + "EDIT": "{agentName} updated an automation rule (#{id})", + "DELETE": "{agentName} deleted an automation rule (#{id})" + }, + "ACCOUNT_USER": { + "ADD": "{agentName} invited {invitee} to the account as an {role}", + "EDIT": { + "SELF": "{agentName} changed their {attributes} to {values}", + "OTHER": "{agentName} changed {attributes} of {user} to {values}", + "DELETED": "{agentName} changed {attributes} of a deleted user to {values}" + } + }, + "INBOX": { + "ADD": "{agentName} created a new inbox (#{id})", + "EDIT": "{agentName} updated an inbox (#{id})", + "DELETE": "{agentName} deleted an inbox (#{id})" + }, + "WEBHOOK": { + "ADD": "{agentName} created a new webhook (#{id})", + "EDIT": "{agentName} updated a webhook (#{id})", + "DELETE": "{agentName} deleted a webhook (#{id})" + }, + "USER_ACTION": { + "SIGN_IN": "{agentName} signed in", + "SIGN_OUT": "{agentName} signed out" + }, + "TEAM": { + "ADD": "{agentName} created a new team (#{id})", + "EDIT": "{agentName} updated a team (#{id})", + "DELETE": "{agentName} deleted a team (#{id})" + }, + "MACRO": { + "ADD": "{agentName} created a new macro (#{id})", + "EDIT": "{agentName} updated a macro (#{id})", + "DELETE": "{agentName} deleted a macro (#{id})" + }, + "INBOX_MEMBER": { + "ADD": "{agentName} added {user} to the inbox(#{inbox_id})", + "REMOVE": "{agentName} removed {user} from the inbox(#{inbox_id})" + }, + "TEAM_MEMBER": { + "ADD": "{agentName} added {user} to the team(#{team_id})", + "REMOVE": "{agentName} removed {user} from the team(#{team_id})" + }, + "ACCOUNT": { + "EDIT": "{agentName} updated the account configuration (#{id})" + }, + "CONVERSATION": { + "DELETE": "{agentName} deleted conversation #{id}" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/automation.json b/app/javascript/dashboard/i18n/locale/uz/automation.json new file mode 100644 index 000000000..256a0c8f6 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/automation.json @@ -0,0 +1,193 @@ +{ + "AUTOMATION": { + "HEADER": "Automation", + "DESCRIPTION": "Automation can replace and streamline existing processes that require manual effort, such as adding labels and assigning conversations to the most suitable agent. This allows the team to focus on their strengths while reducing time spent on routine tasks.", + "LEARN_MORE": "Learn more about automation", + "COUNT": "{n} automation | {n} automations", + "HEADER_BTN_TXT": "Create Automation", + "LOADING": "Fetching automation rules", + "SEARCH_PLACEHOLDER": "Search automation rules...", + "NO_RESULTS": "No automation rules found matching your search", + "ADD": { + "TITLE": "Add Automation Rule", + "SUBMIT": "Create", + "CANCEL_BUTTON_TEXT": "Cancel", + "FORM": { + "NAME": { + "LABEL": "Rule Name", + "PLACEHOLDER": "Enter rule name", + "ERROR": "Name is required" + }, + "DESC": { + "LABEL": "Description", + "PLACEHOLDER": "Enter rule description", + "ERROR": "Description is required" + }, + "EVENT": { + "LABEL": "Event", + "PLACEHOLDER": "Please select one", + "ERROR": "Event is required" + }, + "CONDITIONS": { + "LABEL": "Conditions" + }, + "ACTIONS": { + "LABEL": "Actions" + } + }, + "CONDITION_BUTTON_LABEL": "Add Condition", + "ACTION_BUTTON_LABEL": "Add Action", + "API": { + "SUCCESS_MESSAGE": "Automation rule added successfully", + "ERROR_MESSAGE": "Could not able to create a automation rule, Please try again later" + } + }, + "LIST": { + "TABLE_HEADER": { + "NAME": "Name", + "ACTIVE": "Active", + "CREATED_ON": "Created on", + "ACTIONS": "Actions" + }, + "404": "No automation rules found" + }, + "DELETE": { + "TITLE": "Delete Automation Rule", + "SUBMIT": "Delete", + "CANCEL_BUTTON_TEXT": "Cancel", + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure to delete ", + "YES": "Yes, Delete ", + "NO": "No, Keep " + }, + "API": { + "SUCCESS_MESSAGE": "Automation rule deleted successfully", + "ERROR_MESSAGE": "Could not able to delete a automation rule, Please try again later" + } + }, + "EDIT": { + "TITLE": "Edit Automation Rule", + "SUBMIT": "Update", + "CANCEL_BUTTON_TEXT": "Cancel", + "API": { + "SUCCESS_MESSAGE": "Automation rule updated successfully", + "ERROR_MESSAGE": "Could not update automation rule, Please try again later" + } + }, + "CLONE": { + "TOOLTIP": "Clone", + "API": { + "SUCCESS_MESSAGE": "Automation cloned successfully", + "ERROR_MESSAGE": "Could not clone automation rule, Please try again later" + } + }, + "FORM": { + "EDIT": "Edit", + "CREATE": "Create", + "DELETE": "Delete", + "CANCEL": "Cancel", + "RESET_MESSAGE": "Changing event type will reset the conditions and events you have added below" + }, + "CONDITION": { + "DELETE_MESSAGE": "You need to have atleast one condition to save", + "CONTACT_CUSTOM_ATTR_LABEL": "Contact Custom Attributes", + "CONVERSATION_CUSTOM_ATTR_LABEL": "Conversation Custom Attributes" + }, + "ACTION": { + "DELETE_MESSAGE": "You need to have atleast one action to save", + "TEAM_MESSAGE_INPUT_PLACEHOLDER": "Enter your message here", + "TEAM_DROPDOWN_PLACEHOLDER": "Select teams", + "EMAIL_INPUT_PLACEHOLDER": "Enter email", + "URL_INPUT_PLACEHOLDER": "Enter URL" + }, + "TOGGLE": { + "ACTIVATION_TITLE": "Activate Automation Rule", + "DEACTIVATION_TITLE": "Deactivate Automation Rule", + "ACTIVATION_DESCRIPTION": "This action will activate the automation rule '{automationName}'. Are you sure you want to proceed?", + "DEACTIVATION_DESCRIPTION": "This action will deactivate the automation rule '{automationName}'. Are you sure you want to proceed?", + "ACTIVATION_SUCCESFUL": "Automation Rule Activated Successfully", + "DEACTIVATION_SUCCESFUL": "Automation Rule Deactivated Successfully", + "ACTIVATION_ERROR": "Could not Activate Automation, Please try again later", + "DEACTIVATION_ERROR": "Could not Deactivate Automation, Please try again later", + "CONFIRMATION_LABEL": "Yes", + "CANCEL_LABEL": "No" + }, + "ATTACHMENT": { + "UPLOAD_ERROR": "Could not upload attachment, Please try again", + "LABEL_IDLE": "Upload Attachment", + "LABEL_UPLOADING": "Yuklanmoqda...", + "LABEL_UPLOADED": "Successfully Uploaded", + "LABEL_UPLOAD_FAILED": "Upload Failed" + }, + "ERRORS": { + "ATTRIBUTE_KEY_REQUIRED": "Attribute key is required", + "FILTER_OPERATOR_REQUIRED": "Filter operator is required", + "VALUE_REQUIRED": "Value is required", + "VALUE_MUST_BE_BETWEEN_1_AND_998": "Value must be between 1 and 998", + "ACTION_PARAMETERS_REQUIRED": "Action parameters are required", + "ATLEAST_ONE_CONDITION_REQUIRED": "At least one condition is required", + "ATLEAST_ONE_ACTION_REQUIRED": "At least one action is required" + }, + "NONE_OPTION": "None", + "LAST_RESPONDING_AGENT": "Last Responding Agent", + "EVENTS": { + "CONVERSATION_CREATED": "Conversation Created", + "CONVERSATION_UPDATED": "Conversation Updated", + "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", + "CONVERSATION_OPENED": "Conversation Opened" + }, + "ACTIONS": { + "ASSIGN_AGENT": "Assign to Agent", + "ASSIGN_TEAM": "Assign a Team", + "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent", + "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team", + "ADD_LABEL": "Add a Label", + "REMOVE_LABEL": "Remove a Label", + "SEND_EMAIL_TO_TEAM": "Send an Email to Team", + "SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript", + "MUTE_CONVERSATION": "Mute Conversation", + "SNOOZE_CONVERSATION": "Snooze Conversation", + "RESOLVE_CONVERSATION": "Resolve Conversation", + "SEND_WEBHOOK_EVENT": "Send Webhook Event", + "SEND_ATTACHMENT": "Send Attachment", + "SEND_MESSAGE": "Send a Message", + "ADD_PRIVATE_NOTE": "Add a Private Note", + "CHANGE_PRIORITY": "Change Priority", + "ADD_SLA": "Add SLA", + "OPEN_CONVERSATION": "Open conversation", + "PENDING_CONVERSATION": "Mark conversation as pending" + }, + "MESSAGE_TYPES": { + "INCOMING": "Incoming Message", + "OUTGOING": "Outgoing Message" + }, + "PRIORITY_TYPES": { + "NONE": "None", + "LOW": "Low", + "MEDIUM": "Medium", + "HIGH": "High", + "URGENT": "Urgent" + }, + "ATTRIBUTES": { + "MESSAGE_TYPE": "Message Type", + "PRIVATE_NOTE": "Private Note", + "MESSAGE_CONTAINS": "Message Contains", + "EMAIL": "Email", + "INBOX": "Inbox", + "CONVERSATION_LANGUAGE": "Conversation Language", + "PHONE_NUMBER": "Phone Number", + "STATUS": "Status", + "BROWSER_LANGUAGE": "Browser Language", + "MAIL_SUBJECT": "Email Subject", + "COUNTRY_NAME": "Country", + "COMPANY_NAME": "Company", + "REFERER_LINK": "Referrer Link", + "ASSIGNEE_NAME": "Assignee", + "TEAM_NAME": "Team", + "PRIORITY": "Priority", + "LABELS": "Labels" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/bulkActions.json b/app/javascript/dashboard/i18n/locale/uz/bulkActions.json new file mode 100644 index 000000000..0c8ea34f2 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/bulkActions.json @@ -0,0 +1,46 @@ +{ + "BULK_ACTION": { + "CONVERSATIONS_SELECTED": "{conversationCount} selected", + "NONE": "None", + "CLEAR_SELECTION": "Clear", + "ASSIGN_AGENT_CONFIRMATION_LABEL": "Are you sure you want to assign {n} conversation to {agentName}? | Are you sure you want to assign {n} conversations to {agentName}?", + "UNASSIGN_AGENT_CONFIRMATION_LABEL": "Are you sure you want to unassign {n} conversation? | Are you sure you want to unassign {n} conversations?", + "YES": "Yes", + "CANCEL": "Cancel", + "SEARCH_INPUT_PLACEHOLDER": "Search", + "ASSIGN_AGENT_TOOLTIP": "Assign agent", + "ASSIGN_TEAM_TOOLTIP": "Assign team", + "ASSIGN_SUCCESFUL": "Conversations assigned successfully.", + "ASSIGN_FAILED": "Failed to assign conversations. Please try again.", + "RESOLVE_SUCCESFUL": "Conversations resolved successfully.", + "RESOLVE_FAILED": "Failed to resolve conversations. Please try again.", + "ALL_CONVERSATIONS_SELECTED_ALERT": "Conversations visible on this page are only selected.", + "UPDATE": { + "CHANGE_STATUS": "Change status", + "SNOOZE_UNTIL": "Snooze", + "UPDATE_SUCCESFUL": "Conversation status updated successfully.", + "UPDATE_FAILED": "Failed to update conversations. Please try again." + }, + "RESOLVE": { + "ALL_MISSING_ATTRIBUTES": "Cannot resolve conversations due to missing required attributes", + "PARTIAL_SUCCESS": "Some conversations need required attributes before resolving and were skipped" + }, + "LABELS": { + "ASSIGN_LABELS": "Assign labels", + "REMOVE_LABELS": "Remove labels", + "ASSIGN_SELECTED_LABELS": "Assign selected labels", + "REMOVE_SELECTED_LABELS": "Remove selected labels", + "ASSIGN_SUCCESFUL": "Labels assigned successfully.", + "ASSIGN_FAILED": "Failed to assign labels. Please try again.", + "REMOVE_SUCCESFUL": "Labels removed successfully.", + "REMOVE_FAILED": "Failed to remove labels. Please try again." + }, + "TEAMS": { + "NONE": "None", + "ASSIGN_TEAM_CONFIRMATION_LABEL": "Are you sure you want to assign {n} conversation to {teamName}? | Are you sure you want to assign {n} conversations to {teamName}?", + "UNASSIGN_TEAM_CONFIRMATION_LABEL": "Are you sure you want to unassign {n} conversation? | Are you sure you want to unassign {n} conversations?", + "ASSIGN_SUCCESFUL": "Teams assigned successfully.", + "ASSIGN_FAILED": "Failed to assign team. Please try again." + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/campaign.json b/app/javascript/dashboard/i18n/locale/uz/campaign.json new file mode 100644 index 000000000..cd108a8b4 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/campaign.json @@ -0,0 +1,216 @@ +{ + "CAMPAIGN": { + "LIVE_CHAT": { + "HEADER_TITLE": "Live chat campaigns", + "NEW_CAMPAIGN": "Create campaign", + "CARD": { + "STATUS": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "CAMPAIGN_DETAILS": { + "SENT_BY": "Sent by", + "BOT": "Bot", + "FROM": "tomonidan", + "URL": "URL:" + } + }, + "EMPTY_STATE": { + "TITLE": "No live chat campaigns are available", + "SUBTITLE": "Connect with your customers using proactive messages. Click 'Create campaign' to get started." + }, + "CREATE": { + "TITLE": "Create a live chat campaign", + "CANCEL_BUTTON_TEXT": "Cancel", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Xabar", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "INBOX": { + "LABEL": "Select Inbox", + "PLACEHOLDER": "Select Inbox", + "ERROR": "Inbox is required" + }, + "SENT_BY": { + "LABEL": "Sent by", + "PLACEHOLDER": "Please select sender", + "ERROR": "Sender is required" + }, + "END_POINT": { + "LABEL": "URL", + "PLACEHOLDER": "Please enter the URL", + "ERROR": "Please enter a valid URL" + }, + "TIME_ON_PAGE": { + "LABEL": "Time on page(Seconds)", + "PLACEHOLDER": "Please enter the time", + "ERROR": "Time on page is required" + }, + "OTHER_PREFERENCES": { + "TITLE": "Other preferences", + "ENABLED": "Enable campaign", + "TRIGGER_ONLY_BUSINESS_HOURS": "Trigger only during business hours" + }, + "BUTTONS": { + "CREATE": "Create", + "CANCEL": "Cancel" + }, + "API": { + "SUCCESS_MESSAGE": "Live chat campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + } + }, + "EDIT": { + "TITLE": "Edit live chat campaign", + "FORM": { + "API": { + "SUCCESS_MESSAGE": "Live chat campaign updated successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + } + } + }, + "SMS": { + "HEADER_TITLE": "SMS campaigns", + "NEW_CAMPAIGN": "Create campaign", + "EMPTY_STATE": { + "TITLE": "No SMS campaigns are available", + "SUBTITLE": "Launch an SMS campaign to reach your customers directly. Send offers or make announcements with ease. Click 'Create campaign' to get started." + }, + "CARD": { + "STATUS": { + "PROCESSING": "Processing", + "COMPLETED": "Completed", + "SCHEDULED": "Scheduled" + }, + "CAMPAIGN_DETAILS": { + "SENT_FROM": "Sent from", + "ON": "on" + } + }, + "CREATE": { + "TITLE": "Create SMS campaign", + "CANCEL_BUTTON_TEXT": "Cancel", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "MESSAGE": { + "LABEL": "Xabar", + "PLACEHOLDER": "Please enter the message of campaign", + "ERROR": "Message is required" + }, + "INBOX": { + "LABEL": "Select Inbox", + "PLACEHOLDER": "Select Inbox", + "ERROR": "Inbox is required" + }, + "AUDIENCE": { + "LABEL": "Audience", + "PLACEHOLDER": "Select the customer labels", + "ERROR": "Audience is required" + }, + "SCHEDULED_AT": { + "LABEL": "Scheduled time", + "PLACEHOLDER": "Please select the time", + "ERROR": "Scheduled time is required" + }, + "BUTTONS": { + "CREATE": "Create", + "CANCEL": "Cancel" + }, + "API": { + "SUCCESS_MESSAGE": "SMS campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + } + } + }, + "WHATSAPP": { + "HEADER_TITLE": "WhatsApp campaigns", + "NEW_CAMPAIGN": "Create campaign", + "EMPTY_STATE": { + "TITLE": "No WhatsApp campaigns are available", + "SUBTITLE": "Launch a WhatsApp campaign to reach your customers directly. Send offers or make announcements with ease. Click 'Create campaign' to get started." + }, + "CARD": { + "STATUS": { + "PROCESSING": "Processing", + "COMPLETED": "Completed", + "SCHEDULED": "Scheduled" + }, + "CAMPAIGN_DETAILS": { + "SENT_FROM": "Sent from", + "ON": "on" + } + }, + "CREATE": { + "TITLE": "Create WhatsApp campaign", + "CANCEL_BUTTON_TEXT": "Cancel", + "CREATE_BUTTON_TEXT": "Create", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Please enter the title of campaign", + "ERROR": "Title is required" + }, + "INBOX": { + "LABEL": "Select Inbox", + "PLACEHOLDER": "Select Inbox", + "ERROR": "Inbox is required" + }, + "TEMPLATE": { + "LABEL": "WhatsApp Template", + "PLACEHOLDER": "Select a template", + "INFO": "Select a template to use for this campaign.", + "ERROR": "Template is required", + "PREVIEW_TITLE": "Process {templateName}", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLES_LABEL": "Variables", + "VARIABLE_PLACEHOLDER": "Enter value for {variable}" + }, + "AUDIENCE": { + "LABEL": "Audience", + "PLACEHOLDER": "Select the customer labels", + "ERROR": "Audience is required" + }, + "SCHEDULED_AT": { + "LABEL": "Scheduled time", + "PLACEHOLDER": "Please select the time", + "ERROR": "Scheduled time is required" + }, + "BUTTONS": { + "CREATE": "Create", + "CANCEL": "Cancel" + }, + "API": { + "SUCCESS_MESSAGE": "WhatsApp campaign created successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + } + } + }, + "CONFIRM_DELETE": { + "TITLE": "Are you sure to delete?", + "DESCRIPTION": "The delete action is permanent and cannot be reversed.", + "CONFIRM": "Delete", + "API": { + "SUCCESS_MESSAGE": "Campaign deleted successfully", + "ERROR_MESSAGE": "There was an error. Please try again." + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/cannedMgmt.json b/app/javascript/dashboard/i18n/locale/uz/cannedMgmt.json new file mode 100644 index 000000000..e768e1522 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/cannedMgmt.json @@ -0,0 +1,80 @@ +{ + "CANNED_MGMT": { + "HEADER": "Canned Responses", + "LEARN_MORE": "Learn more about canned responses", + "DESCRIPTION": "Canned Responses are pre-written reply templates that help you quickly respond to a conversation. Agents can type the '/' character followed by the shortcode to insert a canned response during a conversation. ", + "COUNT": "{n} canned response | {n} canned responses", + "HEADER_BTN_TXT": "Add canned response", + "LOADING": "Fetching canned responses...", + "SEARCH_PLACEHOLDER": "Search canned responses...", + "NO_RESULTS": "No canned responses found matching your search", + "SEARCH_404": "There are no items matching this query.", + "LIST": { + "404": "There are no canned responses available in this account.", + "TITLE": "Manage canned responses", + "DESC": "Canned Responses are predefined reply templates which can be used to quickly send out replies to conversations.", + "TABLE_HEADER": { + "SHORT_CODE": "Short code", + "CONTENT": "Content", + "ACTIONS": "Actions" + } + }, + "ADD": { + "TITLE": "Add canned response", + "DESC": "Canned Responses are predefined reply templates which can be used to quickly send out replies to conversations.", + "CANCEL_BUTTON_TEXT": "Cancel", + "FORM": { + "SHORT_CODE": { + "LABEL": "Short code", + "PLACEHOLDER": "Please enter a short code.", + "ERROR": "Short Code is required." + }, + "CONTENT": { + "LABEL": "Xabar", + "PLACEHOLDER": "Please write the message you want to save as a template to use later.", + "ERROR": "Message is required." + }, + "SUBMIT": "Submit" + }, + "API": { + "SUCCESS_MESSAGE": "Canned response added successfully.", + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." + } + }, + "EDIT": { + "TITLE": "Edit canned response", + "CANCEL_BUTTON_TEXT": "Cancel", + "FORM": { + "SHORT_CODE": { + "LABEL": "Short code", + "PLACEHOLDER": "Please enter a shortcode.", + "ERROR": "Short code is required." + }, + "CONTENT": { + "LABEL": "Xabar", + "PLACEHOLDER": "Please write the message you want to save as a template to use later.", + "ERROR": "Message is required." + }, + "SUBMIT": "Submit" + }, + "BUTTON_TEXT": "Edit", + "API": { + "SUCCESS_MESSAGE": "Canned response is updated successfully.", + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." + } + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "API": { + "SUCCESS_MESSAGE": "Canned response deleted successfully.", + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." + }, + "CONFIRM": { + "TITLE": "Confirm deletion", + "MESSAGE": "Are you sure to delete ", + "YES": "Yes, delete ", + "NO": "No, keep " + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/chatlist.json b/app/javascript/dashboard/i18n/locale/uz/chatlist.json new file mode 100644 index 000000000..45755892d --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/chatlist.json @@ -0,0 +1,149 @@ +{ + "CHAT_LIST": { + "LOADING": "Fetching conversations", + "LOAD_MORE_CONVERSATIONS": "Load more conversations", + "EOF": "All conversations loaded 🎉", + "LIST": { + "404": "There are no active conversations in this group." + }, + "FAILED_TO_SEND": "Failed to send", + "TAB_HEADING": "Conversations", + "MENTION_HEADING": "Mentions", + "UNATTENDED_HEADING": "Unattended", + "SEARCH": { + "INPUT": "Search for People, Chats, Saved Replies .." + }, + "FILTER_ALL": "All", + "ASSIGNEE_TYPE_TABS": { + "me": "Mine", + "unassigned": "Unassigned", + "all": "All" + }, + "CHAT_STATUS_FILTER_ITEMS": { + "open": { + "TEXT": "Open" + }, + "resolved": { + "TEXT": "Resolved" + }, + "pending": { + "TEXT": "Pending" + }, + "snoozed": { + "TEXT": "Snoozed" + }, + "all": { + "TEXT": "All" + } + }, + "VIEW_FILTER": "View", + "SORT_TOOLTIP_LABEL": "Sort conversations", + "CHAT_SORT": { + "STATUS": "Status", + "ORDER_BY": "Order by" + }, + "CHAT_TIME_STAMP": { + "CREATED": { + "LATEST": "Created", + "OLDEST": "Created at:" + }, + "LAST_ACTIVITY": { + "NOT_ACTIVE": "Last activity:", + "ACTIVE": "Last activity" + } + }, + "SORT_ORDER_ITEMS": { + "last_activity_at_asc": { + "TEXT": "Last activity: Oldest first" + }, + "last_activity_at_desc": { + "TEXT": "Last activity: Newest first" + }, + "created_at_desc": { + "TEXT": "Created at: Newest first" + }, + "created_at_asc": { + "TEXT": "Created at: Oldest first" + }, + "priority_desc": { + "TEXT": "Priority: Highest first" + }, + "priority_asc": { + "TEXT": "Priority: Lowest first" + }, + "waiting_since_asc": { + "TEXT": "Pending Response: Longest first" + }, + "waiting_since_desc": { + "TEXT": "Pending Response: Shortest first" + }, + "priority_desc_created_at_asc": { + "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" + } + }, + "ATTACHMENTS": { + "image": { + "CONTENT": "Picture message" + }, + "audio": { + "CONTENT": "Audio message" + }, + "video": { + "CONTENT": "Video message" + }, + "file": { + "CONTENT": "File Attachment" + }, + "location": { + "CONTENT": "Location" + }, + "ig_reel": { + "CONTENT": "Instagram Reel" + }, + "fallback": { + "CONTENT": "has shared a url" + }, + "contact": { + "CONTENT": "Shared contact" + }, + "embed": { + "CONTENT": "Embedded content" + } + }, + "CHAT_SORT_BY_FILTER": { + "TITLE": "Sort conversation", + "DROPDOWN_TITLE": "Sort by", + "ITEMS": { + "LATEST": { + "NAME": "Last activity at", + "LABEL": "Last activity" + }, + "CREATED_AT": { + "NAME": "Created at", + "LABEL": "Created at" + }, + "LAST_USER_MESSAGE_AT": { + "NAME": "Last user message at", + "LABEL": "Last message" + } + } + }, + "RECEIVED_VIA_EMAIL": "Received via email", + "VIEW_TWEET_IN_TWITTER": "View tweet in Twitter", + "REPLY_TO_TWEET": "Reply to this tweet", + "LINK_TO_STORY": "Go to instagram story", + "SENT": "Sent successfully", + "READ": "Read successfully", + "DELIVERED": "Delivered successfully", + "NO_MESSAGES": "No Messages", + "NO_CONTENT": "No content available", + "HIDE_QUOTED_TEXT": "Hide Quoted Text", + "SHOW_QUOTED_TEXT": "Show Quoted Text", + "MESSAGE_READ": "Read", + "SENDING": "Sending", + "UNREAD_COUNT_OVERFLOW": "9+" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/companies.json b/app/javascript/dashboard/i18n/locale/uz/companies.json new file mode 100644 index 000000000..d4cd0b72f --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/companies.json @@ -0,0 +1,153 @@ +{ + "COMPANIES": { + "HEADER": "Companies", + "SORT_BY": { + "LABEL": "Sort by", + "OPTIONS": { + "NAME": "Name", + "DOMAIN": "Domain", + "CREATED_AT": "Created at", + "LAST_ACTIVITY_AT": "Last activity", + "CONTACTS_COUNT": "Contacts count" + } + }, + "ORDER": { + "LABEL": "Order", + "OPTIONS": { + "ASCENDING": "Ascending", + "DESCENDING": "Descending" + } + }, + "SEARCH_PLACEHOLDER": "Search companies...", + "LOADING": "Loading companies...", + "UNNAMED": "Unnamed Company", + "CONTACTS_COUNT": "{n} contact | {n} contacts", + "ACTIONS": { + "CREATE": "Add company" + }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, + "CREATE": { + "TITLE": "Add company details", + "ACTIONS": { + "SAVE": "Add company" + }, + "MESSAGES": { + "SUCCESS": "Company created.", + "ERROR": "Could not create the company." + } + }, + "DETAIL": { + "LOADING": "Loading company details...", + "EMPTY_STATE": { + "TITLE": "Company not found", + "SUBTITLE": "This company may have been removed or is no longer available in this account." + }, + "SIDEBAR": { + "TABS": { + "ATTRIBUTES": "Attributes", + "CONTACTS": "Contacts", + "HISTORY": "History", + "NOTES": "Notes" + } + }, + "HISTORY": { + "EMPTY": "No conversations found for this company's contacts yet." + }, + "NOTES": { + "EMPTY": "No notes found for this company's contacts yet." + }, + "ATTRIBUTES": { + "SEARCH_PLACEHOLDER": "Search attributes...", + "EMPTY_STATE": "There are no company custom attributes configured yet.", + "NO_ATTRIBUTES": "No matching attributes found.", + "UNUSED_ATTRIBUTES": "{count} unused attribute | {count} unused attributes", + "MESSAGES": { + "UPDATE_SUCCESS": "Company attribute updated.", + "UPDATE_ERROR": "Could not update company attribute.", + "DELETE_SUCCESS": "Company attribute removed.", + "DELETE_ERROR": "Could not remove company attribute." + } + }, + "CONTACTS": { + "LOADING": "Loading contacts...", + "EMPTY": "No contacts are linked to this company yet.", + "UNNAMED_CONTACT": "Unnamed contact", + "ACTIONS": { + "ADD": "Add contact", + "REMOVE": "Remove contact" + }, + "DIALOGS": { + "ADD": { + "DESCRIPTION": "Search for an existing contact and link it to this company.", + "SEARCH_PLACEHOLDER": "Search contacts...", + "INITIAL": "Start typing to search contacts.", + "EMPTY": "No contacts found.", + "CONFIRM_TITLE": "Link contact", + "CONFIRM_DESCRIPTION": "Confirm the company and contact before linking them.", + "COMPANY_LABEL": "Company", + "CONTACT_LABEL": "Contact", + "CURRENT_COMPANY": "Currently linked to {companyName}", + "ADD": "Link contact", + "CANCEL": "Cancel" + } + }, + "MESSAGES": { + "ADD_SUCCESS": "Contact linked to company.", + "ADD_ERROR": "Could not link contact to company.", + "REASSIGN_SUCCESS": "Contact reassigned to company.", + "REASSIGN_ERROR": "Could not reassign contact to company.", + "REMOVE_SUCCESS": "Contact removed from company.", + "REMOVE_ERROR": "Could not remove contact from company." + } + }, + "AVATAR": { + "UPDATING": "Updating company avatar...", + "UPLOAD_SUCCESS": "Company avatar updated.", + "UPLOAD_ERROR": "Could not update the company avatar.", + "DELETE_SUCCESS": "Company avatar removed.", + "DELETE_ERROR": "Could not remove the company avatar." + }, + "PROFILE": { + "TITLE": "Edit company details", + "CREATED_AT": "Created {date}", + "LAST_ACTIVE": "Last active {date}", + "DESCRIPTION_PLACEHOLDER": "Add a short description for this company", + "ACTIONS": { + "SAVE": "Update company" + }, + "MESSAGES": { + "UPDATE_SUCCESS": "Company updated.", + "UPDATE_ERROR": "Could not update the company." + }, + "FIELDS": { + "NAME": "Name", + "DOMAIN": "Domain" + } + }, + "DELETE": { + "SECTION_TITLE": "Danger zone", + "SECTION_DESCRIPTION": "Delete this company and unlink its contacts. The contacts will remain in the account.", + "BUTTON": "Delete company", + "TITLE": "Delete company?", + "DESCRIPTION": "This will remove the company and unlink all associated contacts. Contacts themselves will be preserved.", + "DESCRIPTION_WITH_NAME": "This will remove {companyName} and unlink all associated contacts. Contacts themselves will be preserved.", + "CONFIRM": "Delete company", + "MESSAGES": { + "SUCCESS": "Company deleted.", + "ERROR": "Could not delete the company." + } + } + }, + "EMPTY_STATE": { + "TITLE": "No companies found" + } + }, + "COMPANIES_LAYOUT": { + "PAGINATION_FOOTER": { + "SHOWING": "Showing {startItem} – {endItem} of {totalItems} company | Showing {startItem} – {endItem} of {totalItems} companies" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/components.json b/app/javascript/dashboard/i18n/locale/uz/components.json new file mode 100644 index 000000000..ce1f47313 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/components.json @@ -0,0 +1,69 @@ +{ + "PAGINATION_FOOTER": { + "SHOWING": "Showing {startItem} - {endItem} of {totalItems} item | Showing {startItem} - {endItem} of {totalItems} items", + "CURRENT_PAGE_INFO": "{currentPage} of {totalPages} page | {currentPage} of {totalPages} pages" + }, + "COMBOBOX": { + "PLACEHOLDER": "Select an option...", + "EMPTY_SEARCH_RESULTS": "No items found for the search term `{searchTerm}`", + "EMPTY_STATE": "No results found.", + "SEARCH_PLACEHOLDER": "Search...", + "MORE": "+{count} more" + }, + "DROPDOWN_MENU": { + "SEARCH_PLACEHOLDER": "Search...", + "EMPTY_STATE": "No results found.", + "SEARCHING": "Searching..." + }, + "DIALOG": { + "BUTTONS": { + "CANCEL": "Cancel", + "CONFIRM": "Confirm" + } + }, + "PHONE_INPUT": { + "SEARCH_PLACEHOLDER": "Mamlakatni qidirish", + "ERROR": "Phone number should be empty or in E.164 format", + "DIAL_CODE_ERROR": "Please select a dial code from the list" + }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Author is not available" + } + }, + "BREADCRUMB": { + "ARIA_LABEL": "Breadcrumb" + }, + "SWITCH": { + "TOGGLE": "Toggle switch" + }, + "LABEL": { + "TAG_BUTTON": "tag" + }, + "FEATURE_SPOTLIGHT": { + "LEARN_MORE": "Learn more", + "WATCH_VIDEO": "Watch video" + }, + "DURATION_INPUT": { + "MINUTES": "Minutes", + "HOURS": "Hours", + "DAYS": "Days", + "PLACEHOLDER": "Enter duration" + }, + "CHANNEL_SELECTOR": { + "COMING_SOON": "Coming Soon!" + }, + "SLASH_COMMANDS": { + "HEADING_1": "Heading 1", + "HEADING_2": "Heading 2", + "HEADING_3": "Heading 3", + "BOLD": "Bold", + "ITALIC": "Italic", + "STRIKETHROUGH": "Strikethrough", + "CODE": "Code", + "BULLET_LIST": "Bullet List", + "ORDERED_LIST": "Ordered List", + "TABLE": "Table", + "IMAGE": "Image" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/contact.json b/app/javascript/dashboard/i18n/locale/uz/contact.json new file mode 100644 index 000000000..87beb282e --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/contact.json @@ -0,0 +1,667 @@ +{ + "CONTACT_PANEL": { + "NOT_AVAILABLE": "Not Available", + "EMAIL_ADDRESS": "Email Address", + "PHONE_NUMBER": "Phone number", + "IDENTIFIER": "Identifier", + "COPY_SUCCESSFUL": "Copied to clipboard successfully", + "COMPANY": "Company", + "LOCATION": "Location", + "BROWSER_LANGUAGE": "Browser Language", + "CONVERSATION_TITLE": "Conversation Details", + "VIEW_PROFILE": "View Profile", + "BROWSER": "Browser", + "OS": "Operating System", + "INITIATED_FROM": "Initiated from", + "INITIATED_AT": "Initiated at", + "IP_ADDRESS": "IP Address", + "CREATED_AT_LABEL": "Created", + "NEW_MESSAGE": "New message", + "CALL": "Call", + "CALL_INITIATED": "Calling the contact…", + "CALL_FAILED": "Unable to start the call. Please try again.", + "WHATSAPP_CALL_PERMISSION_REQUESTED": "Sent a call permission request to the contact. Try again once they accept.", + "WHATSAPP_CALL_PERMISSION_PENDING": "Call permission request already sent recently. Try again once the contact accepts.", + "CLICK_TO_EDIT": "Click to edit", + "VOICE_INBOX_PICKER": { + "TITLE": "Choose a voice inbox" + }, + "CONVERSATIONS": { + "NO_RECORDS_FOUND": "There are no previous conversations associated to this contact.", + "TITLE": "Previous Conversations" + }, + "LABELS": { + "CONTACT": { + "TITLE": "Contact Labels", + "ERROR": "Couldn't update labels" + }, + "CONVERSATION": { + "TITLE": "Conversation Labels", + "ADD_BUTTON": "Add Labels" + }, + "LABEL_SELECT": { + "TITLE": "Add Labels", + "PLACEHOLDER": "Search labels", + "NO_RESULT": "No labels found", + "CREATE_LABEL": "Create new label" + } + }, + "MERGE_CONTACT": "Merge contact", + "CONTACT_ACTIONS": "Contact actions", + "MUTE_CONTACT": "Block Contact", + "UNMUTE_CONTACT": "Unblock Contact", + "MUTED_SUCCESS": "This contact is blocked successfully. You will not be notified of any future conversations.", + "UNMUTED_SUCCESS": "This contact is unblocked successfully.", + "SEND_TRANSCRIPT": "Send Transcript", + "EDIT_LABEL": "Edit", + "SIDEBAR_SECTIONS": { + "CUSTOM_ATTRIBUTES": "Custom Attributes", + "CONTACT_LABELS": "Contact Labels", + "PREVIOUS_CONVERSATIONS": "Previous Conversations", + "NO_RECORDS_FOUND": "No attributes found" + } + }, + "EDIT_CONTACT": { + "BUTTON_LABEL": "Edit Contact", + "TITLE": "Edit contact", + "DESC": "Edit contact details" + }, + "DELETE_CONTACT": { + "BUTTON_LABEL": "Delete Contact", + "TITLE": "Delete contact", + "DESC": "Delete contact details", + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure to delete ", + "YES": "Yes, Delete", + "NO": "No, Keep" + }, + "API": { + "SUCCESS_MESSAGE": "Contact deleted successfully", + "ERROR_MESSAGE": "Could not delete contact. Please try again later." + } + }, + "CONTACT_FORM": { + "FORM": { + "SUBMIT": "Submit", + "CANCEL": "Cancel", + "AVATAR": { + "LABEL": "Contact Avatar" + }, + "NAME": { + "PLACEHOLDER": "Enter the full name of the contact", + "LABEL": "To'liq ism" + }, + "BIO": { + "PLACEHOLDER": "Enter the bio of the contact", + "LABEL": "Bio" + }, + "EMAIL_ADDRESS": { + "PLACEHOLDER": "Enter the email address of the contact", + "LABEL": "Email Address", + "DUPLICATE": "This email address is in use for another contact.", + "ERROR": "Please enter a valid email address." + }, + "PHONE_NUMBER": { + "PLACEHOLDER": "Enter the phone number of the contact", + "LABEL": "Phone Number", + "HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.", + "ERROR": "Phone number should be either empty or of E.164 format", + "DIAL_CODE_ERROR": "Please select a dial code from the list", + "DUPLICATE": "This phone number is in use for another contact." + }, + "LOCATION": { + "PLACEHOLDER": "Enter the location of the contact", + "LABEL": "Location" + }, + "COMPANY_NAME": { + "PLACEHOLDER": "Enter the company name", + "LABEL": "Company Name" + }, + "COUNTRY": { + "PLACEHOLDER": "Enter the country name", + "LABEL": "Country Name", + "SELECT_PLACEHOLDER": "Select", + "REMOVE": "Remove", + "SELECT_COUNTRY": "Select Country" + }, + "CITY": { + "PLACEHOLDER": "Enter the city name", + "LABEL": "City Name" + }, + "SOCIAL_PROFILES": { + "FACEBOOK": { + "PLACEHOLDER": "Enter the Facebook username", + "LABEL": "Facebook" + }, + "TWITTER": { + "PLACEHOLDER": "Enter the Twitter username", + "LABEL": "Twitter" + }, + "LINKEDIN": { + "PLACEHOLDER": "Enter the LinkedIn username", + "LABEL": "LinkedIn" + }, + "GITHUB": { + "PLACEHOLDER": "Enter the Github username", + "LABEL": "Github" + } + } + }, + "DELETE_AVATAR": { + "API": { + "SUCCESS_MESSAGE": "Contact avatar deleted successfully", + "ERROR_MESSAGE": "Could not delete the contact avatar. Please try again later." + } + }, + "SUCCESS_MESSAGE": "Contact saved successfully", + "ERROR_MESSAGE": "There was an error, please try again" + }, + "NEW_CONVERSATION": { + "BUTTON_LABEL": "Start conversation", + "TITLE": "New conversation", + "DESC": "Start a new conversation by sending a new message.", + "NO_INBOX": "Couldn't find an inbox to initiate a new conversation with this contact.", + "FORM": { + "TO": { + "LABEL": "To" + }, + "INBOX": { + "LABEL": "Via Inbox", + "PLACEHOLDER": "Choose source inbox", + "ERROR": "Select an inbox" + }, + "SUBJECT": { + "LABEL": "Subject", + "PLACEHOLDER": "Subject", + "ERROR": "Subject can't be empty" + }, + "MESSAGE": { + "LABEL": "Xabar", + "PLACEHOLDER": "Write your message here", + "ERROR": "Message can't be empty" + }, + "ATTACHMENTS": { + "SELECT": "Choose files", + "HELP_TEXT": "Drag and drop files here or choose files to attach" + }, + "SUBMIT": "Send message", + "CANCEL": "Cancel", + "SUCCESS_MESSAGE": "Message sent!", + "GO_TO_CONVERSATION": "View", + "ERROR_MESSAGE": "Couldn't send! try again" + } + }, + "CONTACTS_PAGE": { + "LIST": { + "TABLE_HEADER": { + "SOCIAL_PROFILES": "Social Profiles" + } + } + }, + "CUSTOM_ATTRIBUTES": { + "BUTTON": "Add custom attribute", + "COPY_SUCCESSFUL": "Copied to clipboard successfully", + "SHOW_MORE": "Show all attributes", + "SHOW_LESS": "Show less attributes", + "ACTIONS": { + "COPY": "Copy attribute", + "DELETE": "Delete attribute", + "EDIT": "Edit attribute" + }, + "ADD": { + "TITLE": "Create custom attribute", + "DESC": "Add custom information to this contact." + }, + "FORM": { + "CREATE": "Add attribute", + "CANCEL": "Cancel", + "NAME": { + "LABEL": "Custom attribute name", + "PLACEHOLDER": "Eg: shopify id", + "ERROR": "Invalid custom attribute name" + }, + "VALUE": { + "LABEL": "Attribute value", + "PLACEHOLDER": "Eg: 11901 " + }, + "ADD": { + "TITLE": "Create new attribute ", + "SUCCESS": "Attribute added successfully", + "ERROR": "Unable to add attribute. Please try again later" + }, + "UPDATE": { + "SUCCESS": "Attribute updated successfully", + "ERROR": "Unable to update attribute. Please try again later" + }, + "DELETE": { + "SUCCESS": "Attribute deleted successfully", + "ERROR": "Unable to delete attribute. Please try again later" + }, + "ATTRIBUTE_SELECT": { + "TITLE": "Add attributes", + "PLACEHOLDER": "Search attributes", + "NO_RESULT": "No attributes found" + }, + "ATTRIBUTE_TYPE": { + "LIST": { + "PLACEHOLDER": "Select value", + "SEARCH_INPUT_PLACEHOLDER": "Search value", + "NO_RESULT": "No result found" + } + } + }, + "VALIDATIONS": { + "REQUIRED": "Valid value is required", + "INVALID_URL": "Invalid URL", + "INVALID_INPUT": "Invalid Input" + } + }, + "MERGE_CONTACTS": { + "TITLE": "Merge contacts", + "DESCRIPTION": "Merge contacts to combine two profiles into one, including all attributes and conversations. In case of conflict, the Primary contact’s attributes will take precedence.", + "PRIMARY": { + "TITLE": "Primary contact", + "HELP_LABEL": "To be deleted" + }, + "PARENT": { + "TITLE": "Contact to merge", + "PLACEHOLDER": "Search for a contact", + "HELP_LABEL": "To be kept" + }, + "SUMMARY": { + "TITLE": "Summary", + "DELETE_WARNING": "Contact of {primaryContactName} will be deleted.", + "ATTRIBUTE_WARNING": "Contact details of {primaryContactName} will be copied to {parentContactName}." + }, + "SEARCH": { + "ERROR_MESSAGE": "Something went wrong. Please try again later." + }, + "FORM": { + "SUBMIT": " Merge contacts", + "CANCEL": "Cancel", + "CHILD_CONTACT": { + "ERROR": "Select a child contact to merge" + }, + "SUCCESS_MESSAGE": "Contact merged successfully", + "ERROR_MESSAGE": "Could not merge contacts, try again!" + }, + "DROPDOWN_ITEM": { + "ID": "(ID: {identifier})" + } + }, + "CONTACTS_LAYOUT": { + "HEADER": { + "TITLE": "Contacts", + "SEARCH_TITLE": "Search contacts", + "ACTIVE_TITLE": "Active contacts", + "SEARCH_PLACEHOLDER": "Search...", + "MESSAGE_BUTTON": "Xabar", + "SEND_MESSAGE": "Send message", + "BLOCK_CONTACT": "Block contact", + "UNBLOCK_CONTACT": "Unblock contact", + "BREADCRUMB": { + "CONTACTS": "Contacts" + }, + "ACTIONS": { + "CONTACT_CREATION": { + "ADD_CONTACT": "Add contact", + "EXPORT_CONTACT": "Export contacts", + "IMPORT_CONTACT": "Import contacts", + "SAVE_CONTACT": "Save contact", + "EMAIL_ADDRESS_DUPLICATE": "This email address is in use for another contact.", + "PHONE_NUMBER_DUPLICATE": "This phone number is in use for another contact.", + "SUCCESS_MESSAGE": "Contact saved successfully", + "ERROR_MESSAGE": "Unable to save contact. Please try again later." + }, + "BLOCK_SUCCESS_MESSAGE": "This contact is blocked successfully", + "BLOCK_ERROR_MESSAGE": "Unable to block contact. Please try again later.", + "UNBLOCK_SUCCESS_MESSAGE": "This contact is unblocked successfully", + "UNBLOCK_ERROR_MESSAGE": "Unable to unblock contact. Please try again later.", + "IMPORT_CONTACT": { + "TITLE": "Import contacts", + "DESCRIPTION": "Import contacts through a CSV file.", + "DOWNLOAD_LABEL": "Download a sample csv.", + "LABEL": "CSV File:", + "CHOOSE_FILE": "Choose file", + "CHANGE": "Change", + "CANCEL": "Cancel", + "IMPORT": "Import", + "SUCCESS_MESSAGE": "You will be notified via email when the import is complete.", + "ERROR_MESSAGE": "There was an error, please try again" + }, + "EXPORT_CONTACT": { + "TITLE": "Export contacts", + "DESCRIPTION": "Quickly export a csv file with comprehensive details of your contacts", + "CONFIRM": "Export", + "SUCCESS_MESSAGE": "Export is in progress. You will be notified on email when the export file is ready to download.", + "ERROR_MESSAGE": "There was an error, please try again" + }, + "SORT_BY": { + "LABEL": "Sort by", + "OPTIONS": { + "NAME": "Name", + "EMAIL": "Email", + "PHONE_NUMBER": "Phone number", + "COMPANY": "Company", + "COUNTRY": "Country", + "CITY": "City", + "LAST_ACTIVITY": "Last activity", + "CREATED_AT": "Created at" + } + }, + "ORDER": { + "LABEL": "Ordering", + "OPTIONS": { + "ASCENDING": "Ascending", + "DESCENDING": "Descending" + } + }, + "FILTERS": { + "CREATE_SEGMENT": { + "TITLE": "Do you want to save this filter?", + "CONFIRM": "Save filter", + "LABEL": "Name", + "PLACEHOLDER": "Enter the name of the filter", + "ERROR": "Enter a valid name", + "SUCCESS_MESSAGE": "Filter saved successfully", + "ERROR_MESSAGE": "Unable to save filter. Please try again later." + }, + "DELETE_SEGMENT": { + "TITLE": "Confirm Deletion", + "DESCRIPTION": "Are you sure you want to delete this filter?", + "CONFIRM": "Yes, Delete", + "CANCEL": "No, Cancel", + "SUCCESS_MESSAGE": "Filter deleted successfully", + "ERROR_MESSAGE": "Unable to delete filter. Please try again later." + } + } + } + }, + "PAGINATION_FOOTER": { + "SHOWING": "Showing {startItem} - {endItem} of {totalItems} contact | Showing {startItem} - {endItem} of {totalItems} contacts" + }, + "FILTER": { + "NAME": "Name", + "EMAIL": "Email", + "PHONE_NUMBER": "Phone number", + "IDENTIFIER": "Identifier", + "COUNTRY": "Country", + "CITY": "City", + "COMPANY": "Company", + "CREATED_AT": "Created at", + "LAST_ACTIVITY": "Last activity", + "REFERER_LINK": "Referer link", + "BLOCKED": "Blocked", + "BLOCKED_TRUE": "True", + "BLOCKED_FALSE": "False", + "BUTTONS": { + "CLEAR_FILTERS": "Clear filters", + "UPDATE_SEGMENT": "Update segment", + "APPLY_FILTERS": "Apply filters", + "ADD_FILTER": "Add filter" + }, + "TITLE": "Filter contacts", + "EDIT_SEGMENT": "Edit segment", + "SEGMENT": { + "LABEL": "Segment name", + "INPUT_PLACEHOLDER": "Enter the name of the segment" + }, + "ACTIVE_FILTERS": { + "MORE_FILTERS": "+ {count} more filters", + "CLEAR_FILTERS": "Clear filters" + } + }, + "CARD": { + "OF": "of", + "VIEW_DETAILS": "View details", + "EDIT_DETAILS_FORM": { + "TITLE": "Edit contact details", + "FORM": { + "FIRST_NAME": { + "PLACEHOLDER": "Enter the first name" + }, + "LAST_NAME": { + "PLACEHOLDER": "Enter the last name" + }, + "EMAIL_ADDRESS": { + "PLACEHOLDER": "Enter the email address", + "DUPLICATE": "This email address is in use for another contact." + }, + "PHONE_NUMBER": { + "PLACEHOLDER": "Enter the phone number", + "DUPLICATE": "This phone number is in use for another contact." + }, + "CITY": { + "PLACEHOLDER": "Enter the city name" + }, + "COUNTRY": { + "PLACEHOLDER": "Select country" + }, + "BIO": { + "PLACEHOLDER": "Enter the bio" + }, + "COMPANY_NAME": { + "PLACEHOLDER": "Enter the company name" + } + }, + "UPDATE_BUTTON": "Update contact", + "SUCCESS_MESSAGE": "Contact updated successfully", + "ERROR_MESSAGE": "Unable to update contact. Please try again later." + }, + "SOCIAL_MEDIA": { + "TITLE": "Edit social links", + "FORM": { + "FACEBOOK": { + "PLACEHOLDER": "Add Facebook" + }, + "GITHUB": { + "PLACEHOLDER": "Add Github" + }, + "INSTAGRAM": { + "PLACEHOLDER": "Add Instagram" + }, + "TELEGRAM": { + "PLACEHOLDER": "Add Telegram" + }, + "TIKTOK": { + "PLACEHOLDER": "Add TikTok" + }, + "LINKEDIN": { + "PLACEHOLDER": "Add LinkedIn" + }, + "TWITTER": { + "PLACEHOLDER": "Add Twitter" + } + } + }, + "DELETE_CONTACT": { + "MESSAGE": "This action is permanent and irreversible.", + "BUTTON": "Delete now" + } + }, + "DETAILS": { + "CREATED_AT": "Created {date}", + "LAST_ACTIVITY": "Last active {date}", + "DELETE_CONTACT_DESCRIPTION": "Permanently delete this contact. This action is irreversible", + "DELETE_CONTACT": "Delete contact", + "DELETE_DIALOG": { + "TITLE": "Confirm Deletion", + "DESCRIPTION": "Are you sure you want to delete this contact?", + "CONFIRM": "Yes, Delete", + "API": { + "SUCCESS_MESSAGE": "Contact deleted successfully", + "ERROR_MESSAGE": "Could not delete contact. Please try again later." + } + }, + "AVATAR": { + "UPLOAD": { + "ERROR_MESSAGE": "Could not upload avatar. Please try again later.", + "SUCCESS_MESSAGE": "Avatar uploaded successfully" + }, + "DELETE": { + "SUCCESS_MESSAGE": "Avatar deleted successfully", + "ERROR_MESSAGE": "Could not delete avatar. Please try again later." + } + } + }, + "SIDEBAR": { + "TABS": { + "ATTRIBUTES": "Attributes", + "HISTORY": "History", + "NOTES": "Notes", + "MEDIA": "Media", + "MERGE": "Merge" + }, + "HISTORY": { + "EMPTY_STATE": "There are no previous conversations associated to this contact" + }, + "ATTRIBUTES": { + "SEARCH_PLACEHOLDER": "Search for attributes", + "UNUSED_ATTRIBUTES": "{count} Used attribute | {count} Unused attributes", + "EMPTY_STATE": "There are no contact custom attributes available in this account. You can create a custom attribute in settings.", + "YES": "Yes", + "NO": "No", + "TRIGGER": { + "SELECT": "Select value", + "INPUT": "Enter value" + }, + "VALIDATIONS": { + "INVALID_NUMBER": "Invalid number", + "REQUIRED": "Valid value is required", + "INVALID_INPUT": "Invalid input", + "INVALID_URL": "Invalid URL", + "INVALID_DATE": "Invalid date" + }, + "NO_ATTRIBUTES": "No attributes found", + "API": { + "SUCCESS_MESSAGE": "Attribute updated successfully", + "DELETE_SUCCESS_MESSAGE": "Attribute deleted successfully", + "UPDATE_ERROR": "Unable to update attribute. Please try again later", + "DELETE_ERROR": "Unable to delete attribute. Please try again later" + } + }, + "MERGE": { + "TITLE": "Merge contact", + "DESCRIPTION": "Combine two profiles into one, including all attributes and conversations. In case of conflict, the primary contact’s attributes will take precedence.", + "PRIMARY": "Primary contact", + "PRIMARY_HELP_LABEL": "To be saved", + "PRIMARY_REQUIRED_ERROR": "Please select a contact to merge with before proceeding", + "PARENT": "To be merged", + "PARENT_HELP_LABEL": "To be deleted", + "EMPTY_STATE": "No contacts found", + "PLACEHOLDER": "Search for primary contact", + "SEARCH_PLACEHOLDER": "Search for a contact", + "SEARCH_ERROR_MESSAGE": "Could not search for contacts. Please try again later.", + "SUCCESS_MESSAGE": "Contact merged successfully", + "ERROR_MESSAGE": "Could not merge contacts, try again!", + "IS_SEARCHING": "Searching...", + "BUTTONS": { + "CANCEL": "Cancel", + "CONFIRM": "Merge contact" + } + }, + "NOTES": { + "PLACEHOLDER": "Add a note", + "WROTE": "wrote", + "YOU": "Siz", + "SAVE": "Save note", + "ADD_NOTE": "Add contact note", + "EXPAND": "Expand", + "COLLAPSE": "Collapse", + "NO_NOTES": "No notes, you can add notes from the contact details page.", + "EMPTY_STATE": "There are no notes associated to this contact. You can add a note by typing in the box above.", + "CONVERSATION_EMPTY_STATE": "There are no notes yet. Use the Add note button to create one." + } + }, + "EMPTY_STATE": { + "TITLE": "No contacts found in this account", + "SUBTITLE": "Start adding new contacts by clicking on the button below", + "BUTTON_LABEL": "Add contact", + "SEARCH_EMPTY_STATE_TITLE": "No contacts matches your search 🔍", + "LIST_EMPTY_STATE_TITLE": "No contacts available in this view 📋", + "ACTIVE_EMPTY_STATE_TITLE": "No contacts are active at the moment 🌙" + }, + "LOAD_MORE": "Load more" + }, + "CONTACTS_BULK_ACTIONS": { + "ASSIGN_LABELS": "Assign Labels", + "REMOVE_LABELS": "Remove Labels", + "ASSIGN_LABELS_SUCCESS": "Labels assigned successfully.", + "ASSIGN_LABELS_FAILED": "Failed to assign labels", + "REMOVE_LABELS_SUCCESS": "Labels removed successfully.", + "REMOVE_LABELS_FAILED": "Failed to remove labels", + "DESCRIPTION": "Select the labels you want to add to the selected contacts.", + "NO_LABELS_FOUND": "No labels available yet.", + "SELECTED_COUNT": "{count} selected", + "CLEAR_SELECTION": "Clear selection", + "SELECT_ALL": "Select all ({count})", + "DELETE_CONTACTS": "Delete", + "DELETE_SUCCESS": "Contacts deleted successfully.", + "DELETE_FAILED": "Failed to delete contacts.", + "DELETE_DIALOG": { + "TITLE": "Delete selected contacts", + "SINGULAR_TITLE": "Delete selected contact", + "DESCRIPTION": "This will permanently delete {count} selected contacts. This action cannot be undone.", + "SINGULAR_DESCRIPTION": "This will permanently delete the selected contact. This action cannot be undone.", + "CONFIRM_MULTIPLE": "Delete contacts", + "CONFIRM_SINGLE": "Delete contact" + } + }, + "COMPOSE_NEW_CONVERSATION": { + "CONTACT_SEARCH": { + "ERROR_MESSAGE": "We couldn’t complete the search. Please try again." + }, + "FORM": { + "GO_TO_CONVERSATION": "View", + "SUCCESS_MESSAGE": "The message was sent successfully!", + "ERROR_MESSAGE": "An error occurred while creating the conversation. Please try again later.", + "NO_INBOX_ALERT": "There are no available inboxes to start a conversation with this contact.", + "CONTACT_SELECTOR": { + "LABEL": "To:", + "TAG_INPUT_PLACEHOLDER": "Enter at least 2 characters to search by name, email, or phone number", + "CONTACT_CREATING": "Creating contact..." + }, + "INBOX_SELECTOR": { + "LABEL": "Via:", + "BUTTON": "Show inboxes" + }, + "EMAIL_OPTIONS": { + "SUBJECT_LABEL": "Subject :", + "SUBJECT_PLACEHOLDER": "Enter your email subject here", + "CC_LABEL": "Cc:", + "CC_PLACEHOLDER": "Enter at least 2 characters to search by email", + "BCC_LABEL": "Bcc:", + "BCC_PLACEHOLDER": "Enter at least 2 characters to search by email", + "BCC_BUTTON": "Bcc" + }, + "MESSAGE_EDITOR": { + "PLACEHOLDER": "Write your message here..." + }, + "WHATSAPP_OPTIONS": { + "LABEL": "Select template", + "SEARCH_PLACEHOLDER": "Search templates", + "EMPTY_STATE": "No templates found", + "TEMPLATE_PARSER": { + "TEMPLATE_NAME": "WhatsApp template: {templateName}", + "VARIABLES": "Variables", + "BACK": "Go back", + "SEND_MESSAGE": "Send message" + } + }, + "TWILIO_OPTIONS": { + "LABEL": "Select template", + "SEARCH_PLACEHOLDER": "Search templates", + "EMPTY_STATE": "No templates found", + "TEMPLATE_PARSER": { + "BACK": "Go back", + "SEND_MESSAGE": "Send message" + } + }, + "ACTION_BUTTONS": { + "DISCARD": "Discard", + "SEND": "Send ({keyCode})" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/contactFilters.json b/app/javascript/dashboard/i18n/locale/uz/contactFilters.json new file mode 100644 index 000000000..4c62f0789 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/contactFilters.json @@ -0,0 +1,60 @@ +{ + "CONTACTS_FILTER": { + "TITLE": "Filter Contacts", + "SUBTITLE": "Add filters below and hit 'Submit' to filter contacts.", + "EDIT_CUSTOM_SEGMENT": "Edit Segment", + "CUSTOM_VIEWS_SUBTITLE": "Add or remove filters and update your segment.", + "ADD_NEW_FILTER": "Add Filter", + "CLEAR_ALL_FILTERS": "Clear All Filters", + "FILTER_DELETE_ERROR": "You should have atleast one filter to save", + "SUBMIT_BUTTON_LABEL": "Submit", + "UPDATE_BUTTON_LABEL": "Update Segment", + "CANCEL_BUTTON_LABEL": "Cancel", + "CLEAR_BUTTON_LABEL": "Clear Filters", + "EMPTY_VALUE_ERROR": "Value is required", + "SEGMENT_LABEL": "Segment Name", + "SEGMENT_QUERY_LABEL": "Segment Query", + "TOOLTIP_LABEL": "Filter contacts", + "QUERY_DROPDOWN_LABELS": { + "AND": "AND", + "OR": "OR" + }, + "OPERATOR_LABELS": { + "equal_to": "Equal to", + "not_equal_to": "Not equal to", + "contains": "Contains", + "does_not_contain": "Does not contain", + "is_present": "Is present", + "is_not_present": "Is not present", + "is_greater_than": "Is greater than", + "is_lesser_than": "Is lesser than", + "days_before": "Is x days before" + }, + "ERRORS": { + "VALUE_REQUIRED": "Value is required" + }, + "ATTRIBUTES": { + "NAME": "Name", + "EMAIL": "Email", + "PHONE_NUMBER": "Phone number", + "IDENTIFIER": "Identifier", + "CITY": "City", + "COUNTRY": "Country", + "CUSTOM_ATTRIBUTE_LIST": "List", + "CUSTOM_ATTRIBUTE_TEXT": "Text", + "CUSTOM_ATTRIBUTE_NUMBER": "Number", + "CUSTOM_ATTRIBUTE_LINK": "Link", + "CUSTOM_ATTRIBUTE_CHECKBOX": "Checkbox", + "CREATED_AT": "Created At", + "LAST_ACTIVITY": "Last Activity", + "REFERER_LINK": "Referrer link", + "BLOCKED": "Blocked", + "LABELS": "Labels" + }, + "GROUPS": { + "STANDARD_FILTERS": "Standard Filters", + "ADDITIONAL_FILTERS": "Additional Filters", + "CUSTOM_ATTRIBUTES": "Custom Attributes" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/contentTemplates.json b/app/javascript/dashboard/i18n/locale/uz/contentTemplates.json new file mode 100644 index 000000000..79c2c8c64 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/contentTemplates.json @@ -0,0 +1,52 @@ +{ + "CONTENT_TEMPLATES": { + "MODAL": { + "TITLE": "Twilio Templates", + "SUBTITLE": "Select the Twilio template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "NO_CONTENT": "No content", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No Twilio templates available. Click refresh to sync templates from Twilio.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + }, + "TYPES": { + "MEDIA": "Media", + "QUICK_REPLY": "Quick Reply", + "CALL_TO_ACTION": "Call to Action", + "TEXT": "Text" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "MEDIA_URL_LABEL": "Enter full media URL", + "MEDIA_URL_PLACEHOLDER": "https://example.com/image.jpg" + }, + "FORM": { + "BACK_BUTTON": "Back", + "SEND_MESSAGE_BUTTON": "Send Message" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/conversation.json b/app/javascript/dashboard/i18n/locale/uz/conversation.json new file mode 100644 index 000000000..fe71b8974 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/conversation.json @@ -0,0 +1,513 @@ +{ + "CONVERSATION": { + "SELECT_A_CONVERSATION": "Please select a conversation from left pane", + "CSAT_REPLY_MESSAGE": "Please rate the conversation", + "404": "Sorry, we cannot find the conversation. Please try again", + "SWITCH_VIEW_LAYOUT": "Switch the layout", + "DASHBOARD_APP_TAB_MESSAGES": "Messages", + "UNVERIFIED_SESSION": "The identity of this user is not verified", + "NO_MESSAGE_1": "Uh oh! Looks like there are no messages from customers in your inbox.", + "NO_MESSAGE_2": " to send a message to your page!", + "NO_INBOX_1": "Hola! Looks like you haven't added any inboxes yet.", + "NO_INBOX_2": " to get started", + "NO_INBOX_AGENT": "Uh Oh! Looks like you are not part of any inbox. Please contact your administrator", + "SEARCH_MESSAGES": "Search for messages in conversations", + "VIEW_ORIGINAL": "View original", + "VIEW_TRANSLATED": "View translated", + "EMPTY_STATE": { + "CMD_BAR": "to open command menu", + "KEYBOARD_SHORTCUTS": "to view keyboard shortcuts" + }, + "SEARCH": { + "TITLE": "Search messages", + "RESULT_TITLE": "Search Results", + "LOADING_MESSAGE": "Crunching data...", + "PLACEHOLDER": "Type any text to search messages", + "NO_MATCHING_RESULTS": "No results found." + }, + "UNREAD_MESSAGES": "Unread Messages", + "UNREAD_MESSAGE": "Unread Message", + "CLICK_HERE": "Click here", + "LOADING_INBOXES": "Loading inboxes", + "LOADING_CONVERSATIONS": "Loading Conversations", + "CANNOT_REPLY": "You cannot reply due to", + "24_HOURS_WINDOW": "24 hour message window restriction", + "48_HOURS_WINDOW": "48 hour message window restriction", + "API_HOURS_WINDOW": "You can only reply to this conversation within {hours} hours", + "NOT_ASSIGNED_TO_YOU": "This conversation is not assigned to you. Would you like to assign this conversation to yourself?", + "ASSIGN_TO_ME": "Assign to me", + "BOT_HANDOFF_MESSAGE": "You are responding to a conversation which is currently handled by an assistant or a bot.", + "BOT_HANDOFF_ACTION": "Mark open and assign to you", + "BOT_HANDOFF_REOPEN_ACTION": "Mark conversation open", + "BOT_HANDOFF_SUCCESS": "Conversation has been handed over to you", + "BOT_HANDOFF_ERROR": "Failed to take over the conversation. Please try again.", + "TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to", + "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction", + "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", + "REPLYING_TO": "You are replying to:", + "REMOVE_SELECTION": "Remove Selection", + "DOWNLOAD": "Download", + "UNKNOWN_FILE_TYPE": "Unknown File", + "SAVE_CONTACT": "Save Contact", + "NO_CONTENT": "No content to display", + "SHARED_ATTACHMENT": { + "CONTACT": "{sender} has shared a contact", + "LOCATION": "{sender} has shared a location", + "FILE": "{sender} has shared a file", + "MEETING": "{sender} has started a meeting" + }, + "UPLOADING_ATTACHMENTS": "Uploading attachments...", + "REPLIED_TO_STORY": "Replied to your story", + "UNSUPPORTED_MESSAGE": "This message is unsupported. To view it, please open it on the original platform.", + "UNSUPPORTED_MESSAGE_FACEBOOK": "This message is unsupported. You can view this message on the Facebook Messenger app.", + "UNSUPPORTED_MESSAGE_INSTAGRAM": "This message is unsupported. You can view this message on the Instagram app.", + "UNSUPPORTED_MESSAGE_TIKTOK": "This message is unsupported. You can view this message on the TikTok app.", + "UNSUPPORTED_MESSAGE_WHATSAPP": "This message is unsupported. You can view this message on the WhatsApp app.", + "SUCCESS_DELETE_MESSAGE": "Message deleted successfully", + "FAIL_DELETE_MESSSAGE": "Couldn't delete message! Try again", + "NO_RESPONSE": "No response", + "RESPONSE": "Response", + "RATING_TITLE": "Rating", + "FEEDBACK_TITLE": "Feedback", + "REPLY_MESSAGE_NOT_FOUND": "Message not available", + "CARD": { + "SHOW_LABELS": "Show labels", + "HIDE_LABELS": "Hide labels", + "LABELS_COUNT": "{count} labels" + }, + "VOICE_CALL": { + "INCOMING_CALL": "Incoming call", + "OUTGOING_CALL": "Outgoing call", + "CALL_IN_PROGRESS": "Call in progress", + "NO_ANSWER": "No answer", + "NO_ANSWER_OUTBOUND_LABEL": "No answer", + "NO_ANSWER_OUTBOUND_SUBTEXT": "Contact didn't pick up", + "MISSED_CALL": "Missed call", + "MISSED_CALL_INBOUND_SUBTEXT": "No agent picked up", + "MISSED_CALL_DECLINED_BY": "Declined by {agentName}", + "CALL_ENDED": "Call ended", + "HANDLED_BY": "Handled by {agentName}", + "NOT_ANSWERED_YET": "Not answered yet", + "CALLING": "Calling…", + "THEY_ANSWERED": "They answered", + "YOU_ANSWERED": "You answered", + "AGENT_ANSWERED": "{agentName} answered", + "JOIN_CALL": "Join call", + "CALL_BACK": "Call back", + "TRANSCRIPT_SHOW_MORE": "Show more", + "TRANSCRIPT_SHOW_LESS": "Show less" + }, + "HEADER": { + "RESOLVE_ACTION": "Resolve", + "REOPEN_ACTION": "Reopen", + "OPEN_ACTION": "Open", + "MORE_ACTIONS": "More actions", + "OPEN": "More", + "CLOSE": "Close", + "DETAILS": "details", + "COPY_ID_SUCCESS": "Conversation ID copied to clipboard", + "SNOOZED_UNTIL": "Snoozed until", + "SNOOZED_UNTIL_TOMORROW": "Snoozed until tomorrow", + "SNOOZED_UNTIL_NEXT_WEEK": "Snoozed until next week", + "SNOOZED_UNTIL_NEXT_REPLY": "Snoozed until next reply", + "WHATSAPP_CALL": "Start WhatsApp call", + "WHATSAPP_CALL_FAILED": "Could not start the WhatsApp call.", + "VOICE_CALL": "Start call", + "VOICE_CALL_FAILED": "Could not start the call.", + "WHATSAPP_CALL_PERMISSION_REQUESTED": "Sent a call permission request to the contact. Try again once they accept.", + "WHATSAPP_CALL_PERMISSION_PENDING": "Call permission request already sent recently. Try again once the contact accepts.", + "SLA_STATUS": { + "FRT": "FRT {status}", + "NRT": "NRT {status}", + "RT": "RT {status}", + "MISSED": "missed", + "DUE": "due" + } + }, + "RESOLVE_DROPDOWN": { + "MARK_PENDING": "Mark as pending", + "SNOOZE_UNTIL": "Snooze", + "SNOOZE": { + "TITLE": "Snooze until", + "NEXT_REPLY": "Next reply", + "TOMORROW": "Tomorrow", + "NEXT_WEEK": "Next week" + } + }, + "MENTION": { + "AGENTS": "Agents", + "TEAMS": "Teams" + }, + "CUSTOM_SNOOZE": { + "TITLE": "Snooze until", + "APPLY": "Snooze", + "CANCEL": "Cancel" + }, + "PRIORITY": { + "TITLE": "Priority", + "OPTIONS": { + "NONE": "None", + "URGENT": "Urgent", + "HIGH": "High", + "MEDIUM": "Medium", + "LOW": "Low" + }, + "CHANGE_PRIORITY": { + "SELECT_PLACEHOLDER": "None", + "INPUT_PLACEHOLDER": "Select priority", + "NO_RESULTS": "No results found", + "SUCCESSFUL": "Changed priority of conversation id {conversationId} to {priority}", + "FAILED": "Couldn't change priority. Please try again." + } + }, + "DELETE_CONVERSATION": { + "TITLE": "Delete conversation #{conversationId}", + "DESCRIPTION": "Are you sure you want to delete this conversation?", + "CONFIRM": "Delete" + }, + "CARD_CONTEXT_MENU": { + "PENDING": "Mark as pending", + "RESOLVED": "Mark as resolved", + "MARK_AS_UNREAD": "Mark as unread", + "MARK_AS_READ": "Mark as read", + "REOPEN": "Reopen conversation", + "SNOOZE": { + "TITLE": "Snooze", + "NEXT_REPLY": "Until next reply", + "TOMORROW": "Until tomorrow", + "NEXT_WEEK": "Until next week" + }, + "ASSIGN_AGENT": "Assign agent", + "ASSIGN_LABEL": "Assign label", + "AGENTS_LOADING": "Loading agents...", + "ASSIGN_TEAM": "Assign team", + "DELETE": "Delete conversation", + "OPEN_IN_NEW_TAB": "Open in new tab", + "COPY_LINK": "Copy conversation link", + "COPY_LINK_SUCCESS": "Conversation link copied to clipboard", + "API": { + "AGENT_ASSIGNMENT": { + "SUCCESFUL": "Conversation id {conversationId} assigned to \"{agentName}\"", + "FAILED": "Couldn't assign agent. Please try again." + }, + "LABEL_ASSIGNMENT": { + "SUCCESFUL": "Assigned label #{labelName} to conversation id {conversationId}", + "FAILED": "Couldn't assign label. Please try again." + }, + "LABEL_REMOVAL": { + "SUCCESFUL": "Removed label #{labelName} from conversation id {conversationId}", + "FAILED": "Couldn't remove label. Please try again." + }, + "TEAM_ASSIGNMENT": { + "SUCCESFUL": "Assigned team \"{team}\" to conversation id {conversationId}", + "FAILED": "Couldn't assign team. Please try again." + } + } + }, + "FOOTER": { + "MESSAGE_SIGN_TOOLTIP": "Message signature", + "ENABLE_SIGN_TOOLTIP": "Enable signature", + "DISABLE_SIGN_TOOLTIP": "Disable signature", + "MSG_INPUT": "Shift + enter for new line. Start with '/' to select a Canned Response.", + "PRIVATE_MSG_INPUT": "Shift + enter for new line. This will be visible only to Agents", + "MESSAGING_RESTRICTED": "You cannot reply to this conversation", + "MESSAGING_RESTRICTED_WHATSAPP": "You can only reply using a template message due to 24-hour message window restriction", + "MESSAGING_RESTRICTED_API": "You can only reply using a template message due to message window restriction", + "MESSAGE_SIGNATURE_NOT_CONFIGURED": "Message signature is not configured, please configure it in profile settings.", + "COPILOT_MSG_INPUT": "Give copilot additional prompts, or ask anything else... Press enter to send follow-up", + "CLICK_HERE": "Click here to update", + "WHATSAPP_TEMPLATES": "Whatsapp Templates" + }, + "REPLYBOX": { + "REPLY": "Reply", + "PRIVATE_NOTE": "Private Note", + "SEND": "Send", + "CREATE": "Add Note", + "INSERT_READ_MORE": "Read more", + "DISMISS_REPLY": "Dismiss reply", + "REPLYING_TO": "Replying to:", + "TIP_EMOJI_ICON": "Show emoji selector", + "TIP_ATTACH_ICON": "Attach files", + "TIP_AUDIORECORDER_ICON": "Record audio", + "TIP_AUDIORECORDER_PERMISSION": "Allow access to audio", + "TIP_AUDIORECORDER_ERROR": "Could not open the audio", + "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", + "DRAG_DROP": "Drag and drop here to attach", + "IMAGE_UPLOAD_SUCCESS": "Image uploaded successfully", + "START_AUDIO_RECORDING": "Start audio recording", + "STOP_AUDIO_RECORDING": "Stop audio recording", + "COPILOT_THINKING": "Copilot is thinking", + "EMAIL_HEAD": { + "TO": "TO", + "ADD_BCC": "Add bcc", + "CC": { + "LABEL": "CC", + "PLACEHOLDER": "Emails separated by commas", + "ERROR": "Please enter valid email addresses" + }, + "BCC": { + "LABEL": "BCC", + "PLACEHOLDER": "Emails separated by commas", + "ERROR": "Please enter valid email addresses" + } + }, + "UNDEFINED_VARIABLES": { + "TITLE": "Undefined variables", + "MESSAGE": "You have {undefinedVariablesCount} undefined variables in your message: {undefinedVariables}. Would you like to send the message anyway?", + "CONFIRM": { + "YES": "Send", + "CANCEL": "Cancel" + } + }, + "QUOTED_REPLY": { + "ENABLE_TOOLTIP": "Include quoted email thread", + "DISABLE_TOOLTIP": "Don't include quoted email thread", + "REMOVE_PREVIEW": "Remove quoted email thread", + "COLLAPSE": "Collapse preview", + "EXPAND": "Expand preview" + } + }, + "VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team", + "CHANGE_STATUS": "Conversation status changed", + "CHANGE_STATUS_FAILED": "Conversation status change failed", + "CHANGE_AGENT": "Conversation Assignee changed", + "CHANGE_AGENT_FAILED": "Assignee change failed", + "ASSIGN_LABEL_SUCCESFUL": "Label assigned successfully", + "ASSIGN_LABEL_FAILED": "Label assignment failed", + "CHANGE_TEAM": "Conversation team changed", + "SUCCESS_DELETE_CONVERSATION": "Conversation deleted successfully", + "FAIL_DELETE_CONVERSATION": "Couldn't delete conversation! Try again", + "FILE_SIZE_LIMIT": "File exceeds the {MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE} MB attachment limit", + "FILE_TYPE_NOT_SUPPORTED": "This {fileName} file type is not supported in this conversation", + "MESSAGE_ERROR": "Unable to send this message, please try again later", + "SENT_BY": "Sent by:", + "BOT": "Bot", + "NATIVE_APP": "Native app", + "NATIVE_APP_ADVISORY": "This message was sent from the native app. Reply from Chatwoot to maintain the message window.", + "SEND_FAILED": "Couldn't send message! Try again", + "TRY_AGAIN": "retry", + "ASSIGNMENT": { + "SELECT_AGENT": "Select Agent", + "REMOVE": "Remove", + "ASSIGN": "Assign" + }, + "CONTEXT_MENU": { + "COPY": "Copy", + "REPLY_TO": "Reply to this message", + "DELETE": "Delete", + "CREATE_A_CANNED_RESPONSE": "Add to canned responses", + "TRANSLATE": "Translate", + "COPY_PERMALINK": "Copy link to the message", + "LINK_COPIED": "Message URL copied to the clipboard", + "DELETE_CONFIRMATION": { + "TITLE": "Are you sure you want to delete this message?", + "MESSAGE": "You cannot undo this action", + "DELETE": "Delete", + "CANCEL": "Cancel" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Description", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } + } + }, + "SIDEBAR": { + "CONTACT": "Contact", + "COPILOT": "Copilot" + }, + "VOICE_WIDGET": { + "INCOMING_CALL": "Incoming call", + "OUTGOING_CALL": "Outgoing call", + "CALL_IN_PROGRESS": "Call in progress", + "NOT_ANSWERED_YET": "Not answered yet", + "HANDLED_IN_ANOTHER_TAB": "Being handled in another tab", + "REJECT_CALL": "Reject", + "DISMISS_CALL": "Dismiss", + "JOIN_CALL": "Join call", + "END_CALL": "End call", + "MUTE": "Mute mic", + "UNMUTE": "Unmute mic", + "VIEW_CHAT_HISTORY": "View chat history", + "GO_TO_CONVERSATION": "Go to conversation thread" + } + }, + "EMAIL_TRANSCRIPT": { + "TITLE": "Send conversation transcript", + "DESC": "Send a copy of the conversation transcript to the specified email address", + "SUBMIT": "Submit", + "CANCEL": "Cancel", + "SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully", + "SEND_EMAIL_ERROR": "There was an error, please try again", + "SEND_EMAIL_PAYMENT_REQUIRED": "Email transcript is not available on your current plan. Please upgrade to use this feature.", + "FORM": { + "SEND_TO_CONTACT": "Send the transcript to the customer", + "SEND_TO_AGENT": "Send the transcript to the assigned agent", + "SEND_TO_OTHER_EMAIL_ADDRESS": "Send the transcript to another email address", + "EMAIL": { + "PLACEHOLDER": "Enter an email address", + "ERROR": "Please enter a valid email address" + } + } + }, + "ONBOARDING": { + "TITLE": "Hey 👋, Welcome to {installationName}!", + "DESCRIPTION": "Thanks for signing up. We want you to get the most out of {installationName}. Here are a few things you can do in {installationName} to make the experience delightful.", + "GREETING_MORNING": "👋 Good morning, {name}. Welcome to {installationName}.", + "GREETING_AFTERNOON": "👋 Good afternoon, {name}. Welcome to {installationName}.", + "GREETING_EVENING": "👋 Good evening, {name}. Welcome to {installationName}.", + "READ_LATEST_UPDATES": "Read our latest updates", + "ALL_CONVERSATION": { + "TITLE": "All your conversations in one place", + "DESCRIPTION": "View all the conversations from your customers in one single dashboard. You can filter the conversations by the incoming channel, label and status.", + "NEW_LINK": "Click here to create an inbox" + }, + "TEAM_MEMBERS": { + "TITLE": "Invite your team members", + "DESCRIPTION": "Since you are getting ready to talk to your customer, bring in your teammates to assist you. You can invite your teammates by adding their email addresses to the agent list.", + "NEW_LINK": "Click here to invite a team member" + }, + "LABELS": { + "TITLE": "Organize conversations with labels", + "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enquiry, #billing-question etc., so that you can use them in a conversation later.", + "NEW_LINK": "Click here to create tags" + }, + "CANNED_RESPONSES": { + "TITLE": "Create canned responses", + "DESCRIPTION": "Pre-written quick reply templates help you quickly respond to a conversation. Agents can type the '/' character followed by the shortcode to insert a response.", + "NEW_LINK": "Click here to create a canned response" + } + }, + "CONVERSATION_SIDEBAR": { + "ASSIGNEE_LABEL": "Assigned Agent", + "SELF_ASSIGN": "Assign to me", + "TEAM_LABEL": "Assigned Team", + "SELECT": { + "PLACEHOLDER": "None" + }, + "ACCORDION": { + "CONTACT_DETAILS": "Contact Details", + "CONVERSATION_ACTIONS": "Conversation Actions", + "CONVERSATION_LABELS": "Conversation Labels", + "CONVERSATION_INFO": "Conversation Information", + "CONTACT_NOTES": "Contact Notes", + "CONTACT_ATTRIBUTES": "Contact Attributes", + "PREVIOUS_CONVERSATION": "Previous Conversations", + "MACROS": "Macros", + "LINEAR_ISSUES": "Linked Linear Issues", + "SHOPIFY_ORDERS": "Shopify Orders", + "SHARED_FILES": "Attachments" + }, + "SHARED_FILES": { + "EMPTY": "No attachments yet", + "DOWNLOAD": "Download file", + "DOWNLOAD_ERROR": "Could not download the file. Please try again.", + "MEDIA_HEADING": "Media", + "FILES_HEADING": "Files", + "VIEW_ALL": "View all", + "SHOW_LESS": "Show less", + "MORE_COUNT": "+{count}", + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" + }, + "SHOPIFY": { + "ORDER_ID": "Order #{id}", + "ERROR": "Error loading orders", + "NO_SHOPIFY_ORDERS": "No orders found", + "FINANCIAL_STATUS": { + "PENDING": "Pending", + "AUTHORIZED": "Authorized", + "PARTIALLY_PAID": "Partially Paid", + "PAID": "Paid", + "PARTIALLY_REFUNDED": "Partially Refunded", + "REFUNDED": "Refunded", + "VOIDED": "Voided" + }, + "FULFILLMENT_STATUS": { + "FULFILLED": "Fulfilled", + "PARTIALLY_FULFILLED": "Partially Fulfilled", + "UNFULFILLED": "Unfulfilled" + } + } + }, + "CONVERSATION_CUSTOM_ATTRIBUTES": { + "ADD_BUTTON_TEXT": "Create attribute", + "NO_RECORDS_FOUND": "No attributes found", + "UPDATE": { + "SUCCESS": "Attribute updated successfully", + "ERROR": "Unable to update attribute. Please try again later" + }, + "ADD": { + "TITLE": "Add", + "SUCCESS": "Attribute added successfully", + "ERROR": "Unable to add attribute. Please try again later" + }, + "DELETE": { + "SUCCESS": "Attribute deleted successfully", + "ERROR": "Unable to delete attribute. Please try again later" + }, + "ATTRIBUTE_SELECT": { + "TITLE": "Add attributes", + "PLACEHOLDER": "Search attributes", + "NO_RESULT": "No attributes found" + } + }, + "EMAIL_HEADER": { + "FROM": "From", + "TO": "To", + "BCC": "Bcc", + "CC": "Cc", + "SUBJECT": "Subject", + "EXPAND": "Expand email" + }, + "CONVERSATION_PARTICIPANTS": { + "SIDEBAR_MENU_TITLE": "Participating", + "SIDEBAR_TITLE": "Conversation participants", + "NO_RECORDS_FOUND": "No results found", + "ADD_PARTICIPANTS": "Select participants", + "REMANING_PARTICIPANTS_TEXT": "+{count} others", + "REMANING_PARTICIPANT_TEXT": "+{count} other", + "TOTAL_PARTICIPANTS_TEXT": "{count} people are participating.", + "TOTAL_PARTICIPANT_TEXT": "{count} person is participating.", + "NO_PARTICIPANTS_TEXT": "No one is participating!.", + "WATCH_CONVERSATION": "Join conversation", + "YOU_ARE_WATCHING": "You are participating", + "API": { + "ERROR_MESSAGE": "Could not update, try again!", + "SUCCESS_MESSAGE": "Participants updated!" + } + }, + "TRANSLATE_MODAL": { + "TITLE": "View translated content", + "DESC": "You can view the translated content in each langauge.", + "ORIGINAL_CONTENT": "Original Content", + "TRANSLATED_CONTENT": "Translated Content", + "NO_TRANSLATIONS_AVAILABLE": "No translations are available for this content" + }, + "TYPING": { + "ONE": "{user} is typing", + "TWO": "{user} and {secondUser} are typing", + "MULTIPLE": "{user} and {count} others are typing" + }, + "COPILOT": { + "TRY_THESE_PROMPTS": "Try these prompts" + }, + "GALLERY_VIEW": { + "ERROR_DOWNLOADING": "Unable to download attachment. Please try again" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/csatMgmt.json b/app/javascript/dashboard/i18n/locale/uz/csatMgmt.json new file mode 100644 index 000000000..9e16dc2b3 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/csatMgmt.json @@ -0,0 +1,13 @@ +{ + "CSAT": { + "TITLE": "Rate your conversation", + "PLACEHOLDER": "Tell us more...", + "RATINGS": { + "POOR": "😞 Poor", + "FAIR": "😑 Fair", + "AVERAGE": "😐 Average", + "GOOD": "😀 Good", + "EXCELLENT": "😍 Excellent" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/customRole.json b/app/javascript/dashboard/i18n/locale/uz/customRole.json new file mode 100644 index 000000000..f7c1709bd --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/customRole.json @@ -0,0 +1,94 @@ +{ + "CUSTOM_ROLE": { + "HEADER": "Custom Roles", + "LEARN_MORE": "Learn more about custom roles", + "DESCRIPTION": "Custom roles are roles that are created by the account owner or admin. These roles can be assigned to agents to define their access and permissions within the account. Custom roles can be created with specific permissions and access levels to suit the requirements of the organization.", + "COUNT": "{n} custom role | {n} custom roles", + "HEADER_BTN_TXT": "Add custom role", + "LOADING": "Fetching custom roles...", + "SEARCH_PLACEHOLDER": "Search custom roles...", + "NO_RESULTS": "No custom roles found matching your search", + "SEARCH_404": "There are no items matching this query.", + "PAYWALL": { + "TITLE": "Upgrade to create custom roles", + "AVAILABLE_ON": "The custom role feature is only available in the Business and Enterprise plans.", + "UPGRADE_PROMPT": "Upgrade your plan to get access to advanced features like team management, automations, custom attributes, and more.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "You can change or cancel your plan anytime" + }, + "ENTERPRISE_PAYWALL": { + "AVAILABLE_ON": "The custom role feature is only available in the paid plans.", + "UPGRADE_PROMPT": "Upgrade to a paid plan to access advanced features like audit logs, agent capacity, and more.", + "ASK_ADMIN": "Please reach out to your administrator for the upgrade." + }, + "LIST": { + "404": "There are no custom roles available in this account.", + "TITLE": "Manage custom roles", + "DESC": "Custom roles are roles that are created by the account owner or admin. These roles can be assigned to agents to define their access and permissions within the account. Custom roles can be created with specific permissions and access levels to suit the requirements of the organization.", + "TABLE_HEADER": { + "NAME": "Name", + "DESCRIPTION": "Description", + "PERMISSIONS": "Permissions", + "ACTIONS": "Actions" + } + }, + "PERMISSIONS": { + "CONVERSATION_MANAGE": "Manage all conversations", + "CONVERSATION_UNASSIGNED_MANAGE": "Manage unassigned conversations and those assigned to them", + "CONVERSATION_PARTICIPATING_MANAGE": "Manage participating conversations and those assigned to them", + "CONTACT_MANAGE": "Manage contacts", + "REPORT_MANAGE": "Manage reports", + "KNOWLEDGE_BASE_MANAGE": "Manage knowledge base" + }, + "FORM": { + "NAME": { + "LABEL": "Name", + "PLACEHOLDER": "Please enter a name.", + "ERROR": "Name is required." + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Please enter a description.", + "ERROR": "Description is required." + }, + "PERMISSIONS": { + "LABEL": "Permissions", + "ERROR": "Permissions are required." + }, + "CANCEL_BUTTON_TEXT": "Cancel", + "API": { + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." + } + }, + "ADD": { + "TITLE": "Add custom role", + "DESC": " Custom roles allows you to create roles with specific permissions and access levels to suit the requirements of the organization.", + "SUBMIT": "Submit", + "API": { + "SUCCESS_MESSAGE": "Custom role added successfully." + } + }, + "EDIT": { + "BUTTON_TEXT": "Edit", + "TITLE": "Edit custom role", + "DESC": " Custom roles allows you to create roles with specific permissions and access levels to suit the requirements of the organization.", + "SUBMIT": "Update", + "API": { + "SUCCESS_MESSAGE": "Custom role updated successfully." + } + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "API": { + "SUCCESS_MESSAGE": "Custom role deleted successfully.", + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." + }, + "CONFIRM": { + "TITLE": "Confirm deletion", + "MESSAGE": "Are you sure to delete ", + "YES": "Yes, delete ", + "NO": "No, keep " + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/datePicker.json b/app/javascript/dashboard/i18n/locale/uz/datePicker.json new file mode 100644 index 000000000..95d304cc6 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/datePicker.json @@ -0,0 +1,24 @@ +{ + "DATE_PICKER": { + "PREVIOUS_PERIOD": "Previous period", + "NEXT_PERIOD": "Next period", + "WEEK_NUMBER": "Week #{weekNumber}", + "APPLY_BUTTON": "Apply", + "CLEAR_BUTTON": "Clear", + "DATE_RANGE_INPUT": { + "START": "Start Date", + "END": "End Date" + }, + "DATE_RANGE_OPTIONS": { + "TITLE": "DATE RANGE", + "LAST_7_DAYS": "Last 7 days", + "LAST_30_DAYS": "Last 30 days", + "LAST_3_MONTHS": "Last 3 months", + "LAST_6_MONTHS": "Last 6 months", + "LAST_YEAR": "Last year", + "THIS_WEEK": "This week", + "MONTH_TO_DATE": "This month", + "CUSTOM_RANGE": "Custom date range" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/emoji.json b/app/javascript/dashboard/i18n/locale/uz/emoji.json new file mode 100644 index 000000000..2370dff54 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/emoji.json @@ -0,0 +1,35 @@ +{ + "EMOJI": { + "PLACEHOLDER": "Search emojis", + "NOT_FOUND": "No emoji match your search", + "REMOVE": "Remove" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Qidiruvga mos emoji topilmadi", + "NO_ICON": "No icons match your search", + "REMOVE": "Remove", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/general.json b/app/javascript/dashboard/i18n/locale/uz/general.json new file mode 100644 index 000000000..bdc7cb8a4 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/general.json @@ -0,0 +1,19 @@ +{ + "GENERAL": { + "SHOWING_RESULTS": "Showing {firstIndex}-{lastIndex} of {totalCount} items", + "PHONE_INPUT": { + "PLACEHOLDER": "Search", + "EMPTY_STATE": "No results found" + }, + "CLOSE": "Close", + "BETA": "Beta", + "BETA_DESCRIPTION": "This feature is in beta and may change as we improve it.", + "ACCEPT": "Accept", + "DISCARD": "Discard", + "PREFERRED": "Preferred" + }, + "CHOICE_TOGGLE": { + "YES": "Yes", + "NO": "No" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/generalSettings.json b/app/javascript/dashboard/i18n/locale/uz/generalSettings.json new file mode 100644 index 000000000..fab8020e2 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/generalSettings.json @@ -0,0 +1,252 @@ +{ + "GENERAL_SETTINGS": { + "LIMIT_MESSAGES": { + "CONVERSATION": "You have exceeded the conversation limit. Hacker plan allows only 500 conversations.", + "INBOXES": "You have exceeded the inbox limit. Hacker plan only supports website live-chat. Additional inboxes like email, WhatsApp etc. require a paid plan.", + "AGENTS": "You have exceeded the agent limit. Your plan only allows {allowedAgents} agents.", + "NON_ADMIN": "Please contact your administrator to upgrade the plan and continue using all features." + }, + "TITLE": "Account settings", + "SUBMIT": "Update settings", + "BACK": "Back", + "DISMISS": "Dismiss", + "UPDATE": { + "ERROR": "Could not update settings, try again!", + "SUCCESS": "Successfully updated account settings" + }, + "ACCOUNT_DELETE_SECTION": { + "TITLE": "Delete your Account", + "NOTE": "Once you delete your account, all your data will be deleted.", + "BUTTON_TEXT": "Delete Your Account", + "CONFIRM": { + "TITLE": "Delete Account", + "MESSAGE": "Deleting your Account is irreversible. Enter your account name below to confirm you want to permanently delete it.", + "BUTTON_TEXT": "Delete", + "DISMISS": "Cancel", + "PLACE_HOLDER": "Please type {accountName} to confirm" + }, + "SUCCESS": "Account marked for deletion", + "FAILURE": "Could not delete account, try again!", + "SCHEDULED_DELETION": { + "TITLE": "Account Scheduled for Deletion", + "MESSAGE_MANUAL": "This account is scheduled for deletion on {deletionDate}. This was requested by an administrator. You can cancel the deletion before this date.", + "MESSAGE_INACTIVITY": "This account is scheduled for deletion on {deletionDate} due to account inactivity. You can cancel the deletion before this date.", + "CLEAR_BUTTON": "Cancel Scheduled Deletion" + } + }, + "FORM": { + "ERROR": "Please fix form errors", + "GENERAL_SECTION": { + "TITLE": "General settings", + "NOTE": "" + }, + "ACCOUNT_ID": { + "TITLE": "Account ID", + "NOTE": "This ID is required if you are building an API based integration" + }, + "AUTO_RESOLVE": { + "TITLE": "Auto-resolve conversations", + "NOTE": "This configuration would allow you to automatically resolve the conversation after a certain period of inactivity.", + "DURATION": { + "LABEL": "Inactivity duration", + "HELP": "Time period of inactivity after which conversation is auto-resolved", + "PLACEHOLDER": "30", + "ERROR": "Auto resolve duration should be between 10 minutes and 999 days", + "API": { + "SUCCESS": "Auto resolve settings updated successfully", + "ERROR": "Failed to update auto resolve settings" + } + }, + "MESSAGE": { + "LABEL": "Custom auto-resolution message", + "PLACEHOLDER": "Conversation was marked resolved by system due to 15 days of inactivity", + "HELP": "Message sent to the customer after conversation is auto-resolved" + }, + "PREFERENCES": "Preferences", + "LABEL": { + "LABEL": "Add label after auto-resolution", + "PLACEHOLDER": "Select a label" + }, + "IGNORE_WAITING": { + "LABEL": "Skip conversations waiting for agent’s reply" + }, + "UPDATE_BUTTON": "Save Changes" + }, + "NAME": { + "LABEL": "Account name", + "PLACEHOLDER": "Your account name", + "ERROR": "Please enter a valid account name" + }, + "LANGUAGE": { + "LABEL": "Site language", + "PLACEHOLDER": "Your account name", + "ERROR": "" + }, + "DOMAIN": { + "LABEL": "Incoming Email Domain", + "PLACEHOLDER": "The domain where you will receive the emails", + "ERROR": "" + }, + "SUPPORT_EMAIL": { + "LABEL": "Support Email", + "PLACEHOLDER": "Your company's support email", + "ERROR": "" + }, + "AUTO_RESOLVE_IGNORE_WAITING": { + "LABEL": "Exclude unattended conversations", + "HELP": "When enabled, the system will skip resolving conversations that are still waiting for an agent's reply." + }, + "AUDIO_TRANSCRIPTION": { + "TITLE": "Transcribe Audio Messages", + "NOTE": "Automatically transcribe audio messages in conversations. Generate a text transcript whenever an audio message is sent or received, and display it alongside the message.", + "API": { + "SUCCESS": "Audio transcription setting updated successfully", + "ERROR": "Failed to update audio transcription setting" + } + }, + "AUTO_RESOLVE_DURATION": { + "LABEL": "Inactivity duration for resolution", + "HELP": "Duration after a conversation should auto resolve if there is no activity", + "PLACEHOLDER": "30", + "ERROR": "Auto resolve duration should be between 10 minutes and 999 days", + "API": { + "SUCCESS": "Auto resolve settings updated successfully", + "ERROR": "Failed to update auto resolve settings" + }, + "UPDATE_BUTTON": "Update", + "MESSAGE_LABEL": "Custom resolution message", + "MESSAGE_PLACEHOLDER": "Conversation was marked resolved by system due to 15 days of inactivity", + "MESSAGE_HELP": "This message is sent to the customer when a conversation is automatically resolved by the system due to inactivity." + }, + "FEATURES": { + "INBOUND_EMAIL_ENABLED": "Conversation continuity with emails is enabled for your account.", + "CUSTOM_EMAIL_DOMAIN_ENABLED": "You can receive emails in your custom domain now." + } + }, + "UPDATE_CHATWOOT": "An update {latestChatwootVersion} for Chatwoot is available. Please update your instance.", + "LEARN_MORE": "Learn more", + "PAYMENT_PENDING": "Your payment is pending. Please update your payment information to continue using Chatwoot", + "UPGRADE": "Upgrade to continue using Chatwoot", + "LIMITS_UPGRADE": "Your account has exceeded the usage limits, please upgrade your plan to continue using Chatwoot", + "OPEN_BILLING": "Open billing" + }, + "FORMS": { + "MULTISELECT": { + "ENTER_TO_SELECT": "Press enter to select", + "ENTER_TO_REMOVE": "Press enter to remove", + "NO_OPTIONS": "List is empty", + "SELECT_ONE": "Select one", + "SELECT": "Select" + } + }, + "NOTIFICATIONS_PAGE": { + "HEADER": "Notifications", + "MARK_ALL_DONE": "Mark All Done", + "DELETE_TITLE": "deleted", + "UNREAD_NOTIFICATION": { + "TITLE": "Unread Notifications", + "ALL_NOTIFICATIONS": "View all notifications", + "LOADING_UNREAD_MESSAGE": "Loading unread notifications...", + "EMPTY_MESSAGE": "You have no unread notifications" + }, + "LIST": { + "LOADING_MESSAGE": "Loading notifications...", + "404": "No Notifications", + "TABLE_HEADER": [ + "Name", + "Phone Number", + "Conversations", + "Last Contacted" + ] + }, + "TYPE_LABEL": { + "conversation_creation": "New conversation", + "conversation_assignment": "Conversation Assigned", + "assigned_conversation_new_message": "New Message", + "participating_conversation_new_message": "New Message", + "conversation_mention": "Mention", + "sla_missed_first_response": "SLA Missed", + "sla_missed_next_response": "SLA Missed", + "sla_missed_resolution": "SLA Missed" + } + }, + "NETWORK": { + "NOTIFICATION": { + "OFFLINE": "Offline", + "RECONNECTING": "Reconnecting...", + "RECONNECT_SUCCESS": "Reconnected" + }, + "BUTTON": { + "REFRESH": "Refresh" + } + }, + "COMMAND_BAR": { + "SEARCH_PLACEHOLDER": "Search or jump to", + "SNOOZE_PLACEHOLDER": "Type a time e.g. tomorrow, 2 hours, next friday, jan 15...", + "SECTIONS": { + "GENERAL": "General", + "REPORTS": "Reports", + "CONVERSATION": "Conversation", + "BULK_ACTIONS": "Bulk Actions", + "CHANGE_ASSIGNEE": "Change Assignee", + "CHANGE_PRIORITY": "Change Priority", + "CHANGE_TEAM": "Change Team", + "SNOOZE_CONVERSATION": "Snooze Conversation", + "ADD_LABEL": "Add label to the conversation", + "REMOVE_LABEL": "Remove label from the conversation", + "SETTINGS": "Settings", + "AI_ASSIST": "AI Assist", + "APPEARANCE": "Appearance", + "SNOOZE_NOTIFICATION": "Snooze Notification" + }, + "COMMANDS": { + "GO_TO_CONVERSATION_DASHBOARD": "Go to Conversation Dashboard", + "GO_TO_CONTACTS_DASHBOARD": "Go to Contacts Dashboard", + "GO_TO_REPORTS_OVERVIEW": "Go to Reports Overview", + "GO_TO_CONVERSATION_REPORTS": "Go to Conversation Reports", + "GO_TO_AGENT_REPORTS": "Go to Agent Reports", + "GO_TO_LABEL_REPORTS": "Go to Label Reports", + "GO_TO_INBOX_REPORTS": "Go to Inbox Reports", + "GO_TO_TEAM_REPORTS": "Go to Team Reports", + "GO_TO_SETTINGS_AGENTS": "Go to Agent Settings", + "GO_TO_SETTINGS_TEAMS": "Go to Team Settings", + "GO_TO_SETTINGS_INBOXES": "Go to Inbox Settings", + "GO_TO_SETTINGS_LABELS": "Go to Label Settings", + "GO_TO_SETTINGS_CANNED_RESPONSES": "Go to Canned Response Settings", + "GO_TO_SETTINGS_APPLICATIONS": "Go to Application Settings", + "GO_TO_SETTINGS_ACCOUNT": "Go to Account Settings", + "GO_TO_SETTINGS_PROFILE": "Go to Profile Settings", + "GO_TO_NOTIFICATIONS": "Go to Notifications", + "ADD_LABELS_TO_CONVERSATION": "Add label to the conversation", + "ASSIGN_AN_AGENT": "Assign an agent", + "AI_ASSIST": "AI Assist", + "ASSIGN_PRIORITY": "Assign priority", + "ASSIGN_A_TEAM": "Assign a team", + "MUTE_CONVERSATION": "Mute conversation", + "UNMUTE_CONVERSATION": "Unmute conversation", + "REMOVE_LABEL_FROM_CONVERSATION": "Remove label from the conversation", + "REOPEN_CONVERSATION": "Reopen conversation", + "RESOLVE_CONVERSATION": "Resolve conversation", + "SEND_TRANSCRIPT": "Send an email transcript", + "SNOOZE_CONVERSATION": "Snooze Conversation", + "UNTIL_NEXT_REPLY": "Until next reply", + "UNTIL_NEXT_WEEK": "Until next week", + "UNTIL_TOMORROW": "Until tomorrow", + "UNTIL_NEXT_MONTH": "Until next month", + "AN_HOUR_FROM_NOW": "Until an hour from now", + "UNTIL_CUSTOM_TIME": "Custom...", + "CHANGE_APPEARANCE": "Change Appearance", + "LIGHT_MODE": "Light", + "DARK_MODE": "Dark", + "SYSTEM_MODE": "System", + "SNOOZE_NOTIFICATION": "Snooze Notification" + } + }, + "DASHBOARD_APPS": { + "LOADING_MESSAGE": "Loading Dashboard App..." + }, + "COMMON": { + "OR": "Or", + "CLICK_HERE": "click here" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/helpCenter.json b/app/javascript/dashboard/i18n/locale/uz/helpCenter.json new file mode 100644 index 000000000..a406046b9 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/helpCenter.json @@ -0,0 +1,1039 @@ +{ + "HELP_CENTER": { + "TITLE": "Help Center", + "NEW_PAGE": { + "DESCRIPTION": "Create self-service help center portals for your customers. Help them find answers quickly, without waiting. Streamline inquiries, boost agent efficiency, and elevate customer support.", + "CREATE_PORTAL_BUTTON": "Create Portal" + }, + "HEADER": { + "FILTER": "Filter by", + "SORT": "Sort by", + "LOCALE": "Locale", + "SETTINGS_BUTTON": "Settings", + "NEW_BUTTON": "New Article", + "DROPDOWN_OPTIONS": { + "PUBLISHED": "Published", + "DRAFT": "Draft", + "ARCHIVED": "Archived" + }, + "TITLES": { + "ALL_ARTICLES": "All Articles", + "MINE": "My Articles", + "DRAFT": "Draft Articles", + "ARCHIVED": "Archived Articles" + }, + "LOCALE_SELECT": { + "TITLE": "Select locale", + "PLACEHOLDER": "Select locale", + "NO_RESULT": "No locale found", + "SEARCH_PLACEHOLDER": "Search locale" + } + }, + "EDIT_HEADER": { + "ALL_ARTICLES": "All Articles", + "PUBLISH_BUTTON": "Publish", + "MOVE_TO_ARCHIVE_BUTTON": "Move to archived", + "PREVIEW": "Preview", + "ADD_TRANSLATION": "Add translation", + "OPEN_SIDEBAR": "Open sidebar", + "CLOSE_SIDEBAR": "Close sidebar", + "SAVING": "Saving...", + "SAVED": "Saved" + }, + "ARTICLE_EDITOR": { + "IMAGE_UPLOAD": { + "TITLE": "Upload image", + "UPLOADING": "Yuklanmoqda...", + "SUCCESS": "Image uploaded successfully", + "ERROR": "Error while uploading image", + "UN_AUTHORIZED_ERROR": "You are not authorized to upload images", + "ERROR_FILE_SIZE": "Image size should be less than {size}MB", + "ERROR_FILE_FORMAT": "Image format should be jpg, jpeg or png", + "ERROR_FILE_DIMENSIONS": "Image dimensions should be less than 2000 x 2000" + } + }, + "ARTICLE_SETTINGS": { + "TITLE": "Article Settings", + "FORM": { + "CATEGORY": { + "LABEL": "Category", + "TITLE": "Select category", + "PLACEHOLDER": "Select category", + "NO_RESULT": "No category found", + "SEARCH_PLACEHOLDER": "Search category" + }, + "AUTHOR": { + "LABEL": "Author", + "TITLE": "Select author", + "PLACEHOLDER": "Select author", + "NO_RESULT": "No authors found", + "SEARCH_PLACEHOLDER": "Search author" + }, + "META_TITLE": { + "LABEL": "Meta title", + "PLACEHOLDER": "Add a meta title" + }, + "META_DESCRIPTION": { + "LABEL": "Meta description", + "PLACEHOLDER": "Add your meta description for better SEO results..." + }, + "META_TAGS": { + "LABEL": "Meta tags", + "PLACEHOLDER": "Add meta tags separated by comma..." + } + }, + "BUTTONS": { + "ARCHIVE": "Archive article", + "DELETE": "Delete article" + } + }, + "ARTICLE_SEARCH_RESULT": { + "UNCATEGORIZED": "Uncategorized", + "SEARCH_RESULTS": "Search results for {query}", + "EMPTY_TEXT": "Search for articles to insert into replies.", + "SEARCH_LOADER": "Searching...", + "INSERT_ARTICLE": "Insert", + "NO_RESULT": "No articles found", + "COPY_LINK": "Copy article link to clipboard", + "OPEN_LINK": "Open article in new tab", + "PREVIEW_LINK": "Preview article" + }, + "PORTAL": { + "HEADER": "Portals", + "DEFAULT": "Default", + "NEW_BUTTON": "New Portal", + "ACTIVE_BADGE": "active", + "CHOOSE_LOCALE_LABEL": "Choose a locale", + "LOADING_MESSAGE": "Loading portals...", + "ARTICLES_LABEL": "articles", + "NO_PORTALS_MESSAGE": "There are no available portals", + "ADD_NEW_LOCALE": "Add a new locale", + "POPOVER": { + "TITLE": "Portals", + "PORTAL_SETTINGS": "Portal settings", + "SUBTITLE": "You have multiple portals and can have different locales for each portal.", + "CANCEL_BUTTON_LABEL": "Cancel", + "CHOOSE_LOCALE_BUTTON": "Choose Locale" + }, + "PORTAL_SETTINGS": { + "LIST_ITEM": { + "HEADER": { + "COUNT_LABEL": "articles", + "ADD": "Add locale", + "VISIT": "Visit site", + "SETTINGS": "Settings", + "DELETE": "Delete" + }, + "PORTAL_CONFIG": { + "TITLE": "Portal Configurations", + "ITEMS": { + "NAME": "Name", + "DOMAIN": "Custom domain", + "SLUG": "Slug", + "TITLE": "Portal title", + "THEME": "Theme color", + "SUB_TEXT": "Portal sub text" + } + }, + "AVAILABLE_LOCALES": { + "TITLE": "Available locales", + "TABLE": { + "NAME": "Locale name", + "CODE": "Locale code", + "ARTICLE_COUNT": "No. of articles", + "CATEGORIES": "No. of categories", + "SWAP": "Swap", + "DELETE": "Delete", + "DEFAULT_LOCALE": "Default" + } + } + }, + "DELETE_PORTAL": { + "TITLE": "Delete portal", + "MESSAGE": "Are you sure you want to delete this portal", + "YES": "Yes, delete portal", + "NO": "No, keep portal", + "API": { + "DELETE_SUCCESS": "Portal deleted successfully", + "DELETE_ERROR": "Error while deleting portal" + } + }, + "SEND_CNAME_INSTRUCTIONS": { + "API": { + "SUCCESS_MESSAGE": "CNAME instructions sent successfully", + "ERROR_MESSAGE": "Error while sending CNAME instructions" + } + } + }, + "EDIT": { + "HEADER_TEXT": "Edit portal", + "TABS": { + "BASIC_SETTINGS": { + "TITLE": "Basic information" + }, + "CUSTOMIZATION_SETTINGS": { + "TITLE": "Portal customization" + }, + "CATEGORY_SETTINGS": { + "TITLE": "Categories" + }, + "LOCALE_SETTINGS": { + "TITLE": "Locales" + } + }, + "CATEGORIES": { + "TITLE": "Categories in", + "NEW_CATEGORY": "New category", + "TABLE": { + "NAME": "Name", + "DESCRIPTION": "Description", + "LOCALE": "Locale", + "ARTICLE_COUNT": "No. of articles", + "ACTION_BUTTON": { + "EDIT": "Edit category", + "DELETE": "Delete category" + }, + "EMPTY_TEXT": "No categories found" + } + }, + "EDIT_BASIC_INFO": { + "BUTTON_TEXT": "Update basic settings" + } + }, + "ADD": { + "CREATE_FLOW": { + "BASIC": { + "TITLE": "Help center information", + "BODY": "Basic information about portal" + }, + "CUSTOMIZATION": { + "TITLE": "Help center customization", + "BODY": "Customize portal" + }, + "FINISH": { + "TITLE": "Voila! 🎉", + "BODY": "You're all set!" + } + }, + "CREATE_FLOW_PAGE": { + "BACK_BUTTON": "Back", + "BASIC_SETTINGS_PAGE": { + "HEADER": "Create Portal", + "TITLE": "Help center information", + "CREATE_BASIC_SETTING_BUTTON": "Create portal basic settings" + }, + "CUSTOMIZATION_PAGE": { + "HEADER": "Portal customisation", + "TITLE": "Help center customization", + "UPDATE_PORTAL_BUTTON": "Update portal settings" + }, + "FINISH_PAGE": { + "TITLE": "Voila!🎉 You're all set up!", + "MESSAGE": "You can now see this created portal on your all portals page.", + "FINISH": "Go to all portals page" + } + }, + "LOGO": { + "LABEL": "Logo", + "UPLOAD_BUTTON": "Upload logo", + "HELP_TEXT": "This logo will be displayed on the portal header.", + "IMAGE_UPLOAD_SUCCESS": "Logo uploaded successfully", + "IMAGE_UPLOAD_ERROR": "Logo deleted successfully", + "IMAGE_DELETE_ERROR": "Error while deleting logo" + }, + "NAME": { + "LABEL": "Name", + "PLACEHOLDER": "Portal name", + "HELP_TEXT": "The name will be used in the public facing portal internally.", + "ERROR": "Name is required" + }, + "SLUG": { + "LABEL": "Slug", + "PLACEHOLDER": "Portal slug for urls", + "ERROR": "Slug is required" + }, + "DOMAIN": { + "LABEL": "Custom Domain", + "PLACEHOLDER": "Portal custom domain", + "HELP_TEXT": "Add only If you want to use a custom domain for your portals. Eg: {exampleURL}", + "ERROR": "Enter a valid domain URL" + }, + "HOME_PAGE_LINK": { + "LABEL": "Home Page Link", + "PLACEHOLDER": "Portal home page link", + "HELP_TEXT": "The link used to return from the portal to the home page. Eg: {exampleURL}", + "ERROR": "Enter a valid home page URL" + }, + "THEME_COLOR": { + "LABEL": "Portal theme color", + "HELP_TEXT": "This color will show as the theme color for the portal." + }, + "PAGE_TITLE": { + "LABEL": "Page Title", + "PLACEHOLDER": "Portal page title", + "HELP_TEXT": "The page title will be used in the public facing portal.", + "ERROR": "Page title is required" + }, + "HEADER_TEXT": { + "LABEL": "Header Text", + "PLACEHOLDER": "Portal header text", + "HELP_TEXT": "The Portal header text will be used in the public facing portal.", + "ERROR": "Portal header text is required" + }, + "API": { + "SUCCESS_MESSAGE_FOR_BASIC": "Portal created successfully.", + "ERROR_MESSAGE_FOR_BASIC": "Couldn't create the portal. Try again.", + "SUCCESS_MESSAGE_FOR_UPDATE": "Portal updated successfully.", + "ERROR_MESSAGE_FOR_UPDATE": "Couldn't update the portal. Try again." + } + }, + "ADD_LOCALE": { + "TITLE": "Add a new locale", + "SUB_TITLE": "This adds a new locale to your available translation list.", + "PORTAL": "Portal", + "LOCALE": { + "LABEL": "Locale", + "PLACEHOLDER": "Choose a locale", + "ERROR": "Locale is required" + }, + "BUTTONS": { + "CREATE": "Create locale", + "CANCEL": "Cancel" + }, + "API": { + "SUCCESS_MESSAGE": "Locale added successfully", + "ERROR_MESSAGE": "Unable to add locale. Try again." + } + }, + "CHANGE_DEFAULT_LOCALE": { + "API": { + "SUCCESS_MESSAGE": "Default locale updated successfully", + "ERROR_MESSAGE": "Unable to update default locale. Try again." + } + }, + "DELETE_LOCALE": { + "API": { + "SUCCESS_MESSAGE": "Locale removed from portal successfully", + "ERROR_MESSAGE": "Unable to remove locale from portal. Try again." + } + }, + "DRAFT_LOCALE": { + "API": { + "SUCCESS_MESSAGE": "Locale moved to draft successfully", + "ERROR_MESSAGE": "Unable to move locale to draft. Try again." + } + }, + "PUBLISH_LOCALE": { + "API": { + "SUCCESS_MESSAGE": "Locale published successfully", + "ERROR_MESSAGE": "Unable to publish locale. Try again." + } + } + }, + "TABLE": { + "LOADING_MESSAGE": "Loading articles...", + "404": "No articles matches your search 🔍", + "NO_ARTICLES": "There are no available articles", + "HEADERS": { + "TITLE": "Title", + "CATEGORY": "Category", + "READ_COUNT": "Views", + "STATUS": "Status", + "LAST_EDITED": "Last edited" + }, + "COLUMNS": { + "BY": "by", + "AUTHOR_NOT_AVAILABLE": "Author is not available" + } + }, + "EDIT_ARTICLE": { + "LOADING": "Loading article...", + "TITLE_PLACEHOLDER": "Article title goes here", + "CONTENT_PLACEHOLDER": "Write your article here", + "API": { + "ERROR": "Error while saving article" + } + }, + "PUBLISH_ARTICLE": { + "API": { + "ERROR": "Error while publishing article", + "SUCCESS": "Article published successfully" + } + }, + "ARCHIVE_ARTICLE": { + "API": { + "ERROR": "Error while archiving article", + "SUCCESS": "Article archived successfully" + } + }, + "DRAFT_ARTICLE": { + "API": { + "ERROR": "Error while drafting article", + "SUCCESS": "Article drafted successfully" + } + }, + "DELETE_ARTICLE": { + "MODAL": { + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure to delete the article?", + "YES": "Yes, Delete", + "NO": "No, Keep it" + } + }, + "API": { + "SUCCESS_MESSAGE": "Article deleted successfully", + "ERROR_MESSAGE": "Error while deleting article" + } + }, + "REORDER_ARTICLE": { + "API": { + "ERROR_MESSAGE": "Unable to reorder articles. Please try again." + } + }, + "REORDER_CATEGORY": { + "API": { + "ERROR_MESSAGE": "Unable to reorder categories. Please try again." + } + }, + "CREATE_ARTICLE": { + "ERROR_MESSAGE": "Please add the article heading and content then only you can update the settings" + }, + "SIDEBAR": { + "SEARCH": { + "PLACEHOLDER": "Search for articles" + } + }, + "CATEGORY": { + "ADD": { + "TITLE": "Create a category", + "SUB_TITLE": "The category will be used in the public facing portal to categorize articles.", + "PORTAL": "Portal", + "LOCALE": "Locale", + "NAME": { + "LABEL": "Name", + "PLACEHOLDER": "Category name", + "HELP_TEXT": "The category name and icon will be used in the public facing portal to categorize articles.", + "ERROR": "Name is required" + }, + "SLUG": { + "LABEL": "Slug", + "PLACEHOLDER": "Category slug for urls", + "HELP_TEXT": "app.chatwoot.com/hc/my-portal/en-US/categories/my-slug", + "ERROR": "Slug is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Give a short description about the category.", + "ERROR": "Description is required" + }, + "BUTTONS": { + "CREATE": "Create category", + "CANCEL": "Cancel" + }, + "API": { + "SUCCESS_MESSAGE": "Category created successfully", + "ERROR_MESSAGE": "Unable to create category" + } + }, + "EDIT": { + "TITLE": "Edit a category", + "SUB_TITLE": "Editing a category will update the category in the public facing portal.", + "PORTAL": "Portal", + "LOCALE": "Locale", + "NAME": { + "LABEL": "Name", + "PLACEHOLDER": "Category name", + "HELP_TEXT": "The category name and icon will be used in the public facing portal to categorize articles.", + "ERROR": "Name is required" + }, + "SLUG": { + "LABEL": "Slug", + "PLACEHOLDER": "Category slug for urls", + "HELP_TEXT": "app.chatwoot.com/hc/my-portal/en-US/categories/my-slug", + "ERROR": "Slug is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Give a short description about the category.", + "ERROR": "Description is required" + }, + "BUTTONS": { + "CREATE": "Update category", + "CANCEL": "Cancel" + }, + "API": { + "SUCCESS_MESSAGE": "Category updated successfully", + "ERROR_MESSAGE": "Unable to update category" + } + }, + "DELETE": { + "API": { + "SUCCESS_MESSAGE": "Category deleted successfully", + "ERROR_MESSAGE": "Unable to delete category" + } + } + }, + "ARTICLE_SEARCH": { + "TITLE": "Search articles", + "PLACEHOLDER": "Search articles", + "NO_RESULT": "No articles found", + "SEARCHING": "Searching...", + "SEARCH_BUTTON": "Search", + "INSERT_ARTICLE": "Insert link", + "IFRAME_ERROR": "URL is empty or invalid. Unable to display content.", + "OPEN_ARTICLE_SEARCH": "Insert article from Help Center", + "SUCCESS_ARTICLE_INSERTED": "Article inserted successfully", + "PREVIEW_LINK": "Preview article", + "CANCEL": "Close", + "BACK": "Back", + "BACK_RESULTS": "Back to results" + }, + "UPGRADE_PAGE": { + "TITLE": "Help Center", + "DESCRIPTION": "Create user-friendly self-service portals. Help your users to access the articles and get support 24/7. Upgrade your subscription to enable this feature.", + "SELF_HOSTED_DESCRIPTION": "Create user-friendly self-service portals. Help your users to access the articles and get support 24/7. Please contact your administrator to enable this feature.", + "BUTTON": { + "LEARN_MORE": "Learn more", + "UPGRADE": "Upgrade" + }, + "FEATURES": { + "PORTALS": { + "TITLE": "Multiple portals", + "DESCRIPTION": "Create multiple help center portals for different products using the same account." + }, + "LOCALES": { + "TITLE": "Full support for locales", + "DESCRIPTION": "Localize the portal in your language. We support all locales and allow translations for every article." + }, + "SEO": { + "TITLE": "SEO-friendly design", + "DESCRIPTION": "Customize your meta tags to improve your visibility on search engines with our SEO-friendly pages." + }, + "API": { + "TITLE": "Full API support", + "DESCRIPTION": "Use the portal as a headless CMS with third party front-end frameworks using our APIs." + } + } + }, + "LOADING": "Loading...", + "ARTICLES_PAGE": { + "ARTICLE_CARD": { + "CARD": { + "VIEWS": "{count} view | {count} views", + "DROPDOWN_MENU": { + "PUBLISH": "Publish", + "DRAFT": "Draft", + "ARCHIVE": "Archive", + "TRANSLATE": "Translate", + "DELETE": "Delete" + }, + "STATUS": { + "DRAFT": "Draft", + "PUBLISHED": "Published", + "ARCHIVED": "Archived" + }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", + "CATEGORY": { + "UNCATEGORISED": "Uncategorised" + } + } + }, + "ARTICLES_HEADER": { + "TABS": { + "ALL": "All articles", + "MINE": "Mine", + "DRAFT": "Draft", + "PUBLISHED": "Published", + "ARCHIVED": "Archived" + }, + "CATEGORY": { + "ALL": "All categories" + }, + "LOCALE": { + "ALL": "All locales" + }, + "SEARCH_PLACEHOLDER": "Search articles...", + "NEW_ARTICLE": "New article" + }, + "EMPTY_STATE": { + "ALL": { + "TITLE": "Write an article", + "SUBTITLE": "Write a rich article, let’s get started!", + "BUTTON_LABEL": "New article" + }, + "MINE": { + "TITLE": "You haven't written any articles here", + "SUBTITLE": "All articles written by you show up here for quick access." + }, + "DRAFT": { + "TITLE": "There are no articles in drafts", + "SUBTITLE": "Draft articles will appear here" + }, + "PUBLISHED": { + "TITLE": "There are no published articles", + "SUBTITLE": "Published articles will appear here" + }, + "ARCHIVED": { + "TITLE": "There are no articles in the archive", + "SUBTITLE": "Archived articles don't show up on the portal, you can use it to mark deprecated or outdated pages" + }, + "CATEGORY": { + "TITLE": "There are no articles in this category", + "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." + } + }, + "BULK_TRANSLATE": { + "TITLE": "Translate article | Translate {count} articles", + "DESCRIPTION": "Translate the selected article to another language. | Translate the selected articles to another language.", + "LOCALE_LABEL": "Target language", + "LOCALE_PLACEHOLDER": "Select a language", + "CATEGORY_LABEL": "Target category", + "CATEGORY_PLACEHOLDER": "Select a category", + "OPTIONAL": "(optional)", + "CONFIRM": "Translate", + "SELECT_ALL": "Select all ({count})", + "SELECTED_COUNT": "{count} selected", + "CLEAR_SELECTION": "Clear selection", + "TRANSLATE_BUTTON": "Translate", + "CONFIRM_OVERWRITE": "Overwrite and translate", + "DUPLICATE_WARNING": "A translation already exists for this article in the selected language. | Translations already exist for {count} articles in the selected language.", + "DUPLICATE_CONFIRM_HINT": "Click translate again to overwrite the existing translation.", + "API": { + "SUCCESS_MESSAGE": "Translation in progress. The article will appear as a draft once ready.", + "ERROR_MESSAGE": "Failed to start translation. Please try again." + } + }, + "BULK_ACTIONS": { + "PUBLISH": "Publish", + "DRAFT": "Draft", + "ARCHIVE": "Archive", + "TRANSLATE": "Translate", + "MOVE_TO_CATEGORY": "Category", + "DELETE": "Delete", + "STATUS_SUCCESS": "Articles updated successfully", + "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", + "CATEGORY_SUCCESS": "Articles moved successfully", + "CATEGORY_ERROR": "Failed to move articles", + "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", + "DELETE_CONFIRM_DESCRIPTION": "This will permanently delete the selected article. This action cannot be undone. | This will permanently delete {count} selected articles. This action cannot be undone.", + "DELETE_CONFIRM": "Delete", + "DELETE_SUCCESS": "Articles deleted successfully", + "DELETE_ERROR": "Failed to delete articles" + } + }, + "CATEGORY_PAGE": { + "CATEGORY_HEADER": { + "NEW_CATEGORY": "New category", + "EDIT_CATEGORY": "Edit category", + "SEARCH_PLACEHOLDER": "Search categories...", + "CATEGORIES_COUNT": "{n} category | {n} categories", + "BREADCRUMB": { + "CATEGORY_LOCALE": "Categories ({localeCode})", + "ACTIVE_CATEGORY": "{categoryName} ({categoryCount} articles) | {categoryName} ({categoryCount} article)" + } + }, + "CATEGORY_EMPTY_STATE": { + "TITLE": "No categories found", + "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." + }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, + "CATEGORY_CARD": { + "ARTICLES_COUNT": "{count} article | {count} articles" + }, + "CATEGORY_DIALOG": { + "CREATE": { + "API": { + "SUCCESS_MESSAGE": "Category created successfully", + "ERROR_MESSAGE": "Unable to create category" + } + }, + "EDIT": { + "API": { + "SUCCESS_MESSAGE": "Category updated successfully", + "ERROR_MESSAGE": "Unable to update category" + } + }, + "DELETE": { + "API": { + "SUCCESS_MESSAGE": "Category deleted successfully", + "ERROR_MESSAGE": "Unable to delete category" + } + }, + "HEADER": { + "CREATE": "Create category", + "EDIT": "Edit category", + "DESCRIPTION": "Editing a category will update the category in the public facing portal.", + "PORTAL": "Portal", + "LOCALE": "Locale" + }, + "FORM": { + "NAME": { + "LABEL": "Name", + "PLACEHOLDER": "Category name", + "ERROR": "Name is required" + }, + "SLUG": { + "LABEL": "Slug", + "PLACEHOLDER": "Category slug for urls", + "ERROR": "Slug is required", + "HELP_TEXT": "app.chatwoot.com/hc/{portalSlug}/{localeCode}/categories/{categorySlug}" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Give a short description about the category.", + "ERROR": "Description is required" + } + }, + "BUTTONS": { + "CREATE": "Create", + "EDIT": "Update", + "CANCEL": "Cancel" + } + } + }, + "LOCALES_PAGE": { + "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", + "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, + "LOCALE_CARD": { + "ARTICLES_COUNT": "{count} article | {count} articles", + "CATEGORIES_COUNT": "{count} category | {count} categories", + "DEFAULT": "Default", + "DRAFT": "Draft", + "DROPDOWN_MENU": { + "MAKE_DEFAULT": "Make default", + "MOVE_TO_DRAFT": "Move to draft", + "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", + "DELETE": "Delete" + } + }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Uncategorized" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Name" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, + "ADD_LOCALE_DIALOG": { + "TITLE": "Add a new locale", + "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", + "COMBOBOX": { + "PLACEHOLDER": "Select locale..." + }, + "STATUS": { + "LABEL": "Status", + "OPTIONS": { + "LIVE": "Published", + "DRAFT": "Draft" + } + }, + "API": { + "SUCCESS_MESSAGE": "Locale added successfully", + "ERROR_MESSAGE": "Unable to add locale. Try again." + } + } + }, + "EDIT_ARTICLE_PAGE": { + "HEADER": { + "STATUS": { + "SAVING": "Saving...", + "SAVED": "Saved" + }, + "PREVIEW": "Preview", + "PUBLISH": "Publish", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", + "DRAFT": "Draft", + "ARCHIVE": "Archive", + "BACK_TO_ARTICLES": "Back to articles" + }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Title" + }, + "EDIT_ARTICLE": { + "MORE_PROPERTIES": "More properties", + "UNCATEGORIZED": "Uncategorized", + "EDITOR_PLACEHOLDER": "Write your content here. Type '/' for formatting options." + }, + "ARTICLE_PROPERTIES": { + "ARTICLE_PROPERTIES": "Article properties", + "META_DESCRIPTION": "Meta description", + "META_DESCRIPTION_PLACEHOLDER": "Add meta description", + "META_TITLE": "Meta title", + "META_TITLE_PLACEHOLDER": "Add meta title", + "META_TAGS": "Meta tags", + "META_TAGS_PLACEHOLDER": "Add meta tags" + }, + "API": { + "ERROR": "Error while saving article" + } + }, + "PORTAL_SWITCHER": { + "NEW_PORTAL": "New portal", + "PORTALS": "Portals", + "CREATE_PORTAL": "Create and manage multiple portals", + "ARTICLES": "articles", + "DOMAIN": "domain", + "PORTAL_NAME": "Portal name" + }, + "CREATE_PORTAL_DIALOG": { + "TITLE": "Create new portal", + "DESCRIPTION": "Give your portal a name and create a user-friendly URL slug. You can modify both later in the settings.", + "CONFIRM_BUTTON_LABEL": "Create", + "NAME": { + "LABEL": "Name", + "PLACEHOLDER": "User Guide | Chatwoot", + "MESSAGE": "Choose an name for your portal.", + "ERROR": "Name is required" + }, + "SLUG": { + "LABEL": "Slug", + "PLACEHOLDER": "user-guide", + "ERROR": "Slug is required", + "FORMAT_ERROR": "Please enter a valid slug, for eg: user-guide" + } + }, + "PORTAL_SETTINGS": { + "FORM": { + "AVATAR": { + "LABEL": "Logo", + "IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again", + "IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save changes to save the logo", + "IMAGE_DELETE_SUCCESS": "Logo deleted successfully", + "IMAGE_DELETE_ERROR": "Unable to delete logo", + "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB" + }, + "NAME": { + "LABEL": "Name", + "PLACEHOLDER": "Portal name", + "ERROR": "Name is required" + }, + "HEADER_TEXT": { + "LABEL": "Header text", + "PLACEHOLDER": "Portal header text" + }, + "PAGE_TITLE": { + "LABEL": "Page title", + "PLACEHOLDER": "Portal page title" + }, + "HOME_PAGE_LINK": { + "LABEL": "Home page link", + "PLACEHOLDER": "Portal home page link", + "ERROR": "Enter a valid URL. The Home page link must start with 'http://' or 'https://'." + }, + "SLUG": { + "LABEL": "Slug", + "PLACEHOLDER": "Portal slug" + }, + "LIVE_CHAT_WIDGET": { + "LABEL": "Live chat widget", + "PLACEHOLDER": "Select live chat widget", + "HELP_TEXT": "Select a live chat widget that will appear on your help center", + "NONE_OPTION": "No widget" + }, + "BRAND_COLOR": { + "LABEL": "Brand color" + }, + "SAVE_CHANGES": "Save changes" + }, + "CONFIGURATION_FORM": { + "CUSTOM_DOMAIN": { + "HEADER": "Custom domain", + "LABEL": "Custom domain:", + "DESCRIPTION": "You can host your portal on a custom domain. For instance, if your website is yourdomain.com and you want your portal available at docs.yourdomain.com, simply enter that in this field.", + "STATUS_DESCRIPTION": "Your custom portal will start working as soon as it is verified.", + "PLACEHOLDER": "Portal custom domain", + "EDIT_BUTTON": "Edit", + "ADD_BUTTON": "Add custom domain", + "STATUS": { + "LIVE": "Live", + "PENDING": "Awaiting verification", + "ERROR": "Verification failed" + }, + "DIALOG": { + "ADD_HEADER": "Add custom domain", + "EDIT_HEADER": "Edit custom domain", + "ADD_CONFIRM_BUTTON_LABEL": "Add domain", + "EDIT_CONFIRM_BUTTON_LABEL": "Update domain", + "LABEL": "Custom domain", + "PLACEHOLDER": "Portal custom domain", + "ERROR": "Custom domain is required", + "FORMAT_ERROR": "Please enter a valid domain URL e.g. docs.yourdomain.com" + }, + "DNS_CONFIGURATION_DIALOG": { + "HEADER": "DNS configuration", + "DESCRIPTION": "Log in to the account you have with your DNS provider, and add a CNAME record for subdomain pointing to chatwoot.help", + "COPY": "Successfully copied CNAME", + "SEND_INSTRUCTIONS": { + "HEADER": "Send instructions", + "DESCRIPTION": "If you would prefer to have someone from your development team to handle this step, you can enter email address below, and we will send them the required instructions.", + "PLACEHOLDER": "Enter their email", + "ERROR": "Enter a valid email address", + "SEND_BUTTON": "Send" + } + } + }, + "DELETE_PORTAL": { + "BUTTON": "Delete {portalName}", + "HEADER": "Delete portal", + "DESCRIPTION": "Permanently delete this portal. This action is irreversible", + "DIALOG": { + "HEADER": "Sure you want to delete {portalName}?", + "DESCRIPTION": "This is a permanent action that cannot be reversed.", + "CONFIRM_BUTTON_LABEL": "Delete" + } + }, + "EDIT_CONFIGURATION": "Edit configuration" + }, + "LAYOUT_CONTENT": { + "HEADER": "Appearance", + "DESCRIPTION": "Pick the layout that fits how your visitors read.", + "LAYOUT": { + "CLASSIC": { + "TITLE": "Classic", + "DESCRIPTION": "A welcoming home page with search and featured topics." + }, + "SIDEBAR": { + "TITLE": "Documentation", + "DESCRIPTION": "Side-by-side navigation that keeps every guide a click away." + } + }, + "SOCIAL_LINKS": { + "HEADER": "Social links", + "DESCRIPTION": "Add the handle for each network and your help center builds the full link. Shown in the documentation layout footer.", + "PLACEHOLDER": "handle", + "ADD": "Add social link", + "REMOVE": "Remove" + }, + "SAVE": "Save changes" + }, + "API": { + "CREATE_PORTAL": { + "SUCCESS_MESSAGE": "Portal created successfully", + "ERROR_MESSAGE": "Unable to create portal" + }, + "UPDATE_PORTAL": { + "SUCCESS_MESSAGE": "Portal updated successfully", + "ERROR_MESSAGE": "Unable to update portal" + } + } + }, + "PDF_UPLOAD": { + "TITLE": "Upload PDF Document", + "DESCRIPTION": "Upload a PDF document to automatically generate FAQs using AI", + "DRAG_DROP_TEXT": "Drag and drop your PDF file here, or click to select", + "SELECT_FILE": "Select PDF File", + "ADDITIONAL_CONTEXT_LABEL": "Additional Context (Optional)", + "ADDITIONAL_CONTEXT_PLACEHOLDER": "Provide any additional context or instructions for FAQ generation...", + "UPLOADING": "Yuklanmoqda...", + "UPLOAD": "Upload & Process", + "CANCEL": "Cancel", + "ERROR_INVALID_TYPE": "Please select a valid PDF file", + "ERROR_FILE_TOO_LARGE": "File size must be less than 512MB", + "ERROR_UPLOAD_FAILED": "Failed to upload PDF. Please try again." + }, + "PDF_DOCUMENTS": { + "TITLE": "PDF Documents", + "DESCRIPTION": "Manage uploaded PDF documents and generate FAQs from them", + "UPLOAD_PDF": "Upload PDF", + "UPLOAD_FIRST_PDF": "Upload your first PDF", + "UPLOADED_BY": "Uploaded by", + "GENERATE_FAQS": "Generate FAQs", + "GENERATING": "Generating...", + "CONFIRM_DELETE": "Are you sure you want to delete {filename}?", + "EMPTY_STATE": { + "TITLE": "No PDF documents yet", + "DESCRIPTION": "Upload PDF documents to automatically generate FAQs using AI" + }, + "STATUS": { + "UPLOADED": "Ready", + "PROCESSING": "Processing", + "PROCESSED": "Completed", + "FAILED": "Failed" + } + }, + "CONTENT_GENERATION": { + "TITLE": "Content Generation", + "DESCRIPTION": "Upload PDF documents to automatically generate FAQ content using AI", + "UPLOAD_TITLE": "Upload PDF Document", + "DRAG_DROP": "Drag and drop your PDF file here, or click to select", + "SELECT_FILE": "Select PDF File", + "UPLOADING": "Processing document...", + "UPLOAD_SUCCESS": "Document processed successfully!", + "UPLOAD_ERROR": "Failed to upload document. Please try again.", + "INVALID_FILE_TYPE": "Please select a valid PDF file", + "FILE_TOO_LARGE": "File size must be less than 512MB", + "GENERATED_CONTENT": "Generated FAQ Content", + "PUBLISH_SELECTED": "Publish Selected", + "PUBLISHING": "Publishing...", + "FROM_DOCUMENT": "From document", + "NO_CONTENT": "No generated content available. Upload a PDF document to get started.", + "LOADING": "Loading generated content..." + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/inbox.json b/app/javascript/dashboard/i18n/locale/uz/inbox.json new file mode 100644 index 000000000..385e9e4ce --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/inbox.json @@ -0,0 +1,95 @@ +{ + "INBOX": { + "LIST": { + "TITLE": "My Inbox", + "DISPLAY_DROPDOWN": "Display", + "LOADING": "Fetching notifications", + "404": "There are no active notifications in this group.", + "NO_NOTIFICATIONS": "No notifications", + "NOTE": "Notifications from all subscribed inboxes", + "NO_MESSAGES_AVAILABLE": "Oops! Not able to fetch messages", + "SNOOZED_UNTIL": "Snoozed until", + "SNOOZED_UNTIL_TOMORROW": "Snoozed until tomorrow", + "SNOOZED_UNTIL_NEXT_WEEK": "Snoozed until next week" + }, + "ACTION_HEADER": { + "SNOOZE": "Snooze notification", + "DELETE": "Delete notification", + "BACK": "Back" + }, + "TYPES": { + "CONVERSATION_MENTION": "You have been mentioned in a conversation", + "CONVERSATION_CREATION": "New conversation created", + "CONVERSATION_ASSIGNMENT": "A conversation has been assigned to you", + "ASSIGNED_CONVERSATION_NEW_MESSAGE": "New message in an assigned conversation", + "PARTICIPATING_CONVERSATION_NEW_MESSAGE": "New message in a conversation you are participating in", + "SLA_MISSED_FIRST_RESPONSE": "SLA target first response missed for conversation", + "SLA_MISSED_NEXT_RESPONSE": "SLA target next response missed for conversation", + "SLA_MISSED_RESOLUTION": "SLA target resolution missed for conversation" + }, + "TYPES_NEXT": { + "CONVERSATION_MENTION": "Mentioned", + "CONVERSATION_ASSIGNMENT": "Assigned to you", + "CONVERSATION_CREATION": "New Conversation", + "SLA_MISSED_FIRST_RESPONSE": "SLA breach", + "SLA_MISSED_NEXT_RESPONSE": "SLA breach", + "SLA_MISSED_RESOLUTION": "SLA breach", + "PARTICIPATING_CONVERSATION_NEW_MESSAGE": "New message", + "ASSIGNED_CONVERSATION_NEW_MESSAGE": "New message", + "SNOOZED_UNTIL": "Snoozed for {time}", + "SNOOZED_ENDS": "Snooze ended" + }, + "NO_CONTENT": "No content available", + "MENU_ITEM": { + "MARK_AS_READ": "Mark as read", + "MARK_AS_UNREAD": "Mark as unread", + "SNOOZE": "Snooze", + "DELETE": "Delete", + "MARK_ALL_READ": "Mark all as read", + "DELETE_ALL": "Delete all", + "DELETE_ALL_READ": "Delete all read" + }, + "DISPLAY_MENU": { + "SORT": "Sort", + "DISPLAY": "Display :", + "SORT_OPTIONS": { + "NEWEST": "Newest", + "OLDEST": "Oldest", + "PRIORITY": "Priority" + }, + "DISPLAY_OPTIONS": { + "SNOOZED": "Snoozed", + "READ": "Read", + "LABELS": "Labels", + "CONVERSATION_ID": "Conversation ID" + } + }, + "ALERTS": { + "MARK_AS_READ": "Notification marked as read", + "MARK_AS_UNREAD": "Notification marked as unread", + "SNOOZE": "Notification snoozed", + "DELETE": "Notification deleted", + "MARK_ALL_READ": "All notifications marked as read", + "DELETE_ALL": "All notifications deleted", + "DELETE_ALL_READ": "All read notifications deleted" + }, + "REAUTHORIZE": { + "TITLE": "Reauthorization Required", + "DESCRIPTION": "Your WhatsApp connection has expired. Please reconnect to continue receiving and sending messages.", + "BUTTON_TEXT": "Reconnect WhatsApp", + "LOADING_FACEBOOK": "Loading Facebook SDK...", + "SUCCESS": "WhatsApp reconnected successfully", + "ERROR": "Failed to reconnect WhatsApp. Please try again.", + "WHATSAPP_APP_ID_MISSING": "WhatsApp App ID is not configured. Please contact your administrator.", + "WHATSAPP_CONFIG_ID_MISSING": "WhatsApp Configuration ID is not configured. Please contact your administrator.", + "CONFIGURATION_ERROR": "Configuration error occurred during reauthorization.", + "FACEBOOK_LOAD_ERROR": "Failed to load Facebook SDK. Please try again.", + "TROUBLESHOOTING": { + "TITLE": "Troubleshooting", + "POPUP_BLOCKED": "Ensure pop-ups are allowed for this site", + "COOKIES": "Third-party cookies must be enabled", + "ADMIN_ACCESS": "You need admin access to the WhatsApp Business Account" + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/uz/inboxMgmt.json new file mode 100644 index 000000000..e2b257980 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/inboxMgmt.json @@ -0,0 +1,1282 @@ +{ + "INBOX_MGMT": { + "HEADER": "Inboxes", + "DESCRIPTION": "A channel is the mode of communication your customer chooses to interact with you. An inbox is where you manage interactions for a specific channel. It can include communications from various sources such as email, live chat, and social media.", + "LEARN_MORE": "Learn more about inboxes", + "COUNT": "{n} inbox | {n} inboxes", + "SEARCH_PLACEHOLDER": "Search inboxes...", + "NO_RESULTS": "No inboxes found matching your search", + "RECONNECTION_REQUIRED": "Your inbox is disconnected. You won't receive new messages until you reauthorize it.", + "CLICK_TO_RECONNECT": "Click here to reconnect.", + "WHATSAPP_REGISTRATION_INCOMPLETE": "Your WhatsApp Business registration isn’t complete. Please check your display name status in Meta Business Manager before reconnecting.", + "COMPLETE_REGISTRATION": "Complete Registration", + "LIST": { + "404": "There are no inboxes attached to this account." + }, + "CREATE_FLOW": { + "CHANNEL": { + "TITLE": "Choose Channel", + "BODY": "Choose the provider you want to integrate with Chatwoot." + }, + "INBOX": { + "TITLE": "Create Inbox", + "BODY": "Authenticate your account and create an inbox." + }, + "AGENT": { + "TITLE": "Add Agents", + "BODY": "Add agents to the created inbox." + }, + "FINISH": { + "TITLE": "Voilà!", + "BODY": "You are all set to go!" + } + }, + "ADD": { + "CHANNEL_NAME": { + "LABEL": "Inbox Name", + "PLACEHOLDER": "Enter your inbox name (eg: Acme Inc)", + "ERROR": "Please enter a valid inbox name" + }, + "WEBSITE_NAME": { + "LABEL": "Website Name", + "PLACEHOLDER": "Enter your website name (eg: Acme Inc)" + }, + "FB": { + "HELP": "PS: By signing in, we only get access to your Page's messages. Your private messages can never be accessed by Chatwoot.", + "CHOOSE_PAGE": "Choose Page", + "CHOOSE_PLACEHOLDER": "Select a page from the list", + "INBOX_NAME": "Inbox Name", + "ADD_NAME": "Add a name for your inbox", + "PICK_NAME": "Pick a Name for your Inbox", + "PICK_A_VALUE": "Pick a value", + "CREATE_INBOX": "Create Inbox" + }, + "INSTAGRAM": { + "CONTINUE_WITH_INSTAGRAM": "Continue with Instagram", + "CONNECT_YOUR_INSTAGRAM_PROFILE": "Connect your Instagram Profile", + "HELP": "To add your Instagram profile as a channel, you need to authenticate your Instagram Profile by clicking on 'Continue with Instagram' ", + "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", + "ERROR_AUTH": "There was an error connecting to Instagram, please try again", + "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" + }, + "TIKTOK": { + "CONTINUE_WITH_TIKTOK": "Continue with TikTok", + "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", + "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", + "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." + }, + "TWITTER": { + "HELP": "To add your Twitter profile as a channel, you need to authenticate your Twitter Profile by clicking on 'Sign in with Twitter' ", + "ERROR_MESSAGE": "There was an error connecting to Twitter, please try again", + "TWEETS": { + "ENABLE": "Create conversations from mentioned Tweets" + } + }, + "WEBSITE_CHANNEL": { + "TITLE": "Website channel", + "DESC": "Create a channel for your website and start supporting your customers via our website widget.", + "LOADING_MESSAGE": "Creating Website Support Channel", + "CHANNEL_AVATAR": { + "LABEL": "Channel Avatar" + }, + "CHANNEL_WEBHOOK_URL": { + "LABEL": "Webhook URL", + "PLACEHOLDER": "Please enter your Webhook URL", + "ERROR": "Please enter a valid URL" + }, + "CHANNEL_WEBHOOK_SECRET": { + "LABEL": "Webhook Secret", + "COPY": "Copy secret to clipboard", + "COPY_SUCCESS": "Secret copied to clipboard", + "TOGGLE": "Toggle secret visibility", + "RESET_SUCCESS": "Webhook secret regenerated successfully", + "RESET_ERROR": "Unable to regenerate webhook secret. Please try again" + }, + "CHANNEL_DOMAIN": { + "LABEL": "Website Domain", + "PLACEHOLDER": "Enter your website domain (eg: acme.com)" + }, + "CHANNEL_WELCOME_TITLE": { + "LABEL": "Welcome Heading", + "PLACEHOLDER": "Hi there !" + }, + "CHANNEL_WELCOME_TAGLINE": { + "LABEL": "Welcome Tagline", + "PLACEHOLDER": "We make it simple to connect with us. Ask us anything, or share your feedback." + }, + "CHANNEL_GREETING_MESSAGE": { + "LABEL": "Channel greeting message", + "PLACEHOLDER": "Acme Inc typically replies in a few hours." + }, + "CHANNEL_GREETING_TOGGLE": { + "LABEL": "Enable channel greeting", + "HELP_TEXT": "Auto-send greeting messages when customers start a conversation and send their first message.", + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "REPLY_TIME": { + "TITLE": "Set Reply time", + "IN_A_FEW_MINUTES": "In a few minutes", + "IN_A_FEW_HOURS": "In a few hours", + "IN_A_DAY": "In a day", + "HELP_TEXT": "This reply time will be displayed on the live chat widget" + }, + "WIDGET_COLOR": { + "LABEL": "Widget Color", + "PLACEHOLDER": "Update the widget color used in widget" + }, + "SUBMIT_BUTTON": "Create inbox", + "API": { + "ERROR_MESSAGE": "We were not able to create a website channel, please try again" + } + }, + "TWILIO": { + "TITLE": "Twilio SMS/WhatsApp Channel", + "DESC": "Integrate Twilio and start supporting your customers via SMS or WhatsApp.", + "ACCOUNT_SID": { + "LABEL": "Account SID", + "PLACEHOLDER": "Please enter your Twilio Account SID", + "ERROR": "This field is required" + }, + "API_KEY": { + "USE_API_KEY": "Use API Key Authentication", + "LABEL": "API Key SID", + "PLACEHOLDER": "Please enter your API Key SID", + "ERROR": "This field is required" + }, + "API_KEY_SECRET": { + "LABEL": "API Key Secret", + "PLACEHOLDER": "Please enter your API Key Secret", + "ERROR": "This field is required" + }, + "MESSAGING_SERVICE_SID": { + "LABEL": "Messaging Service SID", + "PLACEHOLDER": "Please enter your Twilio Messaging Service SID", + "ERROR": "This field is required", + "USE_MESSAGING_SERVICE": "Use a Twilio Messaging Service" + }, + "CHANNEL_TYPE": { + "LABEL": "Channel Type", + "ERROR": "Please select your Channel Type" + }, + "AUTH_TOKEN": { + "LABEL": "Auth Token", + "PLACEHOLDER": "Please enter your Twilio Auth Token", + "ERROR": "This field is required" + }, + "CHANNEL_NAME": { + "LABEL": "Inbox Name", + "PLACEHOLDER": "Please enter a inbox name", + "ERROR": "This field is required" + }, + "PHONE_NUMBER": { + "LABEL": "Phone Number", + "PLACEHOLDER": "Please enter the phone number from which message will be sent.", + "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces." + }, + "API_CALLBACK": { + "TITLE": "Callback URL", + "SUBTITLE": "You have to configure the message callback URL in Twilio with the URL mentioned here." + }, + "SUBMIT_BUTTON": "Create Twilio Channel", + "API": { + "ERROR_MESSAGE": "We were not able to authenticate Twilio credentials, please try again" + } + }, + "SMS": { + "TITLE": "SMS Channel", + "DESC": "Start supporting your customers via SMS.", + "PROVIDERS": { + "LABEL": "API Provider", + "TWILIO": "Twilio", + "BANDWIDTH": "Bandwidth" + }, + "API": { + "ERROR_MESSAGE": "We were not able to save the SMS channel" + }, + "BANDWIDTH": { + "ACCOUNT_ID": { + "LABEL": "Account ID", + "PLACEHOLDER": "Please enter your Bandwidth Account ID", + "ERROR": "This field is required" + }, + "API_KEY": { + "LABEL": "API Key", + "PLACEHOLDER": "Please enter your Bandwidth API Key", + "ERROR": "This field is required" + }, + "API_SECRET": { + "LABEL": "API Secret", + "PLACEHOLDER": "Please enter your Bandwidth API Secret", + "ERROR": "This field is required" + }, + "APPLICATION_ID": { + "LABEL": "Application ID", + "PLACEHOLDER": "Please enter your Bandwidth Application ID", + "ERROR": "This field is required" + }, + "INBOX_NAME": { + "LABEL": "Inbox Name", + "PLACEHOLDER": "Please enter a inbox name", + "ERROR": "This field is required" + }, + "PHONE_NUMBER": { + "LABEL": "Phone number", + "PLACEHOLDER": "Please enter the phone number from which message will be sent.", + "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces." + }, + "SUBMIT_BUTTON": "Create Bandwidth Channel", + "API": { + "ERROR_MESSAGE": "We were not able to authenticate Bandwidth credentials, please try again" + }, + "API_CALLBACK": { + "TITLE": "Callback URL", + "SUBTITLE": "You have to configure the message callback URL in Bandwidth with the URL mentioned here." + } + } + }, + "WHATSAPP": { + "TITLE": "WhatsApp Channel", + "DESC": "Start supporting your customers via WhatsApp.", + "PROVIDERS": { + "LABEL": "API Provider", + "WHATSAPP_EMBEDDED": "WhatsApp Business", + "TWILIO": "Twilio", + "WHATSAPP_CLOUD": "WhatsApp Cloud", + "WHATSAPP_CLOUD_DESC": "Quick setup through Meta", + "TWILIO_DESC": "Connect via Twilio credentials", + "360_DIALOG": "360Dialog" + }, + "SELECT_PROVIDER": { + "TITLE": "Select your API provider", + "DESCRIPTION": "Choose your WhatsApp provider. You can connect directly through Meta which requires no setup, or connect through Twilio using your account credentials." + }, + "INBOX_NAME": { + "LABEL": "Inbox Name", + "PLACEHOLDER": "Please enter an inbox name", + "ERROR": "This field is required" + }, + "PHONE_NUMBER": { + "LABEL": "Phone number", + "PLACEHOLDER": "Please enter the phone number from which message will be sent.", + "ERROR": "Please provide a valid phone number that starts with a `+` sign and does not contain any spaces." + }, + "PHONE_NUMBER_ID": { + "LABEL": "Phone number ID", + "PLACEHOLDER": "Please enter the Phone number ID obtained from Facebook developer dashboard.", + "ERROR": "Please enter a valid value." + }, + "BUSINESS_ACCOUNT_ID": { + "LABEL": "Business Account ID", + "PLACEHOLDER": "Please enter the Business Account ID obtained from Facebook developer dashboard.", + "ERROR": "Please enter a valid value." + }, + "WEBHOOK_VERIFY_TOKEN": { + "LABEL": "Webhook Verify Token", + "PLACEHOLDER": "Enter a verify token which you want to configure for Facebook webhooks.", + "ERROR": "Please enter a valid value." + }, + "API_KEY": { + "LABEL": "API key", + "SUBTITLE": "Configure the WhatsApp API key.", + "PLACEHOLDER": "API key", + "ERROR": "Please enter a valid value." + }, + "API_CALLBACK": { + "TITLE": "Callback URL", + "SUBTITLE": "You have to configure the webhook URL and the verification token in the Facebook Developer portal with the values shown below.", + "WEBHOOK_URL": "Webhook URL", + "WEBHOOK_VERIFICATION_TOKEN": "Webhook Verification Token" + }, + "SUBMIT_BUTTON": "Create WhatsApp Channel", + "EMBEDDED_SIGNUP": { + "TITLE": "Quick setup with Meta", + "DESC": "Use the WhatsApp Embedded Signup flow to quickly connect new numbers. You will be redirected to Meta to log into your WhatsApp Business account. Having admin access will help make the setup smooth and easy.", + "BENEFITS": { + "TITLE": "Benefits of Embedded Signup:", + "EASY_SETUP": "No manual configuration required", + "SECURE_AUTH": "Secure OAuth based authentication", + "AUTO_CONFIG": "Automatic webhook and phone number configuration" + }, + "LEARN_MORE": { + "TEXT": "To learn more about integrated signup, pricing, and limitations, visit {link}.", + "LINK_TEXT": "this link" + }, + "SUBMIT_BUTTON": "Connect with WhatsApp Business", + "AUTH_PROCESSING": "Authenticating with Meta", + "WAITING_FOR_BUSINESS_INFO": "Please complete business setup in the Meta window...", + "PROCESSING": "Setting up your WhatsApp Business Account", + "ENABLING_CALLING": "Enabling WhatsApp Calling on your number…", + "LOADING_SDK": "Loading Facebook SDK...", + "CANCELLED": "WhatsApp Signup was cancelled", + "SUCCESS_TITLE": "WhatsApp Business Account Connected!", + "WAITING_FOR_AUTH": "Waiting for authentication...", + "INVALID_BUSINESS_DATA": "Invalid business data received from Facebook. Please try again.", + "SIGNUP_ERROR": "Signup error occurred", + "AUTH_NOT_COMPLETED": "Authentication not completed. Please restart the process.", + "SUCCESS_FALLBACK": "WhatsApp Business Account has been successfully configured", + "MANUAL_FALLBACK": "If your number is already connected to the WhatsApp Business Platform (API), or if you’re a tech provider onboarding your own number, please use the {link} flow", + "MANUAL_LINK_TEXT": "manual setup flow", + "CALLING_ENABLE_FAILED": "Your WhatsApp inbox is ready, but voice calling couldn't be turned on — this number isn't enrolled in the WhatsApp Business Calling API yet. Reach out to Meta or your WhatsApp Business Solution Provider to onboard it, then turn calling on from the inbox's Calls settings." + }, + "API": { + "ERROR_MESSAGE": "We were not able to save the WhatsApp channel" + } + }, + "VOICE": { + "TITLE": "Voice Channel", + "DESC": "Integrate Twilio Voice and start supporting your customers via phone calls.", + "PHONE_NUMBER": { + "LABEL": "Phone Number", + "PLACEHOLDER": "Enter your phone number (e.g. +1234567890)", + "ERROR": "Please provide a valid phone number in E.164 format (e.g. +1234567890)" + }, + "TWILIO": { + "ACCOUNT_SID": { + "LABEL": "Account SID", + "PLACEHOLDER": "Enter your Twilio Account SID", + "REQUIRED": "Account SID is required" + }, + "AUTH_TOKEN": { + "LABEL": "Auth Token", + "PLACEHOLDER": "Enter your Twilio Auth Token", + "REQUIRED": "Auth Token is required" + }, + "API_KEY_SID": { + "LABEL": "API Key SID", + "PLACEHOLDER": "Enter your Twilio API Key SID", + "REQUIRED": "API Key SID is required" + }, + "API_KEY_SECRET": { + "LABEL": "API Key Secret", + "PLACEHOLDER": "Enter your Twilio API Key Secret", + "REQUIRED": "API Key Secret is required" + } + }, + "CONFIGURATION": { + "TWILIO_VOICE_URL_TITLE": "Twilio Voice URL", + "TWILIO_VOICE_URL_SUBTITLE": "Configure this URL as the Voice URL on your Twilio phone number and TwiML App.", + "TWILIO_STATUS_URL_TITLE": "Twilio Status Callback URL", + "TWILIO_STATUS_URL_SUBTITLE": "Configure this URL as the Status Callback URL on your Twilio phone number." + }, + "SUBMIT_BUTTON": "Create Voice Channel", + "API": { + "ERROR_MESSAGE": "We were not able to create the voice channel" + } + }, + "API_CHANNEL": { + "TITLE": "API Channel", + "DESC": "Integrate with API channel and start supporting your customers.", + "CHANNEL_NAME": { + "LABEL": "Channel Name", + "PLACEHOLDER": "Please enter a channel name", + "ERROR": "This field is required" + }, + "WEBHOOK_URL": { + "LABEL": "Webhook URL", + "SUBTITLE": "Configure the URL where you want to receive callbacks on events.", + "PLACEHOLDER": "Webhook URL" + }, + "SUBMIT_BUTTON": "Create API Channel", + "API": { + "ERROR_MESSAGE": "We were not able to save the api channel" + } + }, + "EMAIL_CHANNEL": { + "TITLE": "Email Channel", + "DESC": "Integrate your email inbox.", + "CHANNEL_NAME": { + "LABEL": "Channel Name", + "PLACEHOLDER": "Please enter a channel name", + "ERROR": "This field is required" + }, + "EMAIL": { + "LABEL": "Email", + "SUBTITLE": "Provide the email address where your customers send support requests.", + "PLACEHOLDER": "Email" + }, + "SUBMIT_BUTTON": "Create Email Channel", + "API": { + "ERROR_MESSAGE": "We were not able to save the email channel" + }, + "FINISH_MESSAGE": "Your email inbox has been created successfully! You can start forwarding your emails to the address below, or configure SMTP and IMAP credentials to send and receive emails directly.", + "FINISH_MESSAGE_NO_FORWARDING": "Your email inbox has been created successfully! You need to configure SMTP and IMAP credentials to send and receive emails. Without these settings, no emails will be processed.", + "FORWARDING_ADDRESS_LABEL": "Forward emails to this address:", + "CONFIGURE_SMTP_IMAP_LINK": "Click here", + "CONFIGURE_SMTP_IMAP_TEXT": " to configure IMAP and SMTP settings" + }, + "LINE_CHANNEL": { + "TITLE": "LINE Channel", + "DESC": "Integrate with LINE channel and start supporting your customers.", + "CHANNEL_NAME": { + "LABEL": "Channel Name", + "PLACEHOLDER": "Please enter a channel name", + "ERROR": "This field is required" + }, + "LINE_CHANNEL_ID": { + "LABEL": "LINE Channel ID", + "PLACEHOLDER": "LINE Channel ID" + }, + "LINE_CHANNEL_SECRET": { + "LABEL": "LINE Channel Secret", + "PLACEHOLDER": "LINE Channel Secret" + }, + "LINE_CHANNEL_TOKEN": { + "LABEL": "LINE Channel Token", + "PLACEHOLDER": "LINE Channel Token" + }, + "SUBMIT_BUTTON": "Create LINE Channel", + "API": { + "ERROR_MESSAGE": "We were not able to save the LINE channel" + }, + "API_CALLBACK": { + "TITLE": "Callback URL", + "SUBTITLE": "You have to configure the webhook URL in LINE application with the URL mentioned here." + } + }, + "TELEGRAM_CHANNEL": { + "TITLE": "Telegram Channel", + "DESC": "Integrate with Telegram channel and start supporting your customers.", + "BOT_TOKEN": { + "LABEL": "Bot Token", + "SUBTITLE": "Configure the bot token you have obtained from Telegram BotFather.", + "PLACEHOLDER": "Bot Token" + }, + "SUBMIT_BUTTON": "Create Telegram Channel", + "API": { + "ERROR_MESSAGE": "We were not able to save the telegram channel" + } + }, + "AUTH": { + "TITLE": "Choose a channel", + "DESC": "Chatwoot supports live-chat widgets, Facebook Messenger, WhatsApp, Emails, etc., as channels. If you want to build a custom channel, you can create it using the API channel. To get started, choose one of the channels below.", + "TITLE_NEXT": "Complete the setup", + "TITLE_FINISH": "Voilà!", + "CHANNEL": { + "WEBSITE": { + "TITLE": "Website", + "DESCRIPTION": "Create a live-chat widget" + }, + "FACEBOOK": { + "TITLE": "Facebook", + "DESCRIPTION": "Connect your Facebook page" + }, + "WHATSAPP": { + "TITLE": "WhatsApp", + "DESCRIPTION": "Support your customers on WhatsApp" + }, + "WHATSAPP_CALL": { + "TITLE": "WhatsApp Call", + "DESCRIPTION": "Take voice calls on your WhatsApp number" + }, + "EMAIL": { + "TITLE": "Email", + "DESCRIPTION": "Connect with Gmail, Outlook, or other providers" + }, + "SMS": { + "TITLE": "SMS", + "DESCRIPTION": "Integrate SMS channel with Twilio or bandwidth" + }, + "API": { + "TITLE": "API", + "DESCRIPTION": "Make a custom channel using our API" + }, + "TELEGRAM": { + "TITLE": "Telegram", + "DESCRIPTION": "Configure Telegram channel using Bot token" + }, + "LINE": { + "TITLE": "Line", + "DESCRIPTION": "Integrate your Line channel" + }, + "INSTAGRAM": { + "TITLE": "Instagram", + "DESCRIPTION": "Connect your instagram account" + }, + "TIKTOK": { + "TITLE": "TikTok", + "DESCRIPTION": "Connect your TikTok account" + }, + "VOICE": { + "TITLE": "Voice", + "DESCRIPTION": "Integrate with Twilio Voice" + } + } + }, + "AGENTS": { + "TITLE": "Agents", + "DESC": "Here you can add agents to manage your newly created inbox. Only these selected agents will have access to your inbox. Agents which are not part of this inbox will not be able to see or respond to messages in this inbox when they login.
PS: As an administrator, if you need access to all inboxes, you should add yourself as agent to all inboxes that you create.", + "VALIDATION_ERROR": "Add at least one agent to your new Inbox", + "PICK_AGENTS": "Pick agents for the inbox" + }, + "DETAILS": { + "TITLE": "Inbox Details", + "DESC": "From the dropdown below, select the Facebook Page you want to connect to Chatwoot. You can also give a custom name to your inbox for better identification." + }, + "FINISH": { + "TITLE": "Nailed It!", + "DESC": "You have successfully finished integrating your Facebook Page with Chatwoot. Next time a customer messages your Page, the conversation will automatically appear on your inbox.
We are also providing you with a widget script that you can easily add to your website. Once this is live on your website, customers can message you right from your website without the help of any external tool and the conversation will appear right here, on Chatwoot.
Cool, huh? Well, we sure try to be :)" + }, + "EMAIL_PROVIDER": { + "TITLE": "Select your email provider", + "DESCRIPTION": "Select an email provider from the list below. If you don't see your email provider in the list, you can select the other provider option and provide the IMAP and SMTP Credentials." + }, + "MICROSOFT": { + "TITLE": "Microsoft Email", + "DESCRIPTION": "Click on the Sign in with Microsoft button to get started. You will redirected to the email sign in page. Once you accept the requested permissions, you would be redirected back to the inbox creation step.", + "EMAIL_PLACEHOLDER": "Enter email address", + "SIGN_IN": "Sign in with Microsoft", + "ERROR_MESSAGE": "There was an error connecting to Microsoft, please try again" + }, + "GOOGLE": { + "TITLE": "Google Email", + "DESCRIPTION": "Click on the Sign in with Google button to get started. You will redirected to the email sign in page. Once you accept the requested permissions, you would be redirected back to the inbox creation step.", + "SIGN_IN": "Sign in with Google", + "EMAIL_PLACEHOLDER": "Enter email address", + "ERROR_MESSAGE": "There was an error connecting to Google, please try again" + } + }, + "DETAILS": { + "LOADING_FB": "Authenticating you with Facebook...", + "ERROR_FB_LOADING": "Error loading Facebook SDK. Please disable any ad-blockers and try again from a different browser.", + "ERROR_FB_AUTH": "Something went wrong, Please refresh page...", + "ERROR_FB_UNAUTHORIZED": "You're not authorized to perform this action. ", + "ERROR_FB_UNAUTHORIZED_HELP": "Please ensure you have access to the Facebook page with full control. You can read more about Facebook roles here.", + "CREATING_CHANNEL": "Creating your Inbox...", + "TITLE": "Configure Inbox Details", + "DESC": "" + }, + "AGENTS": { + "BUTTON_TEXT": "Add agents", + "ADD_AGENTS": "Adding Agents to your Inbox..." + }, + "FINISH": { + "TITLE": "Your Inbox is ready!", + "MESSAGE": "You can now engage with your customers through your new Channel. Happy supporting", + "BUTTON_TEXT": "Take me there", + "MORE_SETTINGS": "More settings", + "WEBSITE_SUCCESS": "You have successfully finished creating a website channel. Copy the code shown below and paste it on your website. Next time a customer use the live chat, the conversation will automatically appear on your inbox.", + "WHATSAPP_QR_INSTRUCTION": "Scan the QR code above to quickly test your WhatsApp inbox", + "MESSENGER_QR_INSTRUCTION": "Scan the QR code above to quickly test your Facebook Messenger inbox", + "TELEGRAM_QR_INSTRUCTION": "Scan the QR code above to quickly test your Telegram inbox" + }, + "REAUTH": "Reauthorize", + "VIEW": "View", + "EDIT": { + "API": { + "SUCCESS_MESSAGE": "Inbox settings updated successfully", + "AUTO_ASSIGNMENT_SUCCESS_MESSAGE": "Auto assignment updated successfully", + "ERROR_MESSAGE": "We couldn't update inbox settings. Please try again later." + }, + "EMAIL_COLLECT_BOX": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "ENABLE_CSAT": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "SENDER_NAME_SECTION": { + "TITLE": "Sender name", + "SUB_TEXT": "Select the name shown to your customer when they receive emails from your agents.", + "FOR_EG": "For eg:", + "FRIENDLY": { + "TITLE": "Friendly", + "FROM": "tomonidan", + "SUBTITLE": "Add the name of the agent who sent the reply in the sender name to make it friendly." + }, + "PROFESSIONAL": { + "TITLE": "Professional", + "SUBTITLE": "Use only the configured business name as the sender name in the email header." + }, + "BUSINESS_NAME": { + "BUTTON_TEXT": "Configure your business name", + "PLACEHOLDER": "Enter your business name", + "SAVE_BUTTON_TEXT": "Save" + } + }, + "ALLOW_MESSAGES_AFTER_RESOLVED": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "ENABLE_CONTINUITY_VIA_EMAIL": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "LOCK_TO_SINGLE_CONVERSATION": { + "ENABLED": "Reopen same conversation", + "DISABLED": "Create new conversations", + "ENABLED_DESCRIPTION": "When a contact messages again, the previous conversation will be reopened.", + "DISABLED_DESCRIPTION": "A new conversation will be created each time after the previous one is resolved." + }, + "ENABLE_HMAC": { + "LABEL": "Enable" + } + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "AVATAR_DELETE_BUTTON_TEXT": "Delete Avatar", + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure to delete ", + "PLACE_HOLDER": "Please type {inboxName} to confirm", + "YES": "Yes, Delete ", + "NO": "No, Keep " + }, + "API": { + "SUCCESS_MESSAGE": "Inbox deleted successfully", + "ERROR_MESSAGE": "Could not delete inbox. Please try again later.", + "AVATAR_SUCCESS_MESSAGE": "Inbox avatar deleted successfully", + "AVATAR_ERROR_MESSAGE": "Could not delete the inbox avatar. Please try again later." + } + }, + "TABS": { + "SETTINGS": "Settings", + "COLLABORATORS": "Collaborators", + "CONFIGURATION": "Configuration", + "CAMPAIGN": "Campaigns", + "PRE_CHAT_FORM": "Pre Chat Form", + "BUSINESS_HOURS": "Business Hours", + "WIDGET_BUILDER": "Widget Builder", + "BOT_CONFIGURATION": "Bot Configuration", + "ACCOUNT_HEALTH": "Account Health", + "CSAT": "CSAT", + "VOICE": "Voice", + "CALLS": "Calls" + }, + "VOICE_CONFIGURATION": { + "ENABLE_VOICE": { + "LABEL": "Enable Voice Calling", + "DESCRIPTION": "Enable voice calling on this inbox. Agents will be able to make and receive phone calls." + }, + "CREDENTIALS": { + "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." + } + }, + "WHATSAPP_CALLING": { + "ENABLE": { + "LABEL": "Enable WhatsApp Calling", + "DESCRIPTION": "Allow agents to receive and place WhatsApp Cloud calls on this inbox. Customers can call this business number directly from WhatsApp." + }, + "ENABLE_FAILED": "Voice calling couldn't be turned on for this number — it isn't enrolled in the WhatsApp Business Calling API yet. Reach out to Meta or your WhatsApp Business Solution Provider to onboard it, then try again.", + "PHONE_NUMBER": { + "LABEL": "Business phone number", + "HELP_TEXT": "WhatsApp number that customers will call." + }, + "HOW_IT_WORKS": { + "LABEL": "How it works", + "DESCRIPTION": "Calls are placed peer-to-peer between the agent's browser and Meta — no extra credentials are required. Make sure the agent's browser has microphone permission for this site." + }, + "PERMISSION_REQUEST_BODY": { + "LABEL": "Call permission request message", + "HELP_TEXT": "Shown to the contact when they haven't yet consented to receive calls. Leave blank to use the default.", + "PLACEHOLDER": "We would like to call you regarding your conversation." + } + }, + "CHANNEL_PREFERENCES": "Channel Preferences", + "WIDGET_FEATURES": "Widget features", + "ACCOUNT_HEALTH": { + "TITLE": "Manage your WhatsApp account", + "DESCRIPTION": "Review your WhatsApp account status, messaging limits, and quality. Update settings or resolve issues if needed", + "GO_TO_SETTINGS": "Go to Meta Business Manager", + "NO_DATA": "Health data is not available", + "FIELDS": { + "DISPLAY_PHONE_NUMBER": { + "LABEL": "Display phone number", + "TOOLTIP": "Phone number displayed to customers" + }, + "VERIFIED_NAME": { + "LABEL": "Business name", + "TOOLTIP": "Business name verified by WhatsApp" + }, + "DISPLAY_NAME_STATUS": { + "LABEL": "Display name status", + "TOOLTIP": "Status of your business name verification" + }, + "QUALITY_RATING": { + "LABEL": "Quality rating", + "TOOLTIP": "WhatsApp quality rating for your account" + }, + "MESSAGING_LIMIT_TIER": { + "LABEL": "Messaging limit tier", + "TOOLTIP": "Daily messaging limit for your account" + }, + "ACCOUNT_MODE": { + "LABEL": "Account mode", + "TOOLTIP": "Current operating mode of your WhatsApp account" + } + }, + "VALUES": { + "TIERS": { + "TIER_250": "250 customers per 24h", + "TIER_1000": "1K customers per 24h", + "TIER_1K": "1K customers per 24h", + "TIER_10K": "10K customers per 24h", + "TIER_100K": "100K customers per 24h", + "TIER_UNLIMITED": "Unlimited customers per 24h", + "UNKNOWN": "Rating not available" + }, + "STATUSES": { + "APPROVED": "Approved", + "PENDING_REVIEW": "Pending Review", + "AVAILABLE_WITHOUT_REVIEW": "Available Without Review", + "REJECTED": "Rejected", + "DECLINED": "Declined", + "NON_EXISTS": "Non exists" + }, + "MODES": { + "SANDBOX": "Sandbox", + "LIVE": "Live" + } + }, + "WEBHOOK": { + "TITLE": "Webhook Configuration", + "DESCRIPTION": "Webhook URL is required for your WhatsApp Business Account to receive messages from customers", + "ACTION_REQUIRED": "Webhook not configured", + "REGISTER_BUTTON": "Register Webhook", + "REGISTER_SUCCESS": "Webhook registered successfully", + "REGISTER_ERROR": "Failed to register webhook. Please try again.", + "CONFIGURED_SUCCESS": "Webhook configured successfully", + "URL_MISMATCH": "Webhook URL mismatch" + } + }, + "SETTINGS": "Settings", + "FEATURES": { + "LABEL": "Features", + "DISPLAY_FILE_PICKER": "Display file picker on the widget", + "DISPLAY_EMOJI_PICKER": "Display emoji picker on the widget", + "ALLOW_END_CONVERSATION": "Allow users to end conversation from the widget", + "USE_INBOX_AVATAR_FOR_BOT": "Use inbox name and avatar for the bot" + }, + "SETTINGS_POPUP": { + "MESSENGER_HEADING": "Messenger Script", + "MESSENGER_SUB_HEAD": "Place this button inside your body tag", + "ALLOWED_DOMAINS": { + "TITLE": "Allowed Domains", + "DESCRIPTION": "Restrict which websites can embed your chat widget. For security, only add domains you own and trust. Add one or more domains separated by commas. Leave blank to allow all domains (not recommended for production).", + "PLACEHOLDER": "example.com, www.example.com, app.example.com" + }, + "ALLOW_MOBILE_WEBVIEW": { + "LABEL": "Enable widget in mobile apps", + "SUBTITLE": "Check this if you embed the widget in iOS or Android apps. Mobile apps don't send domain information, so they would be blocked by domain restrictions unless this is enabled." + }, + "IDENTITY_VALIDATION": { + "TITLE": "Identity Validation", + "DESCRIPTION": "Verify user authenticity by generating secure tokens. This prevents unauthorized users from impersonating others in your chat.", + "SECRET_KEY": "Secret Key", + "VIEW_DOCS": "View documentation", + "REQUIRE_LABEL": "Require identity validation for all conversations", + "REQUIRE_DESCRIPTION": "When enabled, users must provide a valid identity token to start conversations. Requests without valid tokens will be rejected." + }, + "INBOX_AGENTS": "Agents", + "INBOX_AGENTS_SUB_TEXT": "Add or remove agents from this inbox", + "AGENT_ASSIGNMENT": "Conversation Assignment", + "AGENT_ASSIGNMENT_SUB_TEXT": "Update conversation assignment settings", + "UPDATE": "Update", + "ENABLE_EMAIL_COLLECT_BOX": "Enable email collect box", + "ENABLE_EMAIL_COLLECT_BOX_SUB_TEXT": "Enable or disable email collect box on new conversation", + "AUTO_ASSIGNMENT": "Enable auto assignment", + "SENDER_NAME_SECTION": "Enable Agent Name in Email", + "SENDER_NAME_SECTION_TEXT": "Enable/Disable showing Agent's name in email, if disabled it will show business name", + "ENABLE_CONTINUITY_VIA_EMAIL": "Enable conversation continuity via email", + "ENABLE_CONTINUITY_VIA_EMAIL_SUB_TEXT": "Conversations will continue over email if the contact email address is available.", + "ENABLE_CONTINUITY_VIA_EMAIL_DISABLED_TEXT": "This feature is available on a paid plan. Upgrade to enable conversation continuity via email.", + "LOCK_TO_SINGLE_CONVERSATION": "Conversation Routing", + "LOCK_TO_SINGLE_CONVERSATION_SUB_TEXT": "Configure conversation creation for existing contacts", + "INBOX_UPDATE_TITLE": "Inbox Settings", + "INBOX_UPDATE_SUB_TEXT": "Update your inbox settings", + "AUTO_ASSIGNMENT_SUB_TEXT": "Enable or disable the automatic assignment of new conversations to the agents added to this inbox.", + "HMAC_VERIFICATION": "User Identity Validation", + "HMAC_DESCRIPTION": "With this key you can generate a secret token that can be used to verify the identity of your users.", + "HMAC_LINK_TO_DOCS": "You can read more here.", + "HMAC_MANDATORY_VERIFICATION": "Enforce User Identity Validation", + "HMAC_MANDATORY_DESCRIPTION": "If enabled, requests that cannot be verified will be rejected.", + "INBOX_IDENTIFIER": "Inbox Identifier", + "INBOX_IDENTIFIER_SUB_TEXT": "Use the `inbox_identifier` token shown here to authentication your API clients.", + "FORWARD_EMAIL_TITLE": "Forward to Email", + "FORWARD_EMAIL_SUB_TEXT": "Start forwarding your emails to the following email address.", + "FORWARD_EMAIL_NOT_CONFIGURED": "Forwarding emails to your inbox is currently disabled on this installation. To use this feature, it must be enabled by your administrator. Please get in touch with them to proceed.", + "ALLOW_MESSAGES_AFTER_RESOLVED": "Allow messages after conversation resolved", + "ALLOW_MESSAGES_AFTER_RESOLVED_SUB_TEXT": "Allow the end-users to send messages even after the conversation is resolved.", + "WHATSAPP_SECTION_SUBHEADER": "This API Key is used for the integration with the WhatsApp APIs.", + "WHATSAPP_SECTION_UPDATE_SUBHEADER": "Enter the new API key to be used for the integration with the WhatsApp APIs.", + "WHATSAPP_SECTION_TITLE": "API Key", + "WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key", + "WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here", + "WHATSAPP_SECTION_UPDATE_BUTTON": "Update", + "WHATSAPP_EMBEDDED_SIGNUP_TITLE": "WhatsApp Embedded Signup", + "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", + "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", + "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "Business Account ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", + "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", + "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", + "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", + "WHATSAPP_CONNECT_BUTTON": "Connect", + "WHATSAPP_CONNECT_SUCCESS": "Successfully connected to WhatsApp Business!", + "WHATSAPP_CONNECT_ERROR": "Failed to connect to WhatsApp Business. Please try again.", + "WHATSAPP_RECONFIGURE_SUCCESS": "Successfully reconfigured WhatsApp Business!", + "WHATSAPP_RECONFIGURE_ERROR": "Failed to reconfigure WhatsApp Business. Please try again.", + "WHATSAPP_APP_ID_MISSING": "WhatsApp App ID is not configured. Please contact your administrator.", + "WHATSAPP_CONFIG_ID_MISSING": "WhatsApp Configuration ID is not configured. Please contact your administrator.", + "WHATSAPP_LOGIN_CANCELLED": "WhatsApp login was cancelled. Please try again.", + "WHATSAPP_WEBHOOK_TITLE": "Webhook Verification Token", + "WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.", + "WHATSAPP_TEMPLATES_SYNC_TITLE": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", + "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", + "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Yopish", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Add", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Inbox", + "PHONE_NUMBER": "Phone number", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Back", + "CANCEL": "Cancel", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, + "WHATSAPP_CALLING_ENABLED": { + "LABEL": "Enable voice calling", + "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." + }, + "UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings" + }, + "HELP_CENTER": { + "LABEL": "Help Center", + "PLACEHOLDER": "Select Help Center", + "SELECT_PLACEHOLDER": "Select Help Center", + "NONE": "None", + "REMOVE": "Remove Help Center", + "SUB_TEXT": "Attach a Help Center with the inbox" + }, + "AUTO_ASSIGNMENT": { + "MAX_ASSIGNMENT_LIMIT": "Auto assignment limit", + "MAX_ASSIGNMENT_LIMIT_RANGE_ERROR": "Please enter a value greater than 0", + "MAX_ASSIGNMENT_LIMIT_SUB_TEXT": "Limit the maximum number of conversations from this inbox that can be auto assigned to an agent" + }, + "ASSIGNMENT": { + "TITLE": "Conversation Assignment", + "DESCRIPTION": "Automatically assign incoming conversations to available agents based on assignment policies", + "ENABLE_AUTO_ASSIGNMENT": "Enable automatic conversation assignment", + "DEFAULT_RULES_TITLE": "Default assignment rules", + "DEFAULT_RULES_DESCRIPTION": "Using the default assignment behavior for all conversations", + "DEFAULT_RULE_1": "Earliest created conversations first", + "DEFAULT_RULE_2": "Round robin distribution", + "CUSTOMIZE_WITH_POLICY": "Customize with assignment policy", + "USING_POLICY": "Using custom assignment policy for this inbox", + "CUSTOMIZE_POLICY": "Customize with assignment policy", + "DELETE_POLICY": "Delete policy", + "POLICY_LABEL": "Assignment policy", + "ASSIGNMENT_ORDER_LABEL": "Assignment Order", + "ASSIGNMENT_METHOD_LABEL": "Assignment Method", + "POLICY_STATUS": { + "ACTIVE": "Active", + "INACTIVE": "Inactive" + }, + "PRIORITY": { + "EARLIEST_CREATED": "Earliest created", + "LONGEST_WAITING": "Longest waiting" + }, + "METHOD": { + "ROUND_ROBIN": "Round robin", + "BALANCED": "Balanced assignment" + }, + "UPGRADE_PROMPT": "Custom assignment policies are available on the Business plan", + "UPGRADE_TO_BUSINESS": "Upgrade to Business", + "DEFAULT_POLICY_LINKED": "Default policy linked", + "DEFAULT_POLICY_DESCRIPTION": "Link a custom assignment policy to customize how conversations are assigned to agents in this inbox.", + "LINK_EXISTING_POLICY": "Link existing policy", + "CREATE_NEW_POLICY": "Create new policy", + "NO_POLICIES": "No assignment policies found", + "VIEW_ALL_POLICIES": "View all policies", + "CURRENT_BEHAVIOR": "Currently using default assignment behavior:", + "LINK_SUCCESS": "Assignment policy linked successfully", + "LINK_ERROR": "Failed to link assignment policy" + }, + "ASSIGNMENT_POLICY": { + "DELETE_CONFIRM_TITLE": "Delete assignment policy?", + "DELETE_CONFIRM_MESSAGE": "Are you sure you want to remove this assignment policy from this inbox? The inbox will revert to default assignment rules.", + "CANCEL": "Cancel", + "CONFIRM_DELETE": "Delete", + "DELETE_SUCCESS": "Assignment policy removed successfully", + "DELETE_ERROR": "Failed to remove assignment policy" + }, + "FACEBOOK_REAUTHORIZE": { + "TITLE": "Reauthorize", + "SUBTITLE": "Your Facebook connection has expired, please reconnect your Facebook page to continue services", + "MESSAGE_SUCCESS": "Reconnection successful", + "MESSAGE_ERROR": "There was an error, please try again" + }, + "PRE_CHAT_FORM": { + "DESCRIPTION": "Pre chat forms enable you to capture user information before they start conversation with you.", + "SET_FIELDS": "Pre chat form fields", + "SET_FIELDS_HEADER": { + "FIELDS": "Fields", + "LABEL": "Label", + "PLACE_HOLDER": "Placeholder", + "KEY": "Key", + "TYPE": "Type", + "REQUIRED": "Required" + }, + "ENABLE": { + "LABEL": "Enable pre chat form", + "OPTIONS": { + "ENABLED": "Yes", + "DISABLED": "No" + } + }, + "PRE_CHAT_MESSAGE": { + "LABEL": "Pre chat message", + "PLACEHOLDER": "This message would be visible to the users along with the form" + }, + "REQUIRE_EMAIL": { + "LABEL": "Visitors should provide their name and email address before starting the chat" + } + }, + "CSAT": { + "TITLE": "Enable CSAT", + "SUBTITLE": "Automatically trigger CSAT surveys at the end of conversations to understand how customers feel about their support experience. Track satisfaction trends and identify areas for improvement over time.", + "DISPLAY_TYPE": { + "LABEL": "Display type" + }, + "MESSAGE": { + "LABEL": "Xabar", + "PLACEHOLDER": "Please enter a message to show users with the form" + }, + "BUTTON_TEXT": { + "LABEL": "Button text", + "PLACEHOLDER": "Please rate us" + }, + "LANGUAGE": { + "LABEL": "Language", + "PLACEHOLDER": "Select template language" + }, + "MESSAGE_PREVIEW": { + "LABEL": "Message preview", + "TOOLTIP": "This may vary slightly when rendered on WhatsApp's platform." + }, + "TEMPLATE_STATUS": { + "APPROVED": "Approved by WhatsApp", + "PENDING": "Pending WhatsApp approval", + "REJECTED": "Meta rejected the template", + "DEFAULT": "Needs WhatsApp approval", + "NOT_FOUND": "The template does not exist in the Meta platform." + }, + "TEMPLATE_CREATION": { + "SUCCESS_MESSAGE": "WhatsApp template created successfully and sent for approval", + "ERROR_MESSAGE": "Failed to create WhatsApp template" + }, + "TEMPLATE_UPDATE_DIALOG": { + "TITLE": "Edit survey details", + "DESCRIPTION": "We will delete the previous template and make a new one which will be sent again for WhatsApp approval", + "CONFIRM": "Create new template", + "CANCEL": "Go back" + }, + "UTILITY_ANALYZER": { + "ACTION": "Check utility fit", + "HELPER_NOTE": "Check this message before submission to improve Utility fit. The system creates a dedicated CSAT template with buttons for reporting and submits it as Utility; Meta may still reclassify it as Marketing based on content.", + "RESULT_LABEL": "Meta category prediction", + "GUIDANCE_NOTE": "This is a guidance check, not a guarantee of Meta approval.", + "SUGGESTION_LABEL": "Suggested utility-safe rewrite", + "APPLY": "Use this rewrite", + "ERROR_MESSAGE": "Couldn't analyze the message. Please try again.", + "CLASSIFICATION": { + "LIKELY_UTILITY": "Likely Utility", + "LIKELY_MARKETING": "Likely Marketing", + "UNCLEAR": "Needs clarification" + } + }, + "SURVEY_RULE": { + "LABEL": "Survey rule", + "DESCRIPTION_PREFIX": "Send the survey if the conversation", + "DESCRIPTION_SUFFIX": "any of the labels", + "OPERATOR": { + "CONTAINS": "contains", + "DOES_NOT_CONTAINS": "does not contain" + }, + "SELECT_PLACEHOLDER": "select labels" + }, + "NOTE": "Note: CSAT surveys are sent only once per conversation", + "WHATSAPP_NOTE": "Note: When you save, the system creates a dedicated CSAT template in WhatsApp (used to capture rating and feedback in reports) and submits it as Utility for approval. Meta may still classify it as Marketing based on content. After approval, surveys are sent only once per conversation as per the survey rule.", + "API": { + "SUCCESS_MESSAGE": "CSAT settings updated successfully", + "ERROR_MESSAGE": "We couldn't update CSAT settings. Please try again later." + } + }, + "BUSINESS_HOURS": { + "TITLE": "Set your availability", + "SUBTITLE": "Set your availability on your livechat widget", + "WEEKLY_TITLE": "Set your weekly hours", + "TIMEZONE_LABEL": "Select timezone", + "UPDATE": "Update business hours settings", + "TOGGLE_AVAILABILITY": "Enable business availability for this inbox", + "UNAVAILABLE_MESSAGE_LABEL": "Unavailable message for visitors", + "TOGGLE_HELP": "Enabling business availability will show the available hours on live chat widget even if all the agents are offline. Outside available hours visitors can be warned with a message and a pre-chat form.", + "DAY": { + "DAY": "Day", + "AVAILABILITY": "Availability", + "HOURS": "Hours", + "ENABLE": "Enable availability for this day", + "UNAVAILABLE": "Unavailable", + "VALIDATION_ERROR": "Starting time should be before closing time.", + "CHOOSE": "Choose" + }, + "ALL_DAY": "All-Day" + }, + "IMAP": { + "TITLE": "IMAP", + "SUBTITLE": "Set your IMAP details", + "NOTE_TEXT": "To enable SMTP, please configure IMAP.", + "UPDATE": "Update IMAP settings", + "TOGGLE_AVAILABILITY": "Enable IMAP configuration for this inbox", + "TOGGLE_HELP": "Enabling IMAP will help the user to receive email", + "EDIT": { + "SUCCESS_MESSAGE": "IMAP settings updated successfully", + "ERROR_MESSAGE": "Unable to update IMAP settings" + }, + "ADDRESS": { + "LABEL": "Address", + "PLACE_HOLDER": "Address (Eg: imap.gmail.com)" + }, + "PORT": { + "LABEL": "Port", + "PLACE_HOLDER": "Port" + }, + "LOGIN": { + "LABEL": "Login", + "PLACE_HOLDER": "Login" + }, + "PASSWORD": { + "LABEL": "Password", + "PLACE_HOLDER": "Password" + }, + "ENABLE_SSL": "Enable SSL", + "AUTH_MECHANISM": "Authentication" + }, + "MICROSOFT": { + "TITLE": "Microsoft", + "SUBTITLE": "Reauthorize your MICROSOFT account" + }, + "SMTP": { + "TITLE": "SMTP", + "SUBTITLE": "Set your SMTP details", + "UPDATE": "Update SMTP settings", + "TOGGLE_AVAILABILITY": "Enable SMTP configuration for this inbox", + "TOGGLE_HELP": "Enabling SMTP will help the user to send email", + "EDIT": { + "SUCCESS_MESSAGE": "SMTP settings updated successfully", + "ERROR_MESSAGE": "Unable to update SMTP settings" + }, + "ADDRESS": { + "LABEL": "Address", + "PLACE_HOLDER": "Address (Eg: smtp.gmail.com)" + }, + "PORT": { + "LABEL": "Port", + "PLACE_HOLDER": "Port" + }, + "LOGIN": { + "LABEL": "Login", + "PLACE_HOLDER": "Login" + }, + "PASSWORD": { + "LABEL": "Password", + "PLACE_HOLDER": "Password" + }, + "DOMAIN": { + "LABEL": "Domain", + "PLACE_HOLDER": "Domain" + }, + "ENCRYPTION": "Encryption", + "SSL_TLS": "SSL/TLS", + "START_TLS": "STARTTLS", + "OPEN_SSL_VERIFY_MODE": "Open SSL Verify Mode", + "AUTH_MECHANISM": "Authentication" + }, + "NOTE": "Note: ", + "WIDGET_BUILDER": { + "WIDGET_OPTIONS": { + "AVATAR": { + "LABEL": "Website Avatar", + "DELETE": { + "API": { + "SUCCESS_MESSAGE": "Avatar deleted successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + } + }, + "WEBSITE_NAME": { + "LABEL": "Website Name", + "PLACE_HOLDER": "Enter your website name (eg: Acme Inc)", + "ERROR": "Please enter a valid website name" + }, + "WELCOME_HEADING": { + "LABEL": "Welcome Heading", + "PLACE_HOLDER": "Hi there!" + }, + "WELCOME_TAGLINE": { + "LABEL": "Welcome Tagline", + "PLACE_HOLDER": "We make it simple to connect with us. Ask us anything, or share your feedback." + }, + "REPLY_TIME": { + "LABEL": "Reply Time", + "IN_A_FEW_MINUTES": "In a few minutes", + "IN_A_FEW_HOURS": "In a few hours", + "IN_A_DAY": "In a day" + }, + "WIDGET_COLOR_LABEL": "Widget Color", + "WIDGET_BUBBLE": "Bubble", + "WIDGET_BUBBLE_POSITION_LABEL": "Position:", + "WIDGET_BUBBLE_TYPE_LABEL": "Type:", + "WIDGET_BUBBLE_LAUNCHER_TITLE": { + "DEFAULT": "Biz bilan suhbatlashing", + "LABEL": "Launcher Title", + "PLACE_HOLDER": "Biz bilan suhbatlashing" + }, + "UPDATE": { + "BUTTON_TEXT": "Update Widget Settings", + "API": { + "SUCCESS_MESSAGE": "Widget settings updated successfully", + "ERROR_MESSAGE": "Unable to update widget settings" + } + }, + "WIDGET_VIEW_OPTION": { + "PREVIEW": "Preview", + "SCRIPT": "Script" + }, + "WIDGET_BUBBLE_POSITION": { + "LEFT": "Left", + "RIGHT": "Right" + }, + "WIDGET_BUBBLE_TYPE": { + "STANDARD": "Standard", + "EXPANDED_BUBBLE": "Expanded Bubble" + } + }, + "WIDGET_SCREEN": { + "DEFAULT": "Default", + "CHAT": "Chat mode" + }, + "REPLY_TIME": { + "IN_A_FEW_MINUTES": "Odatda bir necha daqiqada javob beramiz", + "IN_A_FEW_HOURS": "Odatda bir necha soatda javob beramiz", + "IN_A_DAY": "Odatda bir kun ichida javob beramiz" + }, + "FOOTER": { + "START_CONVERSATION_BUTTON_TEXT": "Suhbatni boshlash", + "CHAT_INPUT_PLACEHOLDER": "Xabaringizni yozing" + }, + "BODY": { + "TEAM_AVAILABILITY": { + "ONLINE": "We are Online", + "OFFLINE": "Hozircha javob bera olmaymiz" + }, + "USER_MESSAGE": "Hi", + "AGENT_MESSAGE": "Hello" + }, + "BRANDING_TEXT": "Chatwoot yordamida ishlaydi", + "SCRIPT_SETTINGS": "\n window.chatwootSettings = {options};" + }, + "EMAIL_PROVIDERS": { + "MICROSOFT": { + "TITLE": "Microsoft", + "DESCRIPTION": "Connect with Microsoft" + }, + "GOOGLE": { + "TITLE": "Google", + "DESCRIPTION": "Connect with Google" + }, + "OTHER_PROVIDERS": { + "TITLE": "Other Providers", + "DESCRIPTION": "Connect with Other Providers" + } + }, + "CHANNELS": { + "MESSENGER": "Messenger", + "WEB_WIDGET": "Website", + "TWITTER_PROFILE": "Twitter", + "TWILIO_SMS": "Twilio SMS", + "WHATSAPP": "WhatsApp", + "SMS": "SMS", + "EMAIL": "Email", + "TELEGRAM": "Telegram", + "LINE": "Line", + "API": "API Channel", + "INSTAGRAM": "Instagram", + "TIKTOK": "TikTok", + "VOICE": "Voice" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/integrationApps.json b/app/javascript/dashboard/i18n/locale/uz/integrationApps.json new file mode 100644 index 000000000..a922473c6 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/integrationApps.json @@ -0,0 +1,67 @@ +{ + "INTEGRATION_APPS": { + "FETCHING": "Fetching Integrations", + "NO_HOOK_CONFIGURED": "There are no {integrationId} integrations configured in this account.", + "HEADER": "Applications", + "COUNT": "{n} integration | {n} integrations", + "SEARCH_PLACEHOLDER": "Search...", + "NO_RESULTS": "No results found matching your search", + "STATUS": { + "ENABLED": "Enabled", + "DISABLED": "Disabled" + }, + "CONFIGURE": "Configure", + "ADD_BUTTON": "Add a new hook", + "DELETE": { + "TITLE": { + "INBOX": "Confirm deletion", + "ACCOUNT": "Disconnect" + }, + "MESSAGE": { + "INBOX": "Are you sure to delete?", + "ACCOUNT": "Are you sure to disconnect?" + }, + "CONFIRM_BUTTON_TEXT": { + "INBOX": "Yes, Delete", + "ACCOUNT": "Yes, Disconnect" + }, + "CANCEL_BUTTON_TEXT": "Cancel", + "API": { + "SUCCESS_MESSAGE": "Hook deleted successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + } + }, + "LIST": { + "FETCHING": "Fetching integration hooks", + "INBOX": "Inbox", + "ACTIONS": "Actions", + "DELETE": { + "BUTTON_TEXT": "Delete" + } + }, + "ADD": { + "FORM": { + "INBOX": { + "LABEL": "Select Inbox", + "PLACEHOLDER": "Select Inbox" + }, + "SUBMIT": "Create", + "VALIDATING_OPENAI": "Validating with OpenAI...", + "CANCEL": "Cancel" + }, + "API": { + "SUCCESS_MESSAGE": "Integration hook added successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + } + }, + "CONNECT": { + "BUTTON_TEXT": "Connect" + }, + "DISCONNECT": { + "BUTTON_TEXT": "Disconnect" + }, + "SIDEBAR_DESCRIPTION": { + "DIALOGFLOW": "Dialogflow is a natural language processing platform for building conversational interfaces. Integrating it with {installationName} lets bots handle queries first and transfer them to agents when needed. It helps qualify leads and reduce agent workload by answering FAQs. To add Dialogflow, create a Service Account in Google Console and share the credentials. Refer to the docs for details" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/integrations.json b/app/javascript/dashboard/i18n/locale/uz/integrations.json new file mode 100644 index 000000000..4965ce294 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/integrations.json @@ -0,0 +1,1204 @@ +{ + "INTEGRATION_SETTINGS": { + "SHOPIFY": { + "HEADER": "Shopify", + "DELETE": { + "TITLE": "Delete Shopify Integration", + "MESSAGE": "Are you sure you want to delete the Shopify integration?" + }, + "STORE_URL": { + "TITLE": "Connect Shopify Store", + "LABEL": "Store URL", + "PLACEHOLDER": "your-store.myshopify.com", + "HELP": "Enter your Shopify store's myshopify.com URL", + "CANCEL": "Cancel", + "SUBMIT": "Connect Store" + }, + "ERROR": "There was an error connecting to Shopify. Please try again or contact support if the issue persists." + }, + "HEADER": "Integrations", + "DESCRIPTION": "Chatwoot integrates with multiple tools and services to improve your team's efficiency. Explore the list below to configure your favorite apps.", + "LEARN_MORE": "Learn more about integrations", + "LOADING": "Fetching integrations", + "SEARCH_PLACEHOLDER": "Search integrations...", + "NO_RESULTS": "No integrations found matching your search", + "CAPTAIN": { + "DISABLED": "Captain is not enabled on your account.", + "CLICK_HERE_TO_CONFIGURE": "Click here to configure", + "LOADING_CONSOLE": "Loading Captain Console...", + "FAILED_TO_LOAD_CONSOLE": "Failed to load Captain Console. Please refresh and try again." + }, + "WEBHOOK": { + "SUBSCRIBED_EVENTS": "Subscribed Events", + "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, + "SECRET": { + "LABEL": "Secret", + "COPY": "Copy secret to clipboard", + "COPY_SUCCESS": "Secret copied to clipboard", + "TOGGLE": "Toggle secret visibility", + "CREATED_DESC": "Your webhook has been created. Use the secret below to verify webhook signatures. Please copy it now — you can also find it later in the webhook edit form.", + "DONE": "Done" + }, + "COUNT": "{n} webhook | {n} webhooks", + "SEARCH_PLACEHOLDER": "Search webhooks...", + "NO_RESULTS": "No webhooks found matching your search", + "FORM": { + "CANCEL": "Cancel", + "DESC": "Webhook events provide you the realtime information about what's happening in your Chatwoot account. Please enter a valid URL to configure a callback.", + "SUBSCRIPTIONS": { + "LABEL": "Events", + "EVENTS": { + "CONVERSATION_CREATED": "Conversation Created", + "CONVERSATION_STATUS_CHANGED": "Conversation Status Changed", + "CONVERSATION_UPDATED": "Conversation Updated", + "MESSAGE_CREATED": "Message created", + "MESSAGE_UPDATED": "Message updated", + "WEBWIDGET_TRIGGERED": "Live chat widget opened by the user", + "CONTACT_CREATED": "Contact created", + "CONTACT_UPDATED": "Contact updated", + "CONVERSATION_TYPING_ON": "Conversation Typing On", + "CONVERSATION_TYPING_OFF": "Conversation Typing Off", + "INBOX_UPDATED": "Inbox updated" + } + }, + "NAME": { + "LABEL": "Webhook Name", + "PLACEHOLDER": "Enter the name of the webhook" + }, + "END_POINT": { + "LABEL": "Webhook URL", + "PLACEHOLDER": "Example: {webhookExampleURL}", + "ERROR": "Please enter a valid URL" + }, + "EDIT_SUBMIT": "Update webhook", + "ADD_SUBMIT": "Create webhook" + }, + "TITLE": "Webhook", + "CONFIGURE": "Configure", + "HEADER": "Webhook settings", + "HEADER_BTN_TXT": "Add new webhook", + "LOADING": "Fetching attached webhooks", + "SEARCH_404": "There are no items matching this query", + "SIDEBAR_TXT": "

Webhooks

Webhooks are HTTP callbacks which can be defined for every account. They are triggered by events like message creation in Chatwoot. You can create more than one webhook for this account.

For creating a webhook, click on the Add new webhook button. You can also remove any existing webhook by clicking on the Delete button.

", + "LIST": { + "404": "There are no webhooks configured for this account.", + "TITLE": "Manage webhooks", + "TABLE_HEADER": { + "WEBHOOK_ENDPOINT": "Webhook endpoint", + "ACTIONS": "Actions" + } + }, + "EDIT": { + "BUTTON_TEXT": "Edit", + "TITLE": "Edit webhook", + "API": { + "SUCCESS_MESSAGE": "Webhook configuration updated successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + } + }, + "ADD": { + "CANCEL": "Cancel", + "TITLE": "Add new webhook", + "API": { + "SUCCESS_MESSAGE": "Webhook configuration added successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + } + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "API": { + "SUCCESS_MESSAGE": "Webhook deleted successfully", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + }, + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure to delete the webhook? ({webhookURL})", + "YES": "Yes, Delete ", + "NO": "No, Keep it" + } + } + }, + "SLACK": { + "HEADER": "Slack", + "DELETE": "Delete", + "DELETE_CONFIRMATION": { + "TITLE": "Delete the integration", + "MESSAGE": "Are you sure you want to delete the integration? Doing so will result in the loss of access to conversations on your Slack workspace." + }, + "HELP_TEXT": { + "TITLE": "How to use the Slack Integration?", + "BODY": "With this integration, all of your incoming conversations will be synced to the ***{selectedChannelName}*** channel in your Slack workspace. You can manage all your customer conversations right within the channel and never miss a message.\n\nHere are the main features of the integration:\n\n**Respond to conversations from within Slack:** To respond to a conversation in the ***{selectedChannelName}*** Slack channel, simply type out your message and send it as a thread. This will create a response back to the customer through Chatwoot. It's that simple!\n\n **Create private notes:** If you want to create private notes instead of replies, start your message with ***`note:`***. This ensures that your message is kept private and won't be visible to the customer.\n\n**Associate an agent profile:** If the person who replied on Slack has an agent profile in Chatwoot under the same email, the replies will be associated with that agent profile automatically. This means you can easily track who said what and when. On the other hand, when the replier doesn't have an associated agent profile, the replies will appear from the bot profile to the customer.", + "SELECTED": "selected" + }, + "SELECT_CHANNEL": { + "OPTION_LABEL": "Select a channel", + "UPDATE": "Update", + "BUTTON_TEXT": "Connect channel", + "DESCRIPTION": "Your Slack workspace is now linked with Chatwoot. However, the integration is currently inactive. To activate the integration and connect a channel to Chatwoot, please click the button below.\n\n**Note:** If you are attempting to connect a private channel, add the Chatwoot app to the Slack channel before proceeding with this step.", + "ATTENTION_REQUIRED": "Attention required", + "EXPIRED": "Your Slack integration has expired. To continue receiving messages on Slack, please delete the integration and connect your workspace again." + }, + "UPDATE_ERROR": "There was an error updating the integration, please try again", + "UPDATE_SUCCESS": "The channel is connected successfully", + "FAILED_TO_FETCH_CHANNELS": "There was an error fetching the channels from Slack, please try again" + }, + "DYTE": { + "CLICK_HERE_TO_JOIN": "Click here to join", + "LEAVE_THE_ROOM": "Leave the room", + "START_VIDEO_CALL_HELP_TEXT": "Start a new video call with the customer", + "JOIN_ERROR": "There was an error joining the call, please try again", + "CREATE_ERROR": "There was an error creating a meeting link, please try again" + }, + "OPEN_AI": { + "AI_ASSIST": "AI Assist", + "WITH_AI": " {option} with AI ", + "OPTIONS": { + "REPLY_SUGGESTION": "Reply Suggestion", + "SUMMARIZE": "Summarize", + "REPHRASE": "Improve Writing", + "FIX_SPELLING_GRAMMAR": "Fix Spelling and Grammar", + "SHORTEN": "Shorten", + "EXPAND": "Expand", + "MAKE_FRIENDLY": "Change message tone to friendly", + "MAKE_FORMAL": "Use formal tone", + "SIMPLIFY": "Simplify", + "CONFIDENT": "Use confident tone", + "PROFESSIONAL": "Use professional tone", + "CASUAL": "Use casual tone", + "STRAIGHTFORWARD": "Use straightforward tone" + }, + "REPLY_OPTIONS": { + "IMPROVE_REPLY": "Improve reply", + "IMPROVE_REPLY_SELECTION": "Improve the selection", + "CHANGE_TONE": { + "TITLE": "Change tone", + "OPTIONS": { + "PROFESSIONAL": "Professional", + "CASUAL": "Casual", + "STRAIGHTFORWARD": "Straightforward", + "CONFIDENT": "Confident", + "FRIENDLY": "Friendly" + } + }, + "GRAMMAR": "Fix grammar & spelling", + "SUGGESTION": "Suggest a reply", + "SUMMARIZE": "Summarize the conversation", + "ASK_COPILOT": "Ask Copilot" + }, + "ASSISTANCE_MODAL": { + "DRAFT_TITLE": "Draft content", + "GENERATED_TITLE": "Generated content", + "AI_WRITING": "AI is writing", + "BUTTONS": { + "APPLY": "Use this suggestion", + "CANCEL": "Cancel" + } + }, + "CTA_MODAL": { + "TITLE": "Integrate with OpenAI", + "DESC": "Bring advanced AI features to your dashboard with OpenAI's GPT models. To begin, enter the API key from your OpenAI account.", + "KEY_PLACEHOLDER": "Enter your OpenAI API key", + "BUTTONS": { + "NEED_HELP": "Need help?", + "DISMISS": "Dismiss", + "FINISH": "Finish Setup" + }, + "DISMISS_MESSAGE": "You can setup OpenAI integration later Whenever you want.", + "SUCCESS_MESSAGE": "OpenAI integration setup successfully" + }, + "TITLE": "Improve With AI", + "SUMMARY_TITLE": "Summary with AI", + "REPLY_TITLE": "Reply suggestion with AI", + "SUBTITLE": "An improved reply will be generated using AI, based on your current draft.", + "TONE": { + "TITLE": "Tone", + "OPTIONS": { + "PROFESSIONAL": "Professional", + "FRIENDLY": "Friendly" + } + }, + "BUTTONS": { + "GENERATE": "Generate", + "GENERATING": "Generating...", + "CANCEL": "Cancel" + }, + "GENERATE_ERROR": "There was an error processing the content, please verify your OpenAI API key and try again" + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "API": { + "SUCCESS_MESSAGE": "Integration deleted successfully" + } + }, + "CONNECT": { + "BUTTON_TEXT": "Connect" + }, + "DASHBOARD_APPS": { + "TITLE": "Dashboard Apps", + "HEADER_BTN_TXT": "Add a new dashboard app", + "SIDEBAR_TXT": "

Dashboard Apps

Dashboard Apps allow organizations to embed an application inside the Chatwoot dashboard to provide the context for customer support agents. This feature allows you to create an application independently and embed that inside the dashboard to provide user information, their orders, or their previous payment history.

When you embed your application using the dashboard in Chatwoot, your application will get the context of the conversation and contact as a window event. Implement a listener for the message event on your page to receive the context.

To add a new dashboard app, click on the button 'Add a new dashboard app'.

", + "DESCRIPTION": "Dashboard Apps allow organizations to embed an application inside the dashboard to provide the context for customer support agents. This feature allows you to create an application independently and embed that to provide user information, their orders, or their previous payment history.", + "LEARN_MORE": "Learn more about Dashboard Apps", + "COUNT": "{n} dashboard app | {n} dashboard apps", + "SEARCH_PLACEHOLDER": "Search dashboard apps...", + "NO_RESULTS": "No dashboard apps found matching your search", + "LIST": { + "404": "There are no dashboard apps configured on this account yet", + "LOADING": "Fetching dashboard apps...", + "TABLE_HEADER": { + "NAME": "Name", + "ENDPOINT": "Endpoint", + "ACTIONS": "Actions" + }, + "EDIT_TOOLTIP": "Edit app", + "DELETE_TOOLTIP": "Delete app" + }, + "FORM": { + "TITLE_LABEL": "Name", + "TITLE_PLACEHOLDER": "Enter a name for your dashboard app", + "TITLE_ERROR": "A name for the dashboard app is required", + "URL_LABEL": "Endpoint", + "URL_PLACEHOLDER": "Enter the endpoint URL where your app is hosted", + "URL_ERROR": "A valid URL is required" + }, + "CREATE": { + "HEADER": "Add a new dashboard app", + "FORM_SUBMIT": "Submit", + "FORM_CANCEL": "Cancel", + "API_SUCCESS": "Dashboard app configured successfully", + "API_ERROR": "We couldn't create an app. Please try again later" + }, + "UPDATE": { + "HEADER": "Edit dashboard app", + "FORM_SUBMIT": "Update", + "FORM_CANCEL": "Cancel", + "API_SUCCESS": "Dashboard app updated successfully", + "API_ERROR": "We couldn't update the app. Please try again later" + }, + "DELETE": { + "CONFIRM_YES": "Yes, delete it", + "CONFIRM_NO": "No, keep it", + "TITLE": "Confirm deletion", + "MESSAGE": "Are you sure to delete the app - {appName}?", + "API_SUCCESS": "Dashboard app deleted successfully", + "API_ERROR": "We couldn't delete the app. Please try again later" + } + }, + "LINEAR": { + "HEADER": "Linear", + "ADD_OR_LINK_BUTTON": "Create/Link Linear Issue", + "LOADING": "Fetching linear issues...", + "LOADING_ERROR": "There was an error fetching the linear issues, please try again", + "CREATE": "Create", + "LINK": { + "SEARCH": "Search issues", + "SELECT": "Select issue", + "TITLE": "Link", + "EMPTY_LIST": "No linear issues found", + "LOADING": "Loading", + "ERROR": "There was an error fetching the linear issues, please try again", + "LINK_SUCCESS": "Issue linked successfully", + "LINK_ERROR": "There was an error linking the issue, please try again", + "LINK_TITLE": "Conversation (#{conversationId}) with {name}" + }, + "ADD_OR_LINK": { + "TITLE": "Create/link linear issue", + "DESCRIPTION": "Create Linear issues from conversations, or link existing ones for seamless tracking.", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Enter title", + "REQUIRED_ERROR": "Title is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Enter description" + }, + "TEAM": { + "LABEL": "Team", + "PLACEHOLDER": "Select team", + "SEARCH": "Search team", + "REQUIRED_ERROR": "Team is required" + }, + "ASSIGNEE": { + "LABEL": "Assignee", + "PLACEHOLDER": "Select assignee", + "SEARCH": "Search assignee" + }, + "PRIORITY": { + "LABEL": "Priority", + "PLACEHOLDER": "Select priority", + "SEARCH": "Search priority" + }, + "LABEL": { + "LABEL": "Label", + "PLACEHOLDER": "Select label", + "SEARCH": "Search label" + }, + "STATUS": { + "LABEL": "Status", + "PLACEHOLDER": "Select status", + "SEARCH": "Search status" + }, + "PROJECT": { + "LABEL": "Project", + "PLACEHOLDER": "Select project", + "SEARCH": "Search project" + } + }, + "CREATE": "Create", + "CANCEL": "Cancel", + "CREATE_SUCCESS": "Issue created successfully", + "CREATE_ERROR": "There was an error creating the issue, please try again", + "LOADING_TEAM_ERROR": "There was an error fetching the teams, please try again", + "LOADING_TEAM_ENTITIES_ERROR": "There was an error fetching the team entities, please try again" + }, + "ISSUE": { + "STATUS": "Status", + "PRIORITY": "Priority", + "ASSIGNEE": "Assignee", + "LABELS": "Labels", + "CREATED_AT": "Created at {createdAt}" + }, + "UNLINK": { + "TITLE": "Unlink", + "SUCCESS": "Issue unlinked successfully", + "ERROR": "There was an error unlinking the issue, please try again" + }, + "NO_LINKED_ISSUES": "No linked issues found", + "DELETE": { + "TITLE": "Are you sure you want to delete the integration?", + "MESSAGE": "Are you sure you want to delete the integration?", + "CONFIRM": "Yes, delete", + "CANCEL": "Cancel" + }, + "CTA": { + "TITLE": "Connect to Linear", + "AGENT_DESCRIPTION": "Linear workspace is not connected. Request your administrator to connect a workspace to use this integration.", + "DESCRIPTION": "Linear workspace is not connected. Click the button below to connect your workspace to use this integration.", + "BUTTON_TEXT": "Connect Linear workspace" + } + }, + "NOTION": { + "HEADER": "Notion", + "DELETE": { + "TITLE": "Are you sure you want to delete the Notion integration?", + "MESSAGE": "Deleting this integration will remove access to your Notion workspace and stop all related functionality.", + "CONFIRM": "Yes, delete", + "CANCEL": "Cancel" + } + } + }, + "CAPTAIN": { + "NAME": "Captain", + "HEADER_KNOW_MORE": "Know more", + "OVERVIEW": { + "HEADER": "Overview", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Playground", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Billing", + "DESCRIPTION": "Manage credits and plan" + } + } + }, + "ASSISTANT_SWITCHER": { + "ASSISTANTS": "Assistants", + "SWITCH_ASSISTANT": "Switch between assistants", + "NEW_ASSISTANT": "Create Assistant", + "EMPTY_LIST": "No assistants found, please create one to get started" + }, + "COPILOT": { + "TITLE": "Copilot", + "TRY_THESE_PROMPTS": "Try these prompts", + "PANEL_TITLE": "Get started with Copilot", + "KICK_OFF_MESSAGE": "Need a quick summary, want to check past conversations, or draft a better reply? Copilot’s here to speed things up.", + "SEND_MESSAGE": "Send message...", + "EMPTY_MESSAGE": "There was an error generating the response. Please try again.", + "LOADER": "Captain is thinking", + "YOU": "Siz", + "USE": "Use this", + "RESET": "Reset", + "SHOW_STEPS": "Show steps", + "SELECT_ASSISTANT": "Select Assistant", + "PROMPTS": { + "SUMMARIZE": { + "LABEL": "Summarize this conversation", + "CONTENT": "Summarize the key points discussed between the customer and the support agent, including the customer's concerns, questions, and the solutions or responses provided by the support agent" + }, + "SUGGEST": { + "LABEL": "Suggest an answer", + "CONTENT": "Analyze the customer's inquiry, and draft a response that effectively addresses their concerns or questions. Ensure the reply is clear, concise, and provides helpful information." + }, + "RATE": { + "LABEL": "Rate this conversation", + "CONTENT": "Review the conversation to see how well it meets the customer's needs. Share a rating out of 5 based on tone, clarity, and effectiveness." + }, + "HIGH_PRIORITY": { + "LABEL": "High priority conversations", + "CONTENT": "Give me a summary of all high priority open conversations. Include the conversation ID, customer name (if available), last message content, and assigned agent. Group by status if relevant." + }, + "LIST_CONTACTS": { + "LABEL": "List contacts", + "CONTENT": "Show me the list of top 10 contacts. Include name, email or phone number (if available), last seen time, tags (if any)." + } + } + }, + "PLAYGROUND": { + "USER": "Siz", + "ASSISTANT": "Assistant", + "MESSAGE_PLACEHOLDER": "Type your message...", + "HEADER": "Playground", + "DESCRIPTION": "Use this playground to send messages to your assistant and check if it responds accurately, quickly, and in the tone you expect.", + "CREDIT_NOTE": "Messages sent here will count toward your Captain credits." + }, + "PAYWALL": { + "TITLE": "Upgrade to use Captain AI", + "AVAILABLE_ON": "Captain is not available on the free plan.", + "UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "You can change or cancel your plan anytime" + }, + "ENTERPRISE_PAYWALL": { + "AVAILABLE_ON": "Captain AI is only available in the Enterprise plans.", + "UPGRADE_PROMPT": "Upgrade your plan to get access to our assistants, copilot and more.", + "ASK_ADMIN": "Please reach out to your administrator for the upgrade." + }, + "BANNER": { + "RESPONSES": "You've used over 80% of your response limit. To continue using Captain AI, please upgrade.", + "DOCUMENTS": "Document limit reached. Upgrade to continue using Captain AI." + }, + "FORM": { + "CANCEL": "Cancel", + "CREATE": "Create", + "EDIT": "Update" + }, + "ASSISTANTS": { + "HEADER": "Assistants", + "NO_ASSISTANTS_AVAILABLE": "There are no assistants available in your account.", + "ADD_NEW": "Create a new assistant", + "DELETE": { + "TITLE": "Are you sure to delete the assistant?", + "DESCRIPTION": "This action is permanent. Deleting this assistant will remove it from all connected inboxes and permanently erase all generated knowledge.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "The assistant has been successfully deleted", + "ERROR_MESSAGE": "There was an error deleting the assistant, please try again." + }, + "FORM_DESCRIPTION": "Fill out the details below to name your assistant, describe its purpose, and specify the product it will support.", + "CREATE": { + "TITLE": "Create an assistant", + "SUCCESS_MESSAGE": "The assistant has been successfully created", + "ERROR_MESSAGE": "There was an error creating the assistant, please try again." + }, + "FORM": { + "UPDATE": "Update", + "SECTIONS": { + "BASIC_INFO": "Basic Information", + "SYSTEM_MESSAGES": "System Messages", + "INSTRUCTIONS": "Instructions", + "FEATURES": "Features", + "TOOLS": "Tools " + }, + "NAME": { + "LABEL": "Name", + "PLACEHOLDER": "Enter assistant name", + "ERROR": "The name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Enter assistant description", + "ERROR": "The description is required" + }, + "PRODUCT_NAME": { + "LABEL": "Product Name", + "PLACEHOLDER": "Enter product name", + "ERROR": "The product name is required" + }, + "WELCOME_MESSAGE": { + "LABEL": "Welcome Message", + "PLACEHOLDER": "Enter welcome message" + }, + "HANDOFF_MESSAGE": { + "LABEL": "Handoff Message", + "PLACEHOLDER": "Enter handoff message" + }, + "RESOLUTION_MESSAGE": { + "LABEL": "Resolution Message", + "PLACEHOLDER": "Enter resolution message" + }, + "INSTRUCTIONS": { + "LABEL": "Instructions", + "PLACEHOLDER": "Enter instructions for the assistant" + }, + "FEATURES": { + "TITLE": "Features", + "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses", + "ALLOW_CONTACT_ATTRIBUTES": "Allow access to contact information" + } + }, + "EDIT": { + "TITLE": "Update the assistant", + "SUCCESS_MESSAGE": "The assistant has been successfully updated", + "ERROR_MESSAGE": "There was an error updating the assistant, please try again.", + "NOT_FOUND": "Could not find the assistant. Please try again." + }, + "SETTINGS": { + "HEADER": "Settings", + "BASIC_SETTINGS": { + "TITLE": "Basic settings", + "DESCRIPTION": "Customize what the assistant says when ending a conversation or transferring to a human." + }, + "SYSTEM_SETTINGS": { + "TITLE": "System settings", + "DESCRIPTION": "Customize what the assistant says when ending a conversation or transferring to a human." + }, + "CONTROL_ITEMS": { + "TITLE": "The Fun Stuff", + "DESCRIPTION": "Add more control to the assistant. (a bit more visual like a story : Query guardrail → scenarios → output) Nudges user to actually utilise these.", + "OPTIONS": { + "GUARDRAILS": { + "TITLE": "Guardrails", + "DESCRIPTION": "Keeps things on track—only the kinds of questions you want your assistant to answer, nothing off-limits or off-topic." + }, + "RESPONSE_GUIDELINES": { + "TITLE": "Response guidelines", + "DESCRIPTION": "The vibe and structure of your assistant’s replies—clear and friendly? Short and snappy? Detailed and formal?" + } + } + }, + "DELETE": { + "TITLE": "Delete Assistant", + "DESCRIPTION": "This action is permanent. Deleting this assistant will remove it from all connected inboxes and permanently erase all generated knowledge.", + "BUTTON_TEXT": "Delete {assistantName}" + } + }, + "OPTIONS": { + "EDIT_ASSISTANT": "Edit Assistant", + "DELETE_ASSISTANT": "Delete Assistant", + "VIEW_CONNECTED_INBOXES": "View connected inboxes" + }, + "EMPTY_STATE": { + "TITLE": "No assistants available", + "SUBTITLE": "Create an assistant to provide quick and accurate responses to your users. It can learn from your help articles and past conversations.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Captain Assistant", + "NOTE": "Captain Assistant engages directly with customers, learns from your help docs and past conversations, and delivers instant, accurate responses. It handles the initial queries, providing quick resolutions before transferring to an agent when needed." + } + }, + "GUARDRAILS": { + "TITLE": "Guardrails", + "DESCRIPTION": "Keeps things on track—only the kinds of questions you want your assistant to answer, nothing off-limits or off-topic.", + "BULK_ACTION": { + "SELECTED": "{count} item selected | {count} items selected", + "SELECT_ALL": "Select all ({count})", + "UNSELECT_ALL": "Unselect all ({count})", + "BULK_DELETE_BUTTON": "Delete" + }, + "ADD": { + "SUGGESTED": { + "TITLE": "Example guardrails", + "ADD": "Add all", + "ADD_SINGLE": "Add this", + "SAVE": "Add and save (↵)", + "PLACEHOLDER": "Type in another guardrail..." + }, + "NEW": { + "TITLE": "Add a guardrail", + "CREATE": "Create", + "CANCEL": "Cancel", + "PLACEHOLDER": "Type in another guardrail...", + "TEST_ALL": "Test all" + } + }, + "LIST": { + "SEARCH_PLACEHOLDER": "Search..." + }, + "EMPTY_MESSAGE": "No guardrails found. Create or add examples to begin.", + "SEARCH_EMPTY_MESSAGE": "No guardrails found for this search.", + "API": { + "ADD": { + "SUCCESS": "Guardrails added successfully", + "ERROR": "There was an error adding guardrails, please try again." + }, + "UPDATE": { + "SUCCESS": "Guardrails updated successfully", + "ERROR": "There was an error updating guardrails, please try again." + }, + "DELETE": { + "SUCCESS": "Guardrails deleted successfully", + "ERROR": "There was an error deleting guardrails, please try again." + } + } + }, + "RESPONSE_GUIDELINES": { + "TITLE": "Response Guidelines", + "DESCRIPTION": "The vibe and structure of your assistant’s replies—clear and friendly? Short and snappy? Detailed and formal?", + "BULK_ACTION": { + "SELECTED": "{count} item selected | {count} items selected", + "SELECT_ALL": "Select all ({count})", + "UNSELECT_ALL": "Unselect all ({count})", + "BULK_DELETE_BUTTON": "Delete" + }, + "ADD": { + "SUGGESTED": { + "TITLE": "Example response guidelines", + "ADD": "Add all", + "ADD_SINGLE": "Add this", + "SAVE": "Add and save (↵)", + "PLACEHOLDER": "Type in another response guideline..." + }, + "NEW": { + "TITLE": "Add a response guideline", + "CREATE": "Create", + "CANCEL": "Cancel", + "PLACEHOLDER": "Type in another response guideline...", + "TEST_ALL": "Test all" + } + }, + "LIST": { + "SEARCH_PLACEHOLDER": "Search..." + }, + "EMPTY_MESSAGE": "No response guidelines found. Create or add examples to begin.", + "SEARCH_EMPTY_MESSAGE": "No response guidelines found for this search.", + "API": { + "ADD": { + "SUCCESS": "Response Guidelines added successfully", + "ERROR": "There was an error adding response guidelines, please try again." + }, + "UPDATE": { + "SUCCESS": "Response Guidelines updated successfully", + "ERROR": "There was an error updating response guidelines, please try again." + }, + "DELETE": { + "SUCCESS": "Response Guidelines deleted successfully", + "ERROR": "There was an error deleting response guidelines, please try again." + } + } + }, + "SCENARIOS": { + "TITLE": "Scenarios", + "DESCRIPTION": "Give your assistant some context—like “what to do when a user is stuck,” or “how to act during a refund request.”", + "BULK_ACTION": { + "SELECTED": "{count} item selected | {count} items selected", + "SELECT_ALL": "Select all ({count})", + "UNSELECT_ALL": "Unselect all ({count})", + "BULK_DELETE_BUTTON": "Delete" + }, + "ADD": { + "SUGGESTED": { + "TITLE": "Example scenarios", + "ADD": "Add all", + "ADD_SINGLE": "Add this", + "TOOLS_USED": "Tools used :" + }, + "NEW": { + "CREATE": "Add a scenario", + "TITLE": "Create a scenario", + "FORM": { + "TITLE": { + "LABEL": "Title", + "PLACEHOLDER": "Enter a name for the scenario", + "ERROR": "Scenario name is required" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Describe how and where this scenario will be used", + "ERROR": "Scenario description is required" + }, + "INSTRUCTION": { + "LABEL": "How to handle", + "PLACEHOLDER": "Describe how and where this scenario will be handled", + "ERROR": "Scenario content is required" + }, + "CREATE": "Create", + "CANCEL": "Cancel" + } + } + }, + "UPDATE": { + "CANCEL": "Cancel", + "UPDATE": "Update changes" + }, + "LIST": { + "SEARCH_PLACEHOLDER": "Search..." + }, + "EMPTY_MESSAGE": "No scenarios found. Create or add examples to begin.", + "SEARCH_EMPTY_MESSAGE": "No scenarios found for this search.", + "API": { + "ADD": { + "SUCCESS": "Scenarios added successfully", + "ERROR": "There was an error adding scenarios, please try again." + }, + "UPDATE": { + "SUCCESS": "Scenarios updated successfully", + "ERROR": "There was an error updating scenarios, please try again." + }, + "DELETE": { + "SUCCESS": "Scenarios deleted successfully", + "ERROR": "There was an error deleting scenarios, please try again." + } + } + } + }, + "DOCUMENTS": { + "HEADER": "Documents", + "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", + "SELECTED": "{count} selected", + "SELECT_ALL": "Select all ({count})", + "UNSELECT_ALL": "Unselect all ({count})", + "BULK_DELETE_BUTTON": "Delete", + "BULK_SYNC_BUTTON": "Refresh", + "BULK_DELETE": { + "TITLE": "Delete documents?", + "DESCRIPTION": "Are you sure you want to delete the selected documents? This action cannot be undone.", + "CONFIRM": "Yes, delete all", + "SUCCESS_MESSAGE": "Documents deleted successfully", + "ERROR_MESSAGE": "There was an error deleting the documents, please try again." + }, + "BULK_SYNC": { + "SUCCESS_MESSAGE_ONE": "Refresh queued for 1 document", + "SUCCESS_MESSAGE": "Refresh queued for {count} documents", + "ZERO_MESSAGE": "No documents marked for refresh.", + "ERROR_MESSAGE": "There was an error queuing the refresh, please try again." + }, + "SYNC": { + "QUEUED_MESSAGE": "Refresh queued. We'll update the document shortly.", + "ERROR_MESSAGE": "Could not queue refresh, please try again." + }, + "FILTERS": { + "SOURCE": { + "ALL": "All sources", + "WEB": "Web pages", + "PDF": "PDFs" + }, + "STATUS": { + "ANY": "Any status", + "UPDATED": "Updated", + "NEEDS_UPDATE": "Needs update", + "UPDATING": "Updating", + "FAILED": "Failed" + }, + "SORT": { + "RECENTLY_UPDATED": "Recently updated", + "RECENTLY_CREATED": "Recently created" + }, + "SEARCH_PLACEHOLDER": "Search..." + }, + "SYNC_STATUS": { + "SYNCED": "last updated {time}", + "SYNCING": "updating...", + "STALE_SYNC": "update stalled", + "FAILED": "Failed to sync", + "NEVER_SYNCED": "not updated yet" + }, + "SYNC_ERRORS": { + "NOT_FOUND": "Page not found", + "ACCESS_DENIED": "Access denied", + "TIMEOUT": "Page took too long to respond", + "CONTENT_EMPTY": "Page returned empty content", + "FETCH_FAILED": "Could not fetch page", + "SYNC_ERROR": "Unexpected error", + "DEFAULT": "Sync error" + }, + "RELATED_RESPONSES": { + "TITLE": "Related FAQs", + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Mavjud emas", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Copy", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." + }, + "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", + "CREATE": { + "TITLE": "Add a document", + "SUCCESS_MESSAGE": "The document has been successfully created", + "ERROR_MESSAGE": "There was an error creating the document, please try again." + }, + "FORM": { + "TYPE": { + "LABEL": "Document Type", + "URL": "URL", + "PDF": "PDF File" + }, + "URL": { + "LABEL": "URL", + "PLACEHOLDER": "Enter the URL of the document", + "ERROR": "Please provide a valid URL for the document" + }, + "PDF_FILE": { + "LABEL": "PDF File", + "CHOOSE_FILE": "Choose PDF file", + "ERROR": "Please select a PDF file", + "HELP_TEXT": "Maximum file size: 10MB", + "INVALID_TYPE": "Please select a valid PDF file", + "TOO_LARGE": "File size exceeds 10MB limit" + }, + "NAME": { + "LABEL": "Document Name (Optional)", + "PLACEHOLDER": "Enter a name for the document" + } + }, + "DELETE": { + "TITLE": "Are you sure to delete the document?", + "DESCRIPTION": "This action is permanent. Deleting this document will permanently erase all generated knowledge.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "The document has been successfully deleted", + "ERROR_MESSAGE": "There was an error deleting the document, please try again." + }, + "OPTIONS": { + "VIEW_DETAILS": "View details", + "SYNC_NOW": "Refresh now", + "RETRY_SYNC": "Retry refresh", + "DELETE_DOCUMENT": "Delete Document" + }, + "EMPTY_STATE": { + "TITLE": "No documents available", + "SUBTITLE": "Documents are used by your assistant to generate FAQs. You can import documents to provide context for your assistant.", + "FILTERED_TITLE": "No matching documents", + "FILTERED_SUBTITLE": "Try changing the source, status, or search term.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Captain Document", + "NOTE": "A document in Captain serves as a knowledge resource for the assistant. By connecting your help center or guides, Captain can analyze the content and provide accurate responses for customer inquiries." + } + } + }, + "CUSTOM_TOOLS": { + "HEADER": "Tools", + "ADD_NEW": "Create a new tool", + "SOFT_LIMIT_WARNING": "Having more than 10 tools may reduce the assistant's reliability in selecting the right tool. Consider removing unused tools for better results.", + "EMPTY_STATE": { + "TITLE": "No custom tools available", + "SUBTITLE": "Create custom tools to connect your assistant with external APIs and services, enabling it to fetch data and perform actions on your behalf.", + "FEATURE_SPOTLIGHT": { + "TITLE": "Custom Tools", + "NOTE": "Custom tools allow your assistant to interact with external APIs and services. Create tools to fetch data, perform actions, or integrate with your existing systems to enhance your assistant's capabilities." + } + }, + "FORM_DESCRIPTION": "Configure your custom tool to connect with external APIs", + "OPTIONS": { + "EDIT_TOOL": "Edit tool", + "DELETE_TOOL": "Delete tool" + }, + "CREATE": { + "TITLE": "Create Custom Tool", + "SUCCESS_MESSAGE": "Custom tool created successfully", + "ERROR_MESSAGE": "Failed to create custom tool" + }, + "EDIT": { + "TITLE": "Edit Custom Tool", + "SUCCESS_MESSAGE": "Custom tool updated successfully", + "ERROR_MESSAGE": "Failed to update custom tool" + }, + "DELETE": { + "TITLE": "Delete Custom Tool", + "DESCRIPTION": "Are you sure you want to delete this custom tool? This action cannot be undone.", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "Custom tool deleted successfully", + "ERROR_MESSAGE": "Failed to delete custom tool" + }, + "PAYWALL": { + "TITLE": "Upgrade to use tools with Captain", + "AVAILABLE_ON": "Captain Tools are only available in Business and Enterprise plans. Please upgrade to Business plan to use the feature.", + "UPGRADE_PROMPT": "", + "UPGRADE_NOW": "Open billing", + "CANCEL_ANYTIME": "" + }, + "ENTERPRISE_PAYWALL": { + "AVAILABLE_ON": "Captain Tools are only available in the paid plans.", + "UPGRADE_PROMPT": "Please upgrade to a paid plan to use this feature.", + "ASK_ADMIN": "Please reach out to your administrator for the upgrade." + }, + "TEST": { + "BUTTON": "Test connection", + "SUCCESS": "Endpoint returned HTTP {status}", + "ERROR": "Connection failed", + "DISABLED_HINT": "Testing is only available for endpoints without templates or request bodies." + }, + "FORM": { + "TITLE": { + "LABEL": "Tool Name", + "PLACEHOLDER": "Order Lookup", + "ERROR": "Tool name is required", + "MAX_LENGTH_ERROR": "Tool name must be {max} characters or fewer" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Looks up order details by order ID" + }, + "HTTP_METHOD": { + "LABEL": "Method" + }, + "ENDPOINT_URL": { + "LABEL": "Endpoint URL", + "PLACEHOLDER": "https://api.example.com/orders/{'{{'} order_id {'}}'}", + "ERROR": "Valid URL is required" + }, + "AUTH_TYPE": { + "LABEL": "Authentication Type" + }, + "AUTH_TYPES": { + "NONE": "None", + "BEARER": "Bearer Token", + "BASIC": "Basic Auth", + "API_KEY": "API Key" + }, + "AUTH_CONFIG": { + "BEARER_TOKEN": "Bearer Token", + "BEARER_TOKEN_PLACEHOLDER": "Enter your bearer token", + "USERNAME": "Username", + "USERNAME_PLACEHOLDER": "Enter username", + "PASSWORD": "Password", + "PASSWORD_PLACEHOLDER": "Enter password", + "API_KEY": "Header Name", + "API_KEY_PLACEHOLDER": "X-API-Key", + "API_VALUE": "Header Value", + "API_VALUE_PLACEHOLDER": "Enter API key value" + }, + "PARAMETERS": { + "LABEL": "Parameters", + "HELP_TEXT": "Define the parameters that will be extracted from user queries" + }, + "ADD_PARAMETER": "Add Parameter", + "PARAM_NAME": { + "PLACEHOLDER": "Parameter name (e.g., order_id)" + }, + "PARAM_TYPE": { + "PLACEHOLDER": "Type" + }, + "PARAM_TYPES": { + "STRING": "String", + "NUMBER": "Number", + "BOOLEAN": "Boolean", + "ARRAY": "Array", + "OBJECT": "Object" + }, + "PARAM_DESCRIPTION": { + "PLACEHOLDER": "Description of the parameter" + }, + "PARAM_REQUIRED": { + "LABEL": "Required" + }, + "REQUEST_TEMPLATE": { + "LABEL": "Request Body Template (Optional)", + "PLACEHOLDER": "{'{'}\n \"order_id\": \"{'{{'} order_id {'}}'}\"\n{'}'}" + }, + "RESPONSE_TEMPLATE": { + "LABEL": "Response Template (Optional)", + "PLACEHOLDER": "Order {'{{'} order_id {'}}'} status: {'{{'} status {'}}'}" + }, + "ERRORS": { + "PARAM_NAME_REQUIRED": "Parameter name is required" + } + } + }, + "RESPONSES": { + "HEADER": "FAQs", + "PENDING_FAQS": "Pending FAQs", + "ADD_NEW": "Create new FAQ", + "DOCUMENTABLE": { + "CONVERSATION": "Conversation #{id}" + }, + "SELECTED": "{count} selected", + "SELECT_ALL": "Select all ({count})", + "UNSELECT_ALL": "Unselect all ({count})", + "SEARCH_PLACEHOLDER": "Search FAQs...", + "BULK_APPROVE_BUTTON": "Approve", + "BULK_DELETE_BUTTON": "Delete", + "BULK_APPROVE": { + "SUCCESS_MESSAGE": "FAQs approved successfully", + "ERROR_MESSAGE": "There was an error approving the FAQs, please try again." + }, + "BULK_DELETE": { + "TITLE": "Delete FAQs?", + "DESCRIPTION": "Are you sure you want to delete the selected FAQs? This action cannot be undone.", + "CONFIRM": "Yes, delete all", + "SUCCESS_MESSAGE": "FAQs deleted successfully", + "ERROR_MESSAGE": "There was an error deleting the FAQs, please try again." + }, + "DELETE": { + "TITLE": "Are you sure to delete the FAQ?", + "DESCRIPTION": "", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "FAQ deleted successfully", + "ERROR_MESSAGE": "There was an error deleting the FAQ, please try again." + }, + "FILTER": { + "ASSISTANT": "Assistant: {selected}", + "STATUS": "Status: {selected}", + "ALL_ASSISTANTS": "All" + }, + "STATUS": { + "TITLE": "Status", + "PENDING": "Pending", + "APPROVED": "Approved", + "ALL": "All" + }, + "PENDING_BANNER": { + "TITLE": "Captain has found some FAQs your customers were looking for.", + "ACTION": "Click here to review" + }, + "FORM_DESCRIPTION": "Add a question and its corresponding answer to the knowledge base and select the assistant it should be associated with.", + "CREATE": { + "TITLE": "Add an FAQ", + "SUCCESS_MESSAGE": "The response has been added successfully.", + "ERROR_MESSAGE": "An error occurred while adding the response. Please try again." + }, + "FORM": { + "QUESTION": { + "LABEL": "Question", + "PLACEHOLDER": "Enter the question here", + "ERROR": "Please provide a valid question." + }, + "ANSWER": { + "LABEL": "Answer", + "PLACEHOLDER": "Enter the answer here", + "ERROR": "Please provide a valid answer." + } + }, + "EDIT": { + "TITLE": "Update the FAQ", + "SUCCESS_MESSAGE": "The FAQ has been successfully updated", + "ERROR_MESSAGE": "There was an error updating the FAQ, please try again", + "APPROVE_SUCCESS_MESSAGE": "The FAQ was marked as approved" + }, + "OPTIONS": { + "APPROVE": "Approve", + "EDIT_RESPONSE": "Edit", + "DELETE_RESPONSE": "Delete" + }, + "EMPTY_STATE": { + "TITLE": "No FAQs Found", + "NO_PENDING_TITLE": "There are no more pending FAQs to review", + "SUBTITLE": "FAQs help your assistant provide quick and accurate answers to questions from your customers. They can be generated automatically from your content or can be added manually.", + "CLEAR_SEARCH": "Clear active filters", + "FEATURE_SPOTLIGHT": { + "TITLE": "Captain FAQ", + "NOTE": "Captain FAQs detects common customer questions—whether missing from your knowledge base or frequently asked—and generates relevant FAQs to improve support. You can review each suggestion and decide whether to approve or reject it." + } + } + }, + "INBOXES": { + "HEADER": "Connected Inboxes", + "ADD_NEW": "Connect a new inbox", + "OPTIONS": { + "DISCONNECT": "Disconnect" + }, + "DELETE": { + "TITLE": "Are you sure to disconnect the inbox?", + "DESCRIPTION": "", + "CONFIRM": "Yes, delete", + "SUCCESS_MESSAGE": "The inbox was successfully disconnected.", + "ERROR_MESSAGE": "There was an error disconnecting the inbox, please try again." + }, + "FORM_DESCRIPTION": "Choose an inbox to connect with the assistant.", + "CREATE": { + "TITLE": "Connect an Inbox", + "SUCCESS_MESSAGE": "The inbox was successfully connected.", + "ERROR_MESSAGE": "An error occurred while connecting the inbox. Please try again." + }, + "FORM": { + "INBOX": { + "LABEL": "Inbox", + "PLACEHOLDER": "Choose the inbox to deploy the assistant.", + "ERROR": "An inbox selection is required." + } + }, + "EMPTY_STATE": { + "TITLE": "No Connected Inboxes", + "SUBTITLE": "Connecting an inbox allows the assistant to handle initial questions from your customers before transferring them to you." + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/labelsMgmt.json b/app/javascript/dashboard/i18n/locale/uz/labelsMgmt.json new file mode 100644 index 000000000..96e272e46 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/labelsMgmt.json @@ -0,0 +1,89 @@ +{ + "LABEL_MGMT": { + "HEADER": "Labels", + "HEADER_BTN_TXT": "Add label", + "LOADING": "Fetching labels", + "DESCRIPTION": "Labels help you categorize and prioritize conversations and leads. You can assign a label to a conversation or contact using the side panel.", + "LEARN_MORE": "Learn more about labels", + "COUNT": "{n} label | {n} labels", + "SEARCH_PLACEHOLDER": "Search labels...", + "NO_RESULTS": "No labels found matching your search", + "SEARCH_404": "There are no items matching this query", + "LIST": { + "404": "There are no labels available in this account.", + "TITLE": "Manage labels", + "DESC": "Labels let you group the conversations together.", + "TABLE_HEADER": { + "NAME": "Name", + "DESCRIPTION": "Description", + "COLOR": "Color", + "ACTION": "Actions" + } + }, + "FORM": { + "NAME": { + "LABEL": "Label Name", + "PLACEHOLDER": "Label name", + "REQUIRED_ERROR": "Label name is required", + "MINIMUM_LENGTH_ERROR": "Minimum length 2 is required", + "VALID_ERROR": "Only Alphabets, Numbers, Hyphen and Underscore are allowed" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "Label Description" + }, + "COLOR": { + "LABEL": "Color" + }, + "SHOW_ON_SIDEBAR": { + "LABEL": "Show label on sidebar" + }, + "EDIT": "Edit", + "CREATE": "Create", + "DELETE": "Delete", + "CANCEL": "Cancel" + }, + "SUGGESTIONS": { + "TOOLTIP": { + "SINGLE_SUGGESTION": "Add label to conversation", + "MULTIPLE_SUGGESTION": "Select this label", + "DESELECT": "Deselect label", + "DISMISS": "Dismiss suggestion" + }, + "POWERED_BY": "Chatwoot AI", + "DISMISS": "Dismiss", + "ADD_SELECTED_LABELS": "Add selected labels", + "ADD_SELECTED_LABEL": "Add selected label", + "ADD_ALL_LABELS": "Add all labels", + "SUGGESTED_LABELS": "Suggested labels" + }, + "ADD": { + "TITLE": "Add label", + "DESC": "Labels let you group the conversations together.", + "API": { + "SUCCESS_MESSAGE": "Label added successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "EDIT": { + "TITLE": "Edit label", + "API": { + "SUCCESS_MESSAGE": "Label updated successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "API": { + "SUCCESS_MESSAGE": "Label deleted successfully", + "ERROR_MESSAGE": "There was an error, please try again" + }, + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure to delete ", + "YES": "Yes, Delete ", + "NO": "No, Keep " + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/login.json b/app/javascript/dashboard/i18n/locale/uz/login.json new file mode 100644 index 000000000..061284247 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/login.json @@ -0,0 +1,41 @@ +{ + "LOGIN": { + "TITLE": "Login to Chatwoot", + "EMAIL": { + "LABEL": "Email", + "PLACEHOLDER": "example{'@'}companyname.com", + "ERROR": "Please enter a valid email address" + }, + "PASSWORD": { + "LABEL": "Password", + "PLACEHOLDER": "Password" + }, + "API": { + "SUCCESS_MESSAGE": "Login successful", + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again.", + "UNAUTH": "Username or password is incorrect. Please try again." + }, + "OAUTH": { + "GOOGLE_LOGIN": "Login with Google", + "BUSINESS_ACCOUNTS_ONLY": "Please use your company email address to login", + "NO_ACCOUNT_FOUND": "We couldn't find an account for your email address." + }, + "FORGOT_PASSWORD": "Forgot your password?", + "CREATE_NEW_ACCOUNT": "Create a new account", + "SUBMIT": "Login", + "SAML": { + "LABEL": "Login via SSO", + "TITLE": "Initiate Single Sign-on (SSO)", + "SUBTITLE": "Enter your work email to access your organization", + "BACK_TO_LOGIN": "Login via Password", + "WORK_EMAIL": { + "LABEL": "Work Email", + "PLACEHOLDER": "Enter your work email" + }, + "SUBMIT": "Continue with SSO", + "API": { + "ERROR_MESSAGE": "SSO authentication failed. Please check your credentials and try again." + } + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/macros.json b/app/javascript/dashboard/i18n/locale/uz/macros.json new file mode 100644 index 000000000..e51975921 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/macros.json @@ -0,0 +1,121 @@ +{ + "MACROS": { + "HEADER": "Macros", + "DESCRIPTION": "A macro is a set of saved actions that help customer service agents easily complete tasks. The agents can define a set of actions like tagging a conversation with a label, sending an email transcript, updating a custom attribute, etc., and they can run these actions in a single click.", + "LEARN_MORE": "Learn more about macros", + "COUNT": "{n} macro | {n} macros", + "HEADER_BTN_TXT": "Add a new macro", + "HEADER_BTN_TXT_SAVE": "Save macro", + "LOADING": "Fetching macros", + "SEARCH_PLACEHOLDER": "Search macros...", + "NO_RESULTS": "No macros found matching your search", + "ERROR": "Something went wrong. Please try again", + "ORDER_INFO": "Macros will run in the order you add your actions. You can rearrange them by dragging them by the handle beside each node.", + "ADD": { + "FORM": { + "NAME": { + "LABEL": "Macro name", + "PLACEHOLDER": "Enter a name for your macro", + "ERROR": "Name is required for creating a macro" + }, + "ACTIONS": { + "LABEL": "Actions" + } + }, + "API": { + "SUCCESS_MESSAGE": "Macro added successfully", + "ERROR_MESSAGE": "Unable to create macro, Please try again later" + } + }, + "LIST": { + "TABLE_HEADER": { + "NAME": "Name", + "CREATED BY": "Created by", + "LAST_UPDATED_BY": "Last updated by", + "VISIBILITY": "Visibility", + "ACTIONS": "Actions" + }, + "404": "No macros found" + }, + "DELETE": { + "TOOLTIP": "Delete macro", + "CONFIRM": { + "MESSAGE": "Are you sure to delete ", + "YES": "Yes, Delete", + "NO": "No" + }, + "API": { + "SUCCESS_MESSAGE": "Macro deleted successfully", + "ERROR_MESSAGE": "There was an error deleting the macro. Please try again later" + } + }, + "VIEW": { + "TOOLTIP": "View macro" + }, + "EDIT": { + "TOOLTIP": "Edit macro", + "API": { + "SUCCESS_MESSAGE": "Macro updated successfully", + "ERROR_MESSAGE": "Could not update Macro, Please try again later" + } + }, + "EDITOR": { + "START_FLOW": "Start Flow", + "END_FLOW": "End Flow", + "LOADING": "Fetching macro", + "ADD_BTN_TOOLTIP": "Add new action", + "DELETE_BTN_TOOLTIP": "Delete Action", + "VISIBILITY": { + "LABEL": "Macro Visibility", + "GLOBAL": { + "LABEL": "Public", + "DESCRIPTION": "This macro is available publicly for all agents in this account.", + "CREATE_DISABLED_DESCRIPTION": "Only administrators can create public macros.", + "EDIT_DISABLED_DESCRIPTION": "Only administrators can edit public macros." + }, + "PERSONAL": { + "LABEL": "Private", + "DESCRIPTION": "This macro will be private to you and not be available to others." + } + } + }, + "EXECUTE": { + "BUTTON_TOOLTIP": "Execute", + "PREVIEW": "Preview Macro", + "EXECUTED_SUCCESSFULLY": "Macro executed successfully" + }, + "ERRORS": { + "ATTRIBUTE_KEY_REQUIRED": "Attribute key is required", + "FILTER_OPERATOR_REQUIRED": "Filter operator is required", + "VALUE_REQUIRED": "Value is required", + "VALUE_MUST_BE_BETWEEN_1_AND_998": "Value must be between 1 and 998", + "ACTION_PARAMETERS_REQUIRED": "Action parameters are required", + "ATLEAST_ONE_CONDITION_REQUIRED": "At least one condition is required", + "ATLEAST_ONE_ACTION_REQUIRED": "At least one action is required" + }, + "ACTIONS": { + "ASSIGN_TEAM": "Assign a Team", + "ASSIGN_AGENT": "Assign an Agent", + "ADD_LABEL": "Add a Label", + "REMOVE_LABEL": "Remove a Label", + "REMOVE_ASSIGNED_AGENT": "Remove Assigned Agent", + "REMOVE_ASSIGNED_TEAM": "Remove Assigned Team", + "SEND_EMAIL_TRANSCRIPT": "Send an Email Transcript", + "MUTE_CONVERSATION": "Mute Conversation", + "SNOOZE_CONVERSATION": "Snooze Conversation", + "RESOLVE_CONVERSATION": "Resolve Conversation", + "SEND_ATTACHMENT": "Send Attachment", + "SEND_MESSAGE": "Send a Message", + "CHANGE_PRIORITY": "Change Priority", + "ADD_PRIVATE_NOTE": "Add a Private Note", + "SEND_WEBHOOK_EVENT": "Send Webhook Event" + }, + "PRIORITY_TYPES": { + "NONE": "None", + "LOW": "Low", + "MEDIUM": "Medium", + "HIGH": "High", + "URGENT": "Urgent" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/mfa.json b/app/javascript/dashboard/i18n/locale/uz/mfa.json new file mode 100644 index 000000000..8e356aad4 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/mfa.json @@ -0,0 +1,110 @@ +{ + "MFA_SETTINGS": { + "TITLE": "Two-Factor Authentication", + "SUBTITLE": "Protect your account from unauthorized access with TOTP-based authentication. This adds an extra layer of security to your account.", + "DESCRIPTION": "Add an extra layer of security to your account using a time-based one-time password (TOTP)", + "STATUS_TITLE": "Authentication Status", + "STATUS_DESCRIPTION": "Manage your two-factor authentication settings and backup recovery codes", + "ENABLED": "Enabled", + "DISABLED": "Disabled", + "STATUS_ENABLED": "Two-factor authentication is active", + "STATUS_ENABLED_DESC": "Your account is protected with an additional layer of security", + "ENABLE_BUTTON": "Enable Two-Factor Authentication", + "ENHANCE_SECURITY": "Enhance Your Account Security", + "ENHANCE_SECURITY_DESC": "Two-factor authentication adds an extra layer of security by requiring a verification code from your authenticator app in addition to your password.", + "SETUP": { + "STEP_NUMBER_1": "1", + "STEP_NUMBER_2": "2", + "STEP1_TITLE": "Scan QR Code with Your Authenticator App", + "STEP1_DESCRIPTION": "Use Google Authenticator, Authy, or any TOTP-compatible app", + "LOADING_QR": "Loading...", + "MANUAL_ENTRY": "Can't scan? Enter code manually", + "SECRET_KEY": "Secret Key", + "COPY": "Copy", + "ENTER_CODE": "Enter the 6-digit code from your authenticator app", + "ENTER_CODE_PLACEHOLDER": "000000", + "VERIFY_BUTTON": "Verify & Continue", + "CANCEL": "Cancel", + "ERROR_STARTING": "MFA not enabled. Please contact administrator.", + "INVALID_CODE": "Invalid verification code", + "SECRET_COPIED": "Secret key copied to clipboard", + "SUCCESS": "Two-factor authentication has been enabled successfully" + }, + "BACKUP": { + "TITLE": "Save Your Backup Codes", + "DESCRIPTION": "Keep these codes safe. Each can be used once if you lose access to your authenticator", + "IMPORTANT": "Important:", + "IMPORTANT_NOTE": " Save these codes in a secure location. You won't be able to see them again.", + "DOWNLOAD": "Download", + "COPY_ALL": "Copy All", + "CONFIRM": "I have saved my backup codes in a secure location and understand that I won't be able to see them again", + "COMPLETE_SETUP": "Complete Setup", + "CODES_COPIED": "Backup codes copied to clipboard" + }, + "MANAGEMENT": { + "BACKUP_CODES": "Backup Codes", + "BACKUP_CODES_DESC": "Generate new codes if you've lost or used your existing ones", + "REGENERATE": "Regenerate Backup Codes", + "DISABLE_MFA": "Disable 2FA", + "DISABLE_MFA_DESC": "Remove two-factor authentication from your account", + "DISABLE_BUTTON": "Disable Two-Factor Authentication" + }, + "DISABLE": { + "TITLE": "Disable Two-Factor Authentication", + "DESCRIPTION": "You'll need to enter your password and either a verification code from your authenticator app or a backup code to disable two-factor authentication.", + "PASSWORD": "Password", + "OTP_CODE": "Verification Code", + "OTP_CODE_PLACEHOLDER": "000000", + "BACKUP_CODE": "Backup Code", + "BACKUP_CODE_PLACEHOLDER": "Enter one of your backup codes", + "USE_BACKUP_CODE": "Lost access to your authenticator? Use a backup code instead", + "USE_OTP_CODE": "Use a verification code from your authenticator app", + "CONFIRM": "Disable 2FA", + "CANCEL": "Cancel", + "SUCCESS": "Two-factor authentication has been disabled", + "ERROR": "Failed to disable MFA. Please check your credentials." + }, + "REGENERATE": { + "TITLE": "Regenerate Backup Codes", + "DESCRIPTION": "This will invalidate your existing backup codes and generate new ones. Enter your verification code to continue.", + "OTP_CODE": "Verification Code", + "OTP_CODE_PLACEHOLDER": "000000", + "CONFIRM": "Generate New Codes", + "CANCEL": "Cancel", + "NEW_CODES_TITLE": "New Backup Codes Generated", + "NEW_CODES_DESC": "Your old backup codes have been invalidated. Save these new codes in a secure location.", + "CODES_IMPORTANT": "Important:", + "CODES_IMPORTANT_NOTE": " Each code can only be used once. Save them before closing this window.", + "DOWNLOAD_CODES": "Download Codes", + "COPY_ALL_CODES": "Copy All Codes", + "CODES_SAVED": "I've Saved My Codes", + "SUCCESS": "New backup codes have been generated", + "ERROR": "Failed to regenerate backup codes" + } + }, + "MFA_VERIFICATION": { + "TITLE": "Two-Factor Authentication", + "DESCRIPTION": "Enter your verification code to continue", + "AUTHENTICATOR_APP": "Authenticator App", + "BACKUP_CODE": "Backup Code", + "ENTER_OTP_CODE": "Enter 6-digit code from your authenticator app", + "ENTER_BACKUP_CODE": "Enter one of your backup codes", + "BACKUP_CODE_PLACEHOLDER": "000000", + "VERIFY_BUTTON": "Verify", + "TRY_ANOTHER_METHOD": "Try another verification method", + "CANCEL_LOGIN": "Cancel and return to login", + "HELP_TEXT": "Having trouble signing in?", + "LEARN_MORE": "Learn more about 2FA", + "HELP_MODAL": { + "TITLE": "Two-Factor Authentication Help", + "AUTHENTICATOR_TITLE": "Using an Authenticator App", + "AUTHENTICATOR_DESC": "Open your authenticator app (Google Authenticator, Authy, etc.) and enter the 6-digit code shown for your account.", + "BACKUP_TITLE": "Using a Backup Code", + "BACKUP_DESC": "If you don't have access to your authenticator app, you can use one of the backup codes you saved when setting up 2FA. Each code can only be used once.", + "CONTACT_TITLE": "Need More Help?", + "CONTACT_DESC_CLOUD": "If you've lost access to both your authenticator app and backup codes, please reach out to Chatwoot support for assistance.", + "CONTACT_DESC_SELF_HOSTED": "If you've lost access to both your authenticator app and backup codes, please contact your administrator for assistance." + }, + "VERIFICATION_FAILED": "Verification failed. Please try again." + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/onboarding.json b/app/javascript/dashboard/i18n/locale/uz/onboarding.json new file mode 100644 index 000000000..51d511091 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/onboarding.json @@ -0,0 +1,88 @@ +{ + "ONBOARDING_NEXT": { + "GREETING": "Hello {name}!", + "SUBTITLE": "Please review the following details", + "YOUR_DETAILS": "Your details", + "COMPANY_DETAILS": "Company details", + "FIELDS": { + "EMAIL": "Email", + "YOUR_ROLE": "Your Role", + "WEBSITE": "Website", + "LANGUAGE": "Language", + "TIMEZONE": "Timezone", + "COMPANY_SIZE": "Company Size", + "INDUSTRY": "Industry", + "REFERRAL_SOURCE": "Where did you find us?" + }, + "PLACEHOLDERS": { + "SELECT_ROLE": "Select your role", + "ENTER_WEBSITE": "www.example.com", + "SELECT_LANGUAGE": "Select language", + "SELECT_TIMEZONE": "Select timezone", + "SELECT_COMPANY_SIZE": "Select company size", + "SELECT_INDUSTRY": "Select industry", + "SELECT_REFERRAL_SOURCE": "Select source" + }, + "EMAIL_VERIFIED": "Email verified", + "SETTING_UP": "Setting up your account...", + "CONTINUE": "Continue", + "SAVING": "Saving...", + "VALIDATION_ERROR": "Please fill in all required fields", + "SUCCESS": "Details saved successfully", + "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Something went wrong. Please try again.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Connect", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Connect", + "BACK": "Back", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/report.json b/app/javascript/dashboard/i18n/locale/uz/report.json new file mode 100644 index 000000000..0171b9620 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/report.json @@ -0,0 +1,670 @@ +{ + "REPORT": { + "HEADER": "Conversations", + "LOADING_CHART": "Loading chart data...", + "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", + "DOWNLOAD_CONVERSATION_REPORTS": "Download conversation reports", + "DATA_FETCHING_FAILED": "Failed to fetch data, please try again later.", + "SUMMARY_FETCHING_FAILED": "Failed to fetch summary, please try again later.", + "METRICS": { + "CONVERSATIONS": { + "NAME": "Conversations", + "DESC": "( Total )" + }, + "INCOMING_MESSAGES": { + "NAME": "Messages received", + "DESC": "( Total )" + }, + "OUTGOING_MESSAGES": { + "NAME": "Messages sent", + "DESC": "( Total )" + }, + "FIRST_RESPONSE_TIME": { + "NAME": "First Response Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "First Response Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_TIME": { + "NAME": "Resolution Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "Resolution Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_COUNT": { + "NAME": "Resolution Count", + "DESC": "( Total )" + }, + "BOT_RESOLUTION_COUNT": { + "NAME": "Resolution Count", + "DESC": "( Total )" + }, + "BOT_HANDOFF_COUNT": { + "NAME": "Handoff Count", + "DESC": "( Total )" + }, + "REPLY_TIME": { + "NAME": "Customer waiting time", + "TOOLTIP_TEXT": "Waiting time is {metricValue} (based on {conversationCount} replies)", + "DESC": "" + } + }, + "DATE_RANGE_OPTIONS": { + "LAST_7_DAYS": "Last 7 days", + "LAST_14_DAYS": "Last 14 days", + "LAST_30_DAYS": "Last 30 days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month", + "LAST_3_MONTHS": "Last 3 months", + "LAST_6_MONTHS": "Last 6 months", + "LAST_YEAR": "Last year", + "CUSTOM_DATE_RANGE": "Custom date range" + }, + "CUSTOM_DATE_RANGE": { + "CONFIRM": "Apply", + "PLACEHOLDER": "Select date range" + }, + "GROUP_BY_FILTER_DROPDOWN_LABEL": "Group By", + "DURATION_FILTER_LABEL": "Duration", + "GROUPING_OPTIONS": { + "DAY": "Day", + "WEEK": "Week", + "MONTH": "Month", + "YEAR": "Year" + }, + "GROUP_BY_DAY_OPTIONS": [ + { + "id": 1, + "groupBy": "Day" + } + ], + "GROUP_BY_WEEK_OPTIONS": [ + { + "id": 1, + "groupBy": "Day" + }, + { + "id": 2, + "groupBy": "Week" + } + ], + "GROUP_BY_MONTH_OPTIONS": [ + { + "id": 1, + "groupBy": "Day" + }, + { + "id": 2, + "groupBy": "Week" + }, + { + "id": 3, + "groupBy": "Month" + } + ], + "GROUP_BY_YEAR_OPTIONS": [ + { + "id": 2, + "groupBy": "Week" + }, + { + "id": 3, + "groupBy": "Month" + }, + { + "id": 4, + "groupBy": "Year" + } + ], + "BUSINESS_HOURS": "Business Hours", + "FILTER_ACTIONS": { + "CLEAR_FILTER": "Clear filter", + "EMPTY_LIST": "No results found" + }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Unassigned", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, + "PAGINATION": { + "RESULTS": "Showing {start} to {end} of {total} results", + "PER_PAGE_TEMPLATE": "{size} / page" + } + }, + "AGENT_REPORTS": { + "HEADER": "Agents Overview", + "DESCRIPTION": "Easily track agent performance with key metrics such as conversations, response times, resolution times, and resolved cases. Click an agent's name to learn more.", + "LOADING_CHART": "Loading chart data...", + "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", + "DOWNLOAD_AGENT_REPORTS": "Download agent reports", + "FILTER_DROPDOWN_LABEL": "Select Agent", + "FILTERS": { + "INPUT_PLACEHOLDER": { + "AGENTS": "Search agents" + } + }, + "METRICS": { + "CONVERSATIONS": { + "NAME": "Conversations", + "DESC": "( Total )" + }, + "INCOMING_MESSAGES": { + "NAME": "Incoming Messages", + "DESC": "( Total )" + }, + "OUTGOING_MESSAGES": { + "NAME": "Outgoing Messages", + "DESC": "( Total )" + }, + "FIRST_RESPONSE_TIME": { + "NAME": "First Response Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "First Response Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_TIME": { + "NAME": "Resolution Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "Resolution Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_COUNT": { + "NAME": "Resolution Count", + "DESC": "( Total )" + } + }, + "DATE_RANGE": [ + { + "id": 0, + "name": "Last 7 days" + }, + { + "id": 1, + "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" + }, + { + "id": 5, + "name": "Custom date range" + } + ], + "CUSTOM_DATE_RANGE": { + "CONFIRM": "Apply", + "PLACEHOLDER": "Select date range" + } + }, + "LABEL_REPORTS": { + "HEADER": "Labels Overview", + "DESCRIPTION": "Track label performance with key metrics including conversations, response times, resolution times, and resolved cases. Click a label name for detailed insights.", + "LOADING_CHART": "Loading chart data...", + "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", + "DOWNLOAD_LABEL_REPORTS": "Download label reports", + "FILTER_DROPDOWN_LABEL": "Select Label", + "FILTERS": { + "INPUT_PLACEHOLDER": { + "LABELS": "Search labels" + } + }, + "METRICS": { + "CONVERSATIONS": { + "NAME": "Conversations", + "DESC": "( Total )" + }, + "INCOMING_MESSAGES": { + "NAME": "Incoming Messages", + "DESC": "( Total )" + }, + "OUTGOING_MESSAGES": { + "NAME": "Outgoing Messages", + "DESC": "( Total )" + }, + "FIRST_RESPONSE_TIME": { + "NAME": "First Response Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "First Response Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_TIME": { + "NAME": "Resolution Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "Resolution Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_COUNT": { + "NAME": "Resolution Count", + "DESC": "( Total )" + } + }, + "DATE_RANGE": [ + { + "id": 0, + "name": "Last 7 days" + }, + { + "id": 1, + "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" + }, + { + "id": 5, + "name": "Custom date range" + } + ], + "CUSTOM_DATE_RANGE": { + "CONFIRM": "Apply", + "PLACEHOLDER": "Select date range" + } + }, + "INBOX_REPORTS": { + "HEADER": "Inbox Overview", + "DESCRIPTION": "Quickly view your inbox performance with key metrics like conversations, response times, resolution times, and resolved cases—all in one place. Click an inbox name for more details.", + "LOADING_CHART": "Loading chart data...", + "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", + "DOWNLOAD_INBOX_REPORTS": "Download inbox reports", + "FILTER_DROPDOWN_LABEL": "Select Inbox", + "ALL_INBOXES": "All Inboxes", + "SEARCH_INBOX": "Search Inbox", + "FILTERS": { + "INPUT_PLACEHOLDER": { + "INBOXES": "Search inboxes" + } + }, + "METRICS": { + "CONVERSATIONS": { + "NAME": "Conversations", + "DESC": "( Total )" + }, + "INCOMING_MESSAGES": { + "NAME": "Incoming Messages", + "DESC": "( Total )" + }, + "OUTGOING_MESSAGES": { + "NAME": "Outgoing Messages", + "DESC": "( Total )" + }, + "FIRST_RESPONSE_TIME": { + "NAME": "First Response Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "First Response Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_TIME": { + "NAME": "Resolution Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "Resolution Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_COUNT": { + "NAME": "Resolution Count", + "DESC": "( Total )" + } + }, + "DATE_RANGE": [ + { + "id": 0, + "name": "Last 7 days" + }, + { + "id": 1, + "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" + }, + { + "id": 5, + "name": "Custom date range" + } + ], + "CUSTOM_DATE_RANGE": { + "CONFIRM": "Apply", + "PLACEHOLDER": "Select date range" + } + }, + "TEAM_REPORTS": { + "HEADER": "Team Overview", + "DESCRIPTION": "Get a snapshot of your team's performance with essential metrics, including conversations, response times, resolution times, and resolved cases. Click a team name for more details.", + "LOADING_CHART": "Loading chart data...", + "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", + "DOWNLOAD_TEAM_REPORTS": "Download team reports", + "FILTER_DROPDOWN_LABEL": "Select Team", + "FILTERS": { + "ADD_FILTER": "Add filter", + "CLEAR_ALL": "Clear all", + "NO_FILTER": "No filters available", + "INPUT_PLACEHOLDER": { + "TEAMS": "Search teams" + } + }, + "METRICS": { + "CONVERSATIONS": { + "NAME": "Conversations", + "DESC": "( Total )" + }, + "INCOMING_MESSAGES": { + "NAME": "Incoming Messages", + "DESC": "( Total )" + }, + "OUTGOING_MESSAGES": { + "NAME": "Outgoing Messages", + "DESC": "( Total )" + }, + "FIRST_RESPONSE_TIME": { + "NAME": "First Response Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "First Response Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_TIME": { + "NAME": "Resolution Time", + "DESC": "( Avg )", + "INFO_TEXT": "Total number of conversations used for computation:", + "TOOLTIP_TEXT": "Resolution Time is {metricValue} (based on {conversationCount} conversations)" + }, + "RESOLUTION_COUNT": { + "NAME": "Resolution Count", + "DESC": "( Total )" + } + }, + "DATE_RANGE": [ + { + "id": 0, + "name": "Last 7 days" + }, + { + "id": 1, + "name": "Last 30 days" + }, + { + "id": 2, + "name": "Last 3 months" + }, + { + "id": 3, + "name": "Last 6 months" + }, + { + "id": 4, + "name": "Last year" + }, + { + "id": 5, + "name": "Custom date range" + } + ], + "CUSTOM_DATE_RANGE": { + "CONFIRM": "Apply", + "PLACEHOLDER": "Select date range" + } + }, + "CSAT_REPORTS": { + "HEADER": "CSAT Reports", + "NO_RECORDS": "No responses yet", + "NO_RECORDS_DESCRIPTION": "CSAT survey responses will appear here once customers start providing feedback.", + "DOWNLOAD": "Download CSAT Reports", + "DOWNLOAD_FAILED": "Failed to download CSAT Reports", + "FILTERS": { + "ADD_FILTER": "Add filter", + "CLEAR_ALL": "Clear all", + "NO_FILTER": "No filters available", + "INPUT_PLACEHOLDER": { + "AGENTS": "Search agents", + "INBOXES": "Search inboxes", + "TEAMS": "Search teams", + "RATINGS": "Search ratings" + }, + "AGENTS": { + "LABEL": "Agent" + }, + "INBOXES": { + "LABEL": "Inbox" + }, + "TEAMS": { + "LABEL": "Team" + }, + "RATINGS": { + "LABEL": "Rating" + } + }, + "TABLE": { + "HEADER": { + "CONTACT_NAME": "Contact", + "AGENT_NAME": "Agent", + "RATING": "Rating", + "FEEDBACK_TEXT": "Feedback comment", + "CONVERSATION": "Conversation", + "CUSTOMER": "Customer", + "RESPONSE": "Response", + "HANDLED_BY": "Handled by" + }, + "UNKNOWN_CUSTOMER": "Unknown customer" + }, + "NO_AGENT": "No assigned agent", + "NO_FEEDBACK": "No feedback provided", + "METRIC": { + "TOTAL_RESPONSES": { + "LABEL": "Total responses", + "TOOLTIP": "Total number of responses collected" + }, + "SATISFACTION_SCORE": { + "LABEL": "Satisfaction score", + "TOOLTIP": "Total number of positive responses / Total number of responses * 100" + }, + "RESPONSE_RATE": { + "LABEL": "Response rate", + "TOOLTIP": "Total number of responses / Total number of CSAT survey messages sent * 100" + }, + "RATING_DISTRIBUTION": "Rating distribution" + }, + "REVIEW_NOTES": { + "TITLE": "Review notes", + "PLACEHOLDER": "Add review notes about this rating...", + "SAVE": "Save", + "CANCEL": "Cancel", + "SAVING": "Saving...", + "SAVED": "Notes saved successfully", + "SAVE_ERROR": "Failed to save notes", + "UPDATED_BY": "Updated by {name} {time}", + "UPDATED_BY_LABEL": "Updated by", + "PAYWALL": { + "TITLE": "Upgrade to add review notes", + "AVAILABLE_ON": "The review notes feature is only available in the Business and Enterprise plans.", + "UPGRADE_PROMPT": "Add internal context to every CSAT response with review notes. Capture what really happened, spot patterns faster, and make better decisions from your feedback.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "You can change or cancel your plan anytime" + } + } + }, + "BOT_REPORTS": { + "HEADER": "Bot Reports", + "METRIC": { + "TOTAL_CONVERSATIONS": { + "LABEL": "No. of Conversations", + "TOOLTIP": "Total number of conversations handled by the bot" + }, + "TOTAL_RESPONSES": { + "LABEL": "Total Responses", + "TOOLTIP": "Total number of responses sent by the bot" + }, + "RESOLUTION_RATE": { + "LABEL": "Resolution Rate", + "TOOLTIP": "Total number of conversations resolved by the bot / Total number of conversations handled by the bot * 100" + }, + "HANDOFF_RATE": { + "LABEL": "Handoff Rate", + "TOOLTIP": "Total number of conversations handed off to agents / Total number of conversations handled by the bot * 100" + } + } + }, + "OVERVIEW_REPORTS": { + "HEADER": "Overview", + "LIVE": "Live", + "ACCOUNT_CONVERSATIONS": { + "HEADER": "Open Conversations", + "LOADING_MESSAGE": "Loading conversation metrics...", + "OPEN": "Open", + "UNATTENDED": "Unattended", + "UNASSIGNED": "Unassigned", + "PENDING": "Pending" + }, + "CONVERSATION_HEATMAP": { + "HEADER": "Conversation Traffic", + "NO_CONVERSATIONS": "No conversations", + "CONVERSATION": "{count} conversation", + "CONVERSATIONS": "{count} conversations", + "DOWNLOAD_REPORT": "Download report" + }, + "RESOLUTION_HEATMAP": { + "HEADER": "Resolutions", + "NO_CONVERSATIONS": "No conversations", + "CONVERSATION": "{count} conversation", + "CONVERSATIONS": "{count} conversations", + "DOWNLOAD_REPORT": "Download report" + }, + "AGENT_CONVERSATIONS": { + "HEADER": "Conversations by agents", + "LOADING_MESSAGE": "Loading agent metrics...", + "NO_AGENTS": "There are no conversations by agents", + "TABLE_HEADER": { + "AGENT": "Agent", + "OPEN": "Open", + "UNATTENDED": "Unattended", + "STATUS": "Status" + } + }, + "TEAM_CONVERSATIONS": { + "ALL_TEAMS": "All Teams", + "HEADER": "Conversations by teams", + "LOADING_MESSAGE": "Loading team metrics...", + "NO_TEAMS": "There is no data available", + "TABLE_HEADER": { + "TEAM": "Team", + "OPEN": "Open", + "UNATTENDED": "Unattended", + "STATUS": "Status" + } + }, + "AGENT_STATUS": { + "HEADER": "Agent status", + "ONLINE": "Online", + "BUSY": "Busy", + "OFFLINE": "Offline" + } + }, + "DAYS_OF_WEEK": { + "SUNDAY": "Sunday", + "MONDAY": "Monday", + "TUESDAY": "Tuesday", + "WEDNESDAY": "Wednesday", + "THURSDAY": "Thursday", + "FRIDAY": "Friday", + "SATURDAY": "Saturday" + }, + "SLA_REPORTS": { + "HEADER": "SLA Reports", + "NO_RECORDS": "SLA applied conversations are not available.", + "LOADING": "Loading SLA data...", + "DOWNLOAD_SLA_REPORTS": "Download SLA reports", + "DOWNLOAD_FAILED": "Failed to download SLA Reports", + "DROPDOWN": { + "ADD_FIlTER": "Add filter", + "CLEAR_ALL": "Clear all", + "CLEAR_FILTER": "Clear filter", + "EMPTY_LIST": "No results found", + "NO_FILTER": "No filters available", + "SEARCH": "Search filter", + "INPUT_PLACEHOLDER": { + "SLA": "SLA name", + "AGENTS": "Agent name", + "INBOXES": "Inbox name", + "LABELS": "Label name", + "TEAMS": "Team name" + }, + "SLA": "SLA Policy", + "INBOXES": "Inbox", + "AGENTS": "Agent", + "LABELS": "Label", + "TEAMS": "Team" + }, + "WITH": "with", + "METRICS": { + "HIT_RATE": { + "LABEL": "Hit Rate", + "TOOLTIP": "Percentage of SLAs created were completed successfully" + }, + "NO_OF_MISSES": { + "LABEL": "Number of Misses", + "TOOLTIP": "Total SLA misses in a certain period" + }, + "NO_OF_CONVERSATIONS": { + "LABEL": "Number of Conversations", + "TOOLTIP": "Total number of conversations with SLA" + } + }, + "TABLE": { + "HEADER": { + "POLICY": "Policy", + "CONVERSATION": "Conversation", + "AGENT": "Agent" + }, + "VIEW_DETAILS": "View Details" + } + }, + "SUMMARY_REPORTS": { + "INBOX": "Inbox", + "AGENT": "Agent", + "TEAM": "Team", + "LABEL": "Label", + "AVG_RESOLUTION_TIME": "Avg. Resolution Time", + "AVG_FIRST_RESPONSE_TIME": "Avg. First Response Time", + "AVG_REPLY_TIME": "Avg. Customer Waiting Time", + "RESOLUTION_COUNT": "Resolution Count", + "CONVERSATIONS": "No. of conversations" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/resetPassword.json b/app/javascript/dashboard/i18n/locale/uz/resetPassword.json new file mode 100644 index 000000000..955696b0c --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/resetPassword.json @@ -0,0 +1,17 @@ +{ + "RESET_PASSWORD": { + "TITLE": "Reset password", + "DESCRIPTION": "Enter the email address you use to log in to Chatwoot to get the password reset instructions.", + "GO_BACK_TO_LOGIN": "If you want to go back to the login page,", + "EMAIL": { + "LABEL": "Email", + "PLACEHOLDER": "Please enter your email.", + "ERROR": "Please enter a valid email." + }, + "API": { + "SUCCESS_MESSAGE": "Password reset link has been sent to your email.", + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." + }, + "SUBMIT": "Submit" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/search.json b/app/javascript/dashboard/i18n/locale/uz/search.json new file mode 100644 index 000000000..2fc8e7998 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/search.json @@ -0,0 +1,68 @@ +{ + "SEARCH": { + "TABS": { + "ALL": "All results", + "CONTACTS": "Contacts", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages", + "ARTICLES": "Articles" + }, + "SECTION": { + "CONTACTS": "Contacts", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages", + "ARTICLES": "Articles" + }, + "VIEW_MORE": "View more", + "LOAD_MORE": "Load more", + "SEARCHING_DATA": "Searching", + "LOADING_DATA": "Loading", + "EMPTY_STATE": "No {item} found for query '{query}'", + "EMPTY_STATE_FULL": "No results found for query '{query}'", + "PLACEHOLDER_KEYBINDING": "/to focus", + "INPUT_PLACEHOLDER": "Type 3 or more characters to search", + "RECENT_SEARCHES": "Recent searches", + "CLEAR_ALL": "Clear all", + "MOST_RECENT": "Most recent", + "EMPTY_STATE_DEFAULT": "Search by conversation id, email, phone number, messages for better search results. ", + "BOT_LABEL": "Bot", + "READ_MORE": "Read more", + "READ_LESS": "Read less", + "WROTE": "wrote:", + "FROM": "From", + "EMAIL": "Email", + "EMAIL_SUBJECT": "Subject", + "PRIVATE": "Private note", + "TRANSCRIPT": "Transcript", + "CREATED_AT": "created {time}", + "UPDATED_AT": "updated {time}", + "SORT_BY": { + "RELEVANCE": "Relevance" + }, + "DATE_RANGE": { + "LAST_7_DAYS": "Last 7 days", + "LAST_30_DAYS": "Last 30 days", + "LAST_60_DAYS": "Last 60 days", + "LAST_90_DAYS": "Last 90 days", + "CUSTOM_RANGE": "Custom range:", + "CREATED_BETWEEN": "Created between", + "AND": "and", + "APPLY": "Apply", + "BEFORE_DATE": "Before {date}", + "AFTER_DATE": "After {date}", + "TIME_RANGE": "Filter by time", + "CLEAR_FILTER": "Clear filter" + }, + "FILTERS": { + "FILTER_MESSAGE": "Filter messages by:", + "FROM": "Sender", + "IN": "Inbox", + "AGENTS": "Agents", + "CONTACTS": "Contacts", + "INBOXES": "Inboxes", + "NO_AGENTS": "No agents found", + "NO_CONTACTS": "Start by searching to see results", + "NO_INBOXES": "No inboxes found" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/sessionLimit.json b/app/javascript/dashboard/i18n/locale/uz/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/setNewPassword.json b/app/javascript/dashboard/i18n/locale/uz/setNewPassword.json new file mode 100644 index 000000000..4908dad02 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/setNewPassword.json @@ -0,0 +1,23 @@ +{ + "SET_NEW_PASSWORD": { + "TITLE": "Set new password", + "PASSWORD": { + "LABEL": "Password", + "PLACEHOLDER": "Password", + "ERROR": "Password is too short." + }, + "CONFIRM_PASSWORD": { + "LABEL": "Confirm password", + "PLACEHOLDER": "Confirm Password", + "ERROR": "Passwords do not match." + }, + "API": { + "SUCCESS_MESSAGE": "Successfully changed the password.", + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." + }, + "CAPTCHA": { + "ERROR": "Verification expired. Please solve captcha again." + }, + "SUBMIT": "Submit" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/settings.json b/app/javascript/dashboard/i18n/locale/uz/settings.json new file mode 100644 index 000000000..43409fa88 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/settings.json @@ -0,0 +1,1068 @@ +{ + "PROFILE_SETTINGS": { + "LINK": "Profile Settings", + "TITLE": "Profile Settings", + "BTN_TEXT": "Update Profile", + "DELETE_AVATAR": "Delete Avatar", + "AVATAR_DELETE_SUCCESS": "Avatar has been deleted successfully", + "AVATAR_DELETE_FAILED": "There is an error while deleting avatar, please try again", + "UPDATE_SUCCESS": "Your profile has been updated successfully", + "PASSWORD_UPDATE_SUCCESS": "Your password has been changed successfully", + "AFTER_EMAIL_CHANGED": "Your profile has been updated successfully, please login again as your login credentials are changed", + "FORM": { + "PICTURE": "Profile Picture", + "AVATAR": "Profile Image", + "ERROR": "Please fix form errors", + "REMOVE_IMAGE": "Remove", + "UPLOAD_IMAGE": "Upload image", + "UPDATE_IMAGE": "Update image", + "PROFILE_SECTION": { + "TITLE": "Profile", + "NOTE": "Your email address is your identity and is used to log in." + }, + "SEND_MESSAGE": { + "TITLE": "Hotkey to send messages", + "NOTE": "You can select a hotkey (either Enter or Cmd/Ctrl+Enter) based on your preference of writing.", + "UPDATE_SUCCESS": "Your settings have been updated successfully", + "CARD": { + "ENTER_KEY": { + "HEADING": "Enter (↵)", + "CONTENT": "Send messages by pressing Enter key instead of clicking the send button." + }, + "CMD_ENTER_KEY": { + "HEADING": "Cmd/Ctrl + Enter (⌘ + ↵)", + "CONTENT": "Send messages by pressing Cmd/Ctrl + enter key instead of clicking the send button." + } + } + }, + "INTERFACE_SECTION": { + "TITLE": "Interface", + "NOTE": "Customize the look and feel of your Chatwoot dashboard.", + "FONT_SIZE": { + "TITLE": "Font size", + "NOTE": "Adjust the text size across the dashboard based on your preference.", + "UPDATE_SUCCESS": "Your font settings have been updated successfully", + "UPDATE_ERROR": "There is an error while updating the font settings, please try again", + "OPTIONS": { + "SMALLER": "Smaller", + "SMALL": "Small", + "DEFAULT": "Default", + "LARGE": "Large", + "LARGER": "Larger", + "EXTRA_LARGE": "Extra Large" + } + }, + "LANGUAGE": { + "TITLE": "Preferred Language", + "NOTE": "Choose the language you want to use.", + "UPDATE_SUCCESS": "Your Language settings have been updated successfully", + "UPDATE_ERROR": "There is an error while updating the language settings, please try again", + "USE_ACCOUNT_DEFAULT": "Use account default" + } + }, + "MESSAGE_SIGNATURE_SECTION": { + "TITLE": "Personal message signature", + "NOTE": "Create a unique message signature to appear at the end of every message you send from any inbox. You can also include an inline image, which is supported in live-chat, email, and API inboxes.", + "BTN_TEXT": "Save message signature", + "API_ERROR": "Couldn't save signature! Try again", + "API_SUCCESS": "Signature saved successfully", + "IMAGE_UPLOAD_ERROR": "Couldn't upload image! Try again", + "IMAGE_UPLOAD_SUCCESS": "Image added successfully. Please click on save to save the signature", + "IMAGE_UPLOAD_SIZE_ERROR": "Image size should be less than {size}MB", + "INLINE_IMAGE_WARNING": "Pasted inline images were removed. Please use the image upload button to add images to your signature." + }, + "MESSAGE_SIGNATURE": { + "LABEL": "Message Signature", + "ERROR": "Message Signature cannot be empty", + "PLACEHOLDER": "Insert your personal message signature here." + }, + "PASSWORD_SECTION": { + "TITLE": "Password", + "NOTE": "Updating your password would reset your logins in multiple devices.", + "BTN_TEXT": "Change password" + }, + "SECURITY_SECTION": { + "TITLE": "Security", + "NOTE": "Manage additional security features for your account.", + "MFA_BUTTON": "Manage Two-Factor Authentication" + }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, + "ACCESS_TOKEN": { + "TITLE": "Access Token", + "NOTE": "This token can be used if you are building an API based integration", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", + "COPY": "Copy", + "RESET": "Reset", + "CONFIRM_RESET": "Are you sure?", + "CONFIRM_HINT": "Click again to confirm", + "RESET_SUCCESS": "Access token regenerated successfully", + "RESET_ERROR": "Unable to regenerate access token. Please try again" + }, + "AUDIO_NOTIFICATIONS_SECTION": { + "TITLE": "Audio Alerts", + "NOTE": "Enable audio alerts in dashboard for new messages and conversations.", + "PLAY": "Play sound", + "ALERT_TYPES": { + "NONE": "None", + "MINE": "Assigned", + "ALL": "All", + "ASSIGNED": "My assigned conversations", + "UNASSIGNED": "Unassigned conversations", + "NOTME": "Open conversations assigned to others" + }, + "ALERT_COMBINATIONS": { + "NONE": "You haven't selected any options, you won't receive any audio alerts.", + "ASSIGNED": "You'll receive alerts for conversations assigned to you.", + "UNASSIGNED": "You'll receive alerts for any unassigned conversations.", + "NOTME": "You'll receive alerts for conversations assigned to others.", + "ASSIGNED+UNASSIGNED": "You'll receive alerts for your assigned conversations and any unattended ones.", + "ASSIGNED+NOTME": "You'll receive alerts for conversations assigned to you and to others, but not for unassigned ones.", + "NOTME+UNASSIGNED": "You'll receive alerts for unattended conversations and those assigned to others.", + "ASSIGNED+NOTME+UNASSIGNED": "You'll receive alerts for all conversations." + }, + "ALERT_TYPE": { + "TITLE": "Alert events for conversations", + "NONE": "None", + "ASSIGNED": "Assigned Conversations", + "ALL_CONVERSATIONS": "All Conversations" + }, + "DEFAULT_TONE": { + "TITLE": "Alert tone:" + }, + "CONDITIONS": { + "TITLE": "Alert conditions:", + "CONDITION_ONE": "Send audio alerts only if the browser window is not active", + "CONDITION_TWO": "Send alerts every 30s until all the assigned conversations are read" + }, + "SOUND_PERMISSION_ERROR": "Autoplay is disabled in your browser. To hear alerts automatically, enable sound permission in your browser settings or interact with the page.", + "READ_MORE": "Read more" + }, + "EMAIL_NOTIFICATIONS_SECTION": { + "TITLE": "Email Notifications", + "NOTE": "Update your email notification preferences here", + "CONVERSATION_ASSIGNMENT": "Send email notifications when a conversation is assigned to me", + "CONVERSATION_CREATION": "Send email notifications when a new conversation is created", + "CONVERSATION_MENTION": "Send email notifications when you are mentioned in a conversation", + "ASSIGNED_CONVERSATION_NEW_MESSAGE": "Send email notifications when a new message is created in an assigned conversation", + "PARTICIPATING_CONVERSATION_NEW_MESSAGE": "Send email notifications when a new message is created in a participating conversation", + "SLA_MISSED_FIRST_RESPONSE": "Send email notifications when a conversation misses first response SLA", + "SLA_MISSED_NEXT_RESPONSE": "Send email notifications when a conversation misses next response SLA", + "SLA_MISSED_RESOLUTION": "Send email notifications when a conversation misses resolution SLA" + }, + "NOTIFICATIONS": { + "TITLE": "Notification preferences", + "TYPE_TITLE": "Notification type", + "EMAIL": "Email", + "PUSH": "Push notification", + "TYPES": { + "CONVERSATION_CREATED": "A new conversation is created", + "CONVERSATION_ASSIGNED": "A conversation is assigned to you", + "CONVERSATION_MENTION": "You are mentioned in a conversation", + "ASSIGNED_CONVERSATION_NEW_MESSAGE": "A new message is created in an assigned conversation", + "PARTICIPATING_CONVERSATION_NEW_MESSAGE": "A new message is created in a participating conversation", + "SLA_MISSED_FIRST_RESPONSE": "A conversation misses first response SLA", + "SLA_MISSED_NEXT_RESPONSE": "A conversation misses next response SLA", + "SLA_MISSED_RESOLUTION": "A conversation misses resolution SLA" + }, + "BROWSER_PERMISSION": "Enable push notifications for your browser so you’re able to receive them" + }, + "API": { + "UPDATE_SUCCESS": "Your notification preferences are updated successfully", + "UPDATE_ERROR": "There is an error while updating the preferences, please try again" + }, + "PUSH_NOTIFICATIONS_SECTION": { + "TITLE": "Push Notifications", + "NOTE": "Update your push notification preferences here", + "CONVERSATION_ASSIGNMENT": "Send push notifications when a conversation is assigned to me", + "CONVERSATION_CREATION": "Send push notifications when a new conversation is created", + "CONVERSATION_MENTION": "Send push notifications when you are mentioned in a conversation", + "ASSIGNED_CONVERSATION_NEW_MESSAGE": "Send push notifications when a new message is created in an assigned conversation", + "PARTICIPATING_CONVERSATION_NEW_MESSAGE": "Send push notifications when a new message is created in a participating conversation", + "HAS_ENABLED_PUSH": "You have enabled push for this browser.", + "REQUEST_PUSH": "Enable push notifications", + "SLA_MISSED_FIRST_RESPONSE": "Send push notifications when a conversation misses first response SLA", + "SLA_MISSED_NEXT_RESPONSE": "Send push notifications when a conversation misses next response SLA", + "SLA_MISSED_RESOLUTION": "Send push notifications when a conversation misses resolution SLA" + }, + "PROFILE_IMAGE": { + "LABEL": "Profile Image" + }, + "NAME": { + "LABEL": "Your full name", + "ERROR": "Please enter a valid full name", + "PLACEHOLDER": "Please enter your full name" + }, + "DISPLAY_NAME": { + "LABEL": "Display name", + "ERROR": "Please enter a valid display name", + "PLACEHOLDER": "Please enter a display name, this would be displayed in conversations" + }, + "AVAILABILITY": { + "LABEL": "Availability", + "STATUS": { + "ONLINE": "Online", + "BUSY": "Busy", + "OFFLINE": "Offline" + }, + "SET_AVAILABILITY_SUCCESS": "Availability has been set successfully", + "SET_AVAILABILITY_ERROR": "Couldn't set availability, please try again", + "IMPERSONATING_ERROR": "Cannot change availability while impersonating a user" + }, + "EMAIL": { + "LABEL": "Your email address", + "ERROR": "Please enter a valid email address", + "PLACEHOLDER": "Please enter your email address, this would be displayed in conversations" + }, + "CURRENT_PASSWORD": { + "LABEL": "Current password", + "ERROR": "Please enter the current password", + "PLACEHOLDER": "Please enter the current password" + }, + "PASSWORD": { + "LABEL": "New password", + "ERROR": "Please enter a password of length 6 or more", + "PLACEHOLDER": "Please enter a new password" + }, + "PASSWORD_CONFIRMATION": { + "LABEL": "Confirm new password", + "ERROR": "Confirm password should match the password", + "PLACEHOLDER": "Please re-enter your new password" + } + } + }, + "SIDEBAR_ITEMS": { + "CHANGE_AVAILABILITY_STATUS": "Change", + "CHANGE_ACCOUNTS": "Switch account", + "SWITCH_ACCOUNT": "Switch account", + "CONTACT_SUPPORT": "Contact support", + "SELECTOR_SUBTITLE": "Select an account from the following list", + "PROFILE_SETTINGS": "Profile settings", + "YEAR_IN_REVIEW": "Year in Review", + "KEYBOARD_SHORTCUTS": "Keyboard shortcuts", + "APPEARANCE": "Change appearance", + "SUPER_ADMIN_CONSOLE": "SuperAdmin console", + "DOCS": "Read documentation", + "CHANGELOG": "Changelog", + "LOGOUT": "Log out" + }, + "APP_GLOBAL": { + "TRIAL_MESSAGE": "days trial remaining.", + "TRAIL_BUTTON": "Buy Now", + "DELETED_USER": "Deleted User", + "EMAIL_VERIFICATION_PENDING": "It seems that you haven't verified your email address yet. Please check your inbox for the verification email.", + "RESEND_VERIFICATION_MAIL": "Resend verification email", + "EMAIL_VERIFICATION_SENT": "Verification email has been sent. Please check your inbox.", + "ACCOUNT_SUSPENDED": { + "TITLE": "Account Suspended", + "MESSAGE": "Your account has been suspended due to activity that may violate our policies. If you believe this is a mistake, please contact our support team." + }, + "NO_ACCOUNTS": { + "TITLE": "No account found", + "MESSAGE_CLOUD": "You are not part of any accounts right now. If you think this is a mistake, please reach out to our support team.", + "MESSAGE_SELF_HOSTED": "You are not part of any accounts right now. Please reach out to your administrator.", + "LOGOUT": "Log out" + } + }, + "COMPONENTS": { + "CODE": { + "BUTTON_TEXT": "Copy", + "CODEPEN": "Open in CodePen", + "COPY_SUCCESSFUL": "Copied to clipboard" + }, + "SHOW_MORE_BLOCK": { + "SHOW_MORE": "Show More", + "SHOW_LESS": "Show Less" + }, + "FILE_BUBBLE": { + "DOWNLOAD": "Download", + "UPLOADING": "Yuklanmoqda...", + "INSTAGRAM_STORY_UNAVAILABLE": "This story is no longer available.", + "INSTAGRAM_STORY_REPLY": "Replied to your story:" + }, + "LOCATION_BUBBLE": { + "SEE_ON_MAP": "See on map" + }, + "FORM_BUBBLE": { + "SUBMIT": "Submit" + }, + "MEDIA": { + "IMAGE_UNAVAILABLE": "This image is no longer available.", + "LOADING_FAILED": "Loading failed" + } + }, + "CONFIRM_EMAIL": "Verifying...", + "SETTINGS": { + "INBOXES": { + "NEW_INBOX": "Add Inbox" + } + }, + "SIDEBAR": { + "NO_ITEMS": "No items", + "CURRENTLY_VIEWING_ACCOUNT": "Currently viewing:", + "SWITCH": "Switch", + "INBOX_VIEW": "Inbox View", + "CONVERSATIONS": "Conversations", + "INBOX": "My Inbox", + "ALL_CONVERSATIONS": "All Conversations", + "MENTIONED_CONVERSATIONS": "Mentions", + "PARTICIPATING_CONVERSATIONS": "Participating", + "UNATTENDED_CONVERSATIONS": "Unattended", + "REPORTS": "Reports", + "SETTINGS": "Settings", + "CONTACTS": "Contacts", + "ACTIVE": "Active", + "COMPANIES": "Companies", + "ALL_COMPANIES": "All Companies", + "CAPTAIN": "Captain", + "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Overview", + "CAPTAIN_DOCUMENTS": "Documents", + "CAPTAIN_RESPONSES": "FAQs", + "CAPTAIN_TOOLS": "Tools", + "CAPTAIN_SCENARIOS": "Scenarios", + "CAPTAIN_PLAYGROUND": "Playground", + "CAPTAIN_INBOXES": "Inboxes", + "CAPTAIN_SETTINGS": "Settings", + "HOME": "Home", + "AGENTS": "Agents", + "AGENT_BOTS": "Bots", + "AUDIT_LOGS": "Audit Logs", + "INBOXES": "Inboxes", + "NOTIFICATIONS": "Notifications", + "CANNED_RESPONSES": "Canned Responses", + "INTEGRATIONS": "Integrations", + "DATA": "Data", + "PROFILE_SETTINGS": "Profile Settings", + "ACCOUNT_SETTINGS": "Account Settings", + "APPLICATIONS": "Applications", + "LABELS": "Labels", + "CUSTOM_ATTRIBUTES": "Custom Attributes", + "AUTOMATION": "Automation", + "MACROS": "Macros", + "TEAMS": "Teams", + "BILLING": "Billing", + "CUSTOM_VIEWS_FOLDER": "Folders", + "CUSTOM_VIEWS_SEGMENTS": "Segments", + "ALL_CONTACTS": "All Contacts", + "TAGGED_WITH": "Tagged with", + "NEW_LABEL": "New label", + "NEW_TEAM": "New team", + "NEW_INBOX": "New inbox", + "REPORTS_CONVERSATION": "Conversations", + "CSAT": "CSAT", + "LIVE_CHAT": "Live Chat", + "SMS": "SMS", + "WHATSAPP": "WhatsApp", + "CAMPAIGNS": "Campaigns", + "ONGOING": "Ongoing", + "ONE_OFF": "One off", + "REPORTS_SLA": "SLA", + "REPORTS_BOT": "Bot", + "REPORTS_AGENT": "Agents", + "REPORTS_LABEL": "Labels", + "REPORTS_INBOX": "Inbox", + "REPORTS_TEAM": "Team", + "AGENT_ASSIGNMENT": "Agent Assignment", + "SET_AVAILABILITY_TITLE": "Set yourself as", + "SET_YOUR_AVAILABILITY": "Set your availability", + "SLA": "SLA", + "CUSTOM_ROLES": "Custom Roles", + "BETA": "Beta", + "REPORTS_OVERVIEW": "Overview", + "REAUTHORIZE": "Your inbox connection has expired, please reconnect\n to continue receiving and sending messages", + "HELP_CENTER": { + "TITLE": "Help Center", + "ARTICLES": "Articles", + "CATEGORIES": "Categories", + "LOCALES": "Locales", + "SETTINGS": "Settings" + }, + "CHANNELS": "Channels", + "SET_AUTO_OFFLINE": { + "TEXT": "Mark offline automatically", + "INFO_TEXT": "Let the system automatically mark you offline when you aren't using the app or dashboard.", + "INFO_SHORT": "Automatically mark offline when you aren't using the app." + }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sort by", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, + "DOCS": "Read docs", + "SECURITY": "Security", + "CAPTAIN_AI": "Captain", + "CONVERSATION_WORKFLOW": "Conversation Workflow" + }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Import", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Contacts", + "CONVERSATIONS": "Conversations", + "MESSAGES": "Messages" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Cancel", + "IMPORT": "Import" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Import", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Name", + "TYPE": "Type", + "STATUS": "Status", + "IMPORTED": "Imported", + "CREATED": "Created", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Created", + "DURATION": "Duration", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "All", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Xabar" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Refresh", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Completed", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, + "CAPTAIN_SETTINGS": { + "TITLE": "Captain Settings", + "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", + "LOADING": "Loading Captain configuration...", + "LINK_TEXT": "Learn more about Captain Credits", + "NOT_ENABLED": "Captain is not enabled for your account. Please upgrade your plan to access Captain features.", + "MODEL_CONFIG": { + "TITLE": "Model Configuration", + "DESCRIPTION": "Select AI models for different features.", + "SELECT_MODEL": "Select model", + "CREDITS_PER_MESSAGE": "{credits} credit/message", + "COMING_SOON": "Coming soon", + "EDITOR": { + "TITLE": "Editor Features", + "DESCRIPTION": "Powers smart compose, grammar corrections, tone adjustments, and content enhancement in your message editor." + }, + "ASSISTANT": { + "TITLE": "Assistant", + "DESCRIPTION": "Handles automated responses, conversation summaries, and intelligent reply suggestions for customer interactions." + }, + "COPILOT": { + "TITLE": "Co-pilot", + "DESCRIPTION": "Provides real-time contextual suggestions, knowledge base recommendations, and proactive insights during conversations." + } + }, + "FEATURES": { + "TITLE": "Features", + "DESCRIPTION": "Enable or disable AI-powered features.", + "AUDIO_TRANSCRIPTION": { + "TITLE": "Audio Transcription", + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" + }, + "HELP_CENTER_SEARCH": { + "TITLE": "Help Center Search Indexing", + "DESCRIPTION": "Use AI for context aware search inside your help center articles." + }, + "LABEL_SUGGESTION": { + "TITLE": "Label Suggestion", + "DESCRIPTION": "Automatically suggest relevant labels and tags for conversations based on content analysis and context.", + "MODEL_TITLE": "Label Suggestion Model", + "MODEL_DESCRIPTION": "Select the AI model to use for analyzing conversations and suggesting appropriate labels" + } + }, + "API": { + "SUCCESS": "Captain settings updated successfully.", + "ERROR": "Failed to update Captain settings. Please try again." + } + }, + "BILLING_SETTINGS": { + "TITLE": "Billing", + "DESCRIPTION": "Manage your subscription here, upgrade your plan and get more for your team.", + "CURRENT_PLAN": { + "TITLE": "Current Plan", + "PLAN_NOTE": "You are currently subscribed to the **{plan}** plan with **{quantity}** licenses", + "SEAT_COUNT": "Number of seats", + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } + }, + "VIEW_PRICING": "View Pricing", + "MANAGE_SUBSCRIPTION": { + "TITLE": "Manage your subscription", + "DESCRIPTION": "View your previous invoices, edit your billing details, or cancel your subscription.", + "BUTTON_TXT": "Go to the billing portal" + }, + "CAPTAIN": { + "TITLE": "Captain", + "DESCRIPTION": "Manage usage and credits for Captain AI.", + "BUTTON_TXT": "Buy more credits", + "DOCUMENTS": "Documents", + "RESPONSES": "Credits", + "UPGRADE": "Captain is not available on the free plan, upgrade now to get access to assistants, copilot and more.", + "REFRESH_CREDITS": "Refresh" + }, + "CHAT_WITH_US": { + "TITLE": "Need help?", + "DESCRIPTION": "Do you face any issues in billing? We are here to help.", + "BUTTON_TXT": "Biz bilan suhbatlashing" + }, + "NO_BILLING_USER": "Your billing account is being configured. Please refresh the page and try again.", + "TOPUP": { + "BUY_CREDITS": "Buy more credits", + "MODAL_TITLE": "Buy AI Credits", + "MODAL_DESCRIPTION": "Purchase additional credits for Captain AI.", + "CREDITS": "CREDITS", + "ONE_TIME": "one-time", + "POPULAR": "Most Popular", + "NOTE_TITLE": "Note:", + "NOTE_DESCRIPTION": "Credits are added immediately and expire in 6 months. An active subscription is required to use credits. Purchased credits are consumed after your monthly plan credits.", + "CANCEL": "Cancel", + "PURCHASE": "Purchase Credits", + "LOADING": "Loading options...", + "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", + "PURCHASE_ERROR": "Failed to process purchase. Please try again.", + "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", + "CONFIRM": { + "TITLE": "Confirm Purchase", + "DESCRIPTION": "You are about to purchase {credits} credits for {amount}.", + "INSTANT_DEDUCTION_NOTE": "Your saved card will be charged immediately upon confirmation.", + "GO_BACK": "Go Back", + "CONFIRM_PURCHASE": "Confirm Purchase" + } + } + }, + "SECURITY_SETTINGS": { + "TITLE": "Security", + "DESCRIPTION": "Manage your account security settings.", + "LINK_TEXT": "Learn more about SAML SSO", + "SAML_DISABLED_MESSAGE": "SAML SSO is currently disabled. Please contact your administrator to enable this feature.", + "SAML": { + "TITLE": "SAML SSO", + "NOTE": "Configure SAML single sign-on for your account. Users will authenticate through your identity provider instead of using email/password.", + "ACS_URL": { + "LABEL": "ACS URL", + "TOOLTIP": "Assertion Consumer Service URL - Configure this URL in your IdP as the destination for SAML responses" + }, + "SSO_URL": { + "LABEL": "SSO URL", + "HELP": "The URL where SAML authentication requests will be sent", + "PLACEHOLDER": "https://sso.example.com/saml/sso" + }, + "CERTIFICATE": { + "LABEL": "Signing certificate in PEM format", + "HELP": "The public certificate from your identity provider used to verify SAML responses", + "PLACEHOLDER": "-----BEGIN CERTIFICATE-----\nMIIC..." + }, + "FINGERPRINT": { + "LABEL": "Fingerprint", + "TOOLTIP": "SHA-1 fingerprint of the certificate - Use this to verify the certificate in your IdP configuration" + }, + "COPY_SUCCESS": "Copied to clipboard", + "SP_ENTITY_ID": { + "LABEL": "SP Entity ID", + "HELP": "Unique identifier for this application as a service provider (auto-generated).", + "TOOLTIP": "Unique identifier for Chatwoot as the Service Provider - Configure this in your IdP settings" + }, + "IDP_ENTITY_ID": { + "LABEL": "Identity Provider Entity ID", + "HELP": "Unique identifier for your identity provider (usually found in IdP configuration)", + "PLACEHOLDER": "https://sso.example.com/saml" + }, + "UPDATE_BUTTON": "Update SAML Settings", + "API": { + "SUCCESS": "SAML settings updated successfully", + "ERROR": "Failed to update SAML settings", + "ERROR_LOADING": "Failed to load SAML settings", + "DISABLED": "SAML settings disabled successfully" + }, + "VALIDATION": { + "REQUIRED_FIELDS": "SSO URL, Identity Provider Entity ID, and Certificate are required fields", + "SSO_URL_ERROR": "Please enter a valid SSO URL", + "CERTIFICATE_ERROR": "Certificate is required", + "IDP_ENTITY_ID_ERROR": "Identity Provider Entity ID is required" + }, + "ENTERPRISE_PAYWALL": { + "AVAILABLE_ON": "The SAML SSO feature is only available in the Enterprise plans.", + "UPGRADE_PROMPT": "Upgrade to an Enterprise plan to access SAML single sign-on and other advanced security features.", + "ASK_ADMIN": "Please reach out to your administrator for the upgrade." + }, + "PAYWALL": { + "TITLE": "Upgrade to enable SAML SSO", + "AVAILABLE_ON": "The SAML SSO feature is only available in the Enterprise plans.", + "UPGRADE_PROMPT": "Upgrade your plan to get access to SAML single sign-on and other advanced features.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "You can change or cancel your plan anytime" + }, + "ATTRIBUTE_MAPPING": { + "TITLE": "SAML Attribute Setup", + "DESCRIPTION": "The following attribute mappings must be configured in your identity provider" + }, + "INFO_SECTION": { + "TITLE": "Service Provider Information", + "TOOLTIP": "Copy these values and configure them in your Identity Provider to establish the SAML connection" + } + } + }, + "CONVERSATION_WORKFLOW": { + "INDEX": { + "HEADER": { + "TITLE": "Conversation Workflows", + "DESCRIPTION": "Configure rules and required fields for conversation resolution." + } + }, + "REQUIRED_ATTRIBUTES": { + "TITLE": "Attributes required on resolution", + "DESCRIPTION": "When resolving a conversation, agents will be prompted to fill these attributes if they haven't yet.", + "NO_ATTRIBUTES": "No attributes added yet", + "ADD": { + "TITLE": "Add Attributes", + "SEARCH_PLACEHOLDER": "Search attributes" + }, + "SAVE": { + "SUCCESS": "Required attributes updated", + "ERROR": "Could not update required attributes, please try again" + }, + "MODAL": { + "TITLE": "Resolve conversation", + "DESCRIPTION": "Please fill in the following custom attributes before resolving this conversation", + "ACTIONS": { + "RESOLVE": "Resolve conversation", + "CANCEL": "Cancel" + }, + "PLACEHOLDERS": { + "TEXT": "Write a note...", + "NUMBER": "Enter a number", + "LINK": "Add a link", + "DATE": "Pick a date", + "LIST": "Select an option" + }, + "CHECKBOX": { + "YES": "Yes", + "NO": "No" + } + }, + "PAYWALL": { + "TITLE": "Upgrade to use required attributes", + "AVAILABLE_ON": "The required conversation attributes feature is available on the Business and Enterprise plans.", + "UPGRADE_PROMPT": "Upgrade your plan to prompt agents to fill required attributes before conversation resolution.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "You can change or cancel your plan anytime" + }, + "ENTERPRISE_PAYWALL": { + "AVAILABLE_ON": "The required conversation attributes feature is available on the paid plans.", + "UPGRADE_PROMPT": "Upgrade to a paid plan to enforce required attributes before conversation resolution.", + "ASK_ADMIN": "Please reach out to your administrator for the upgrade." + } + } + }, + "CREATE_ACCOUNT": { + "NO_ACCOUNT_WARNING": "Uh oh! We could not find any Chatwoot accounts. Please create a new account to continue.", + "NEW_ACCOUNT": "New Account", + "SELECTOR_SUBTITLE": "Create a new account", + "API": { + "SUCCESS_MESSAGE": "Account created successfully", + "EXIST_MESSAGE": "Account already exists", + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + }, + "FORM": { + "NAME": { + "LABEL": "Company Name", + "PLACEHOLDER": "Wayne Enterprises" + }, + "SUBMIT": "Submit", + "CANCEL": "Cancel" + } + }, + "KEYBOARD_SHORTCUTS": { + "TOGGLE_MODAL": "View all shortcuts", + "TITLE": { + "OPEN_CONVERSATION": "Open conversation", + "RESOLVE_AND_NEXT": "Resolve and move to next", + "NAVIGATE_DROPDOWN": "Navigate dropdown items", + "RESOLVE_CONVERSATION": "Resolve Conversation", + "GO_TO_CONVERSATION_DASHBOARD": "Go to Conversation Dashboard", + "ADD_ATTACHMENT": "Add Attachment", + "GO_TO_CONTACTS_DASHBOARD": "Go to Contacts Dashboard", + "TOGGLE_SIDEBAR": "Toggle Sidebar", + "GO_TO_REPORTS_SIDEBAR": "Go to Reports sidebar", + "MOVE_TO_NEXT_TAB": "Move to next tab in conversation list", + "GO_TO_SETTINGS": "Go to Settings", + "SWITCH_TO_PRIVATE_NOTE": "Switch to Private Note", + "SWITCH_TO_REPLY": "Switch to Reply", + "TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown" + } + }, + "ASSIGNMENT_POLICY": { + "INDEX": { + "HEADER": { + "TITLE": "Agent assignment", + "DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here" + }, + "ASSIGNMENT_POLICY": { + "TITLE": "Assignment policy", + "DESCRIPTION": "Manage how conversations get assigned in inboxes.", + "FEATURES": [ + "Assign by conversations evenly or by available capacity", + "Add fair distribution rules to avoid overloading any agent", + "Add inboxes to a policy - one policy per inbox" + ] + }, + "AGENT_CAPACITY_POLICY": { + "TITLE": "Agent capacity policy", + "DESCRIPTION": "Manage workload for agents.", + "FEATURES": [ + "Define maximum conversations per inbox", + "Create exceptions based on labels and time", + "Add agents to a policy - one policy per agent" + ] + } + }, + "AGENT_ASSIGNMENT_POLICY": { + "INDEX": { + "HEADER": { + "TITLE": "Assignment policy", + "CREATE_POLICY": "New policy" + }, + "CARD": { + "ORDER": "Order", + "PRIORITY": "Priority", + "ACTIVE": "Active", + "INACTIVE": "Inactive", + "POPOVER": "Added inboxes", + "EDIT": "Edit" + }, + "NO_RECORDS_FOUND": "No assignment policies found" + }, + "CREATE": { + "HEADER": { + "TITLE": "Create assignment policy" + }, + "CREATE_BUTTON": "Create policy", + "API": { + "SUCCESS_MESSAGE": "Assignment policy created successfully", + "ERROR_MESSAGE": "Failed to create assignment policy", + "INBOX_LINKED": "Inbox has been linked to the policy" + } + }, + "EDIT": { + "HEADER": { + "TITLE": "Edit assignment policy" + }, + "EDIT_BUTTON": "Update policy", + "CONFIRM_ADD_INBOX_DIALOG": { + "TITLE": "Add inbox", + "DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.", + "CONFIRM_BUTTON_LABEL": "Continue", + "CANCEL_BUTTON_LABEL": "Cancel" + }, + "INBOX_LINK_PROMPT": { + "TITLE": "Link inbox to policy", + "DESCRIPTION": "Would you like to link this inbox to the assignment policy?", + "LINK_BUTTON": "Link inbox", + "CANCEL_BUTTON": "Skip" + }, + "API": { + "SUCCESS_MESSAGE": "Assignment policy updated successfully", + "ERROR_MESSAGE": "Failed to update assignment policy" + }, + "INBOX_API": { + "ADD": { + "SUCCESS_MESSAGE": "Inbox added to policy successfully", + "ERROR_MESSAGE": "Failed to add inbox to policy" + }, + "REMOVE": { + "SUCCESS_MESSAGE": "Inbox removed from policy successfully", + "ERROR_MESSAGE": "Failed to remove inbox from policy" + } + } + }, + "FORM": { + "NAME": { + "LABEL": "Policy name:", + "PLACEHOLDER": "Enter policy name" + }, + "DESCRIPTION": { + "LABEL": "Description:", + "PLACEHOLDER": "Enter description" + }, + "STATUS": { + "LABEL": "Status:", + "PLACEHOLDER": "Select status", + "ACTIVE": "Policy is active", + "INACTIVE": "Policy is inactive" + }, + "ASSIGNMENT_ORDER": { + "LABEL": "Assignment order", + "ROUND_ROBIN": { + "LABEL": "Round robin", + "DESCRIPTION": "Assign conversations evenly among agents." + }, + "BALANCED": { + "LABEL": "Balanced", + "DESCRIPTION": "Assign conversations based on available capacity.", + "PREMIUM_MESSAGE": "Upgrade to access balanced assignment and agent capacity management.", + "PREMIUM_BADGE": "Premium" + } + }, + "ASSIGNMENT_PRIORITY": { + "LABEL": "Assignment priority", + "EARLIEST_CREATED": { + "LABEL": "Earliest created", + "DESCRIPTION": "The conversation that was created first gets assigned first." + }, + "LONGEST_WAITING": { + "LABEL": "Longest waiting", + "DESCRIPTION": "The conversation waiting the longest gets assigned first." + } + }, + "FAIR_DISTRIBUTION": { + "LABEL": "Fair distribution policy", + "DESCRIPTION": "Cap conversations per agent within a time window to avoid overload. Defaults to 100 per hour.", + "INPUT_MAX": "Assign max", + "DURATION": "Conversations per agent in every" + }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, + "INBOXES": { + "LABEL": "Added inboxes", + "DESCRIPTION": "Add inboxes for which this policy will be applicable.", + "ADD_BUTTON": "Add inbox", + "DROPDOWN": { + "SEARCH_PLACEHOLDER": "Search and select inboxes to add", + "ADD_BUTTON": "Add" + }, + "EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started", + "API": { + "SUCCESS_MESSAGE": "Inbox successfully added to policy", + "ERROR_MESSAGE": "Failed to add inbox to policy" + } + } + }, + "DELETE_POLICY": { + "SUCCESS_MESSAGE": "Assignment policy deleted successfully", + "ERROR_MESSAGE": "Failed to delete assignment policy" + } + }, + "AGENT_CAPACITY_POLICY": { + "INDEX": { + "HEADER": { + "TITLE": "Agent capacity", + "CREATE_POLICY": "New policy" + }, + "CARD": { + "POPOVER": "Added agents", + "EDIT": "Edit" + }, + "NO_RECORDS_FOUND": "No agent capacity policies found" + }, + "CREATE": { + "HEADER": { + "TITLE": "Create agent capacity policy" + }, + "CREATE_BUTTON": "Create policy", + "API": { + "SUCCESS_MESSAGE": "Agent capacity policy created successfully", + "ERROR_MESSAGE": "Failed to create agent capacity policy" + } + }, + "EDIT": { + "HEADER": { + "TITLE": "Edit agent capacity policy" + }, + "EDIT_BUTTON": "Update policy", + "CONFIRM_ADD_AGENT_DIALOG": { + "TITLE": "Add agent", + "DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.", + "CONFIRM_BUTTON_LABEL": "Continue", + "CANCEL_BUTTON_LABEL": "Cancel" + }, + "API": { + "SUCCESS_MESSAGE": "Agent capacity policy updated successfully", + "ERROR_MESSAGE": "Failed to update agent capacity policy" + }, + "AGENT_API": { + "ADD": { + "SUCCESS_MESSAGE": "Agent added to policy successfully", + "ERROR_MESSAGE": "Failed to add agent to policy" + }, + "REMOVE": { + "SUCCESS_MESSAGE": "Agent removed from policy successfully", + "ERROR_MESSAGE": "Failed to remove agent from policy" + } + }, + "INBOX_LIMIT_API": { + "ADD": { + "SUCCESS_MESSAGE": "Inbox limit added successfully", + "ERROR_MESSAGE": "Failed to add inbox limit" + }, + "UPDATE": { + "SUCCESS_MESSAGE": "Inbox limit updated successfully", + "ERROR_MESSAGE": "Failed to update inbox limit" + }, + "DELETE": { + "SUCCESS_MESSAGE": "Inbox limit deleted successfully", + "ERROR_MESSAGE": "Failed to delete inbox limit" + } + } + }, + "FORM": { + "NAME": { + "LABEL": "Policy name:", + "PLACEHOLDER": "Enter policy name" + }, + "DESCRIPTION": { + "LABEL": "Description:", + "PLACEHOLDER": "Enter description" + }, + "INBOX_CAPACITY_LIMIT": { + "LABEL": "Inbox capacity limits", + "ADD_BUTTON": "Add inbox", + "FIELD": { + "SELECT_INBOX": "Select inbox", + "MAX_CONVERSATIONS": "Max conversations", + "SET_LIMIT": "Set limit" + }, + "EMPTY_STATE": "No inbox limit set" + }, + "EXCLUSION_RULES": { + "LABEL": "Exclusion rules", + "DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity", + "TAGS": { + "LABEL": "Exclude conversations tagged with specific labels", + "ADD_TAG": "add tag", + "DROPDOWN": { + "SEARCH_PLACEHOLDER": "Search and select tags to add" + }, + "EMPTY_STATE": "No tags added to this policy." + }, + "DURATION": { + "LABEL": "Exclude conversations older than a specified duration", + "PLACEHOLDER": "Set time" + } + }, + "USERS": { + "LABEL": "Assigned agents", + "DESCRIPTION": "Add agents for which this policy will be applicable.", + "ADD_BUTTON": "Add agent", + "DROPDOWN": { + "SEARCH_PLACEHOLDER": "Search and select agents to add", + "ADD_BUTTON": "Add" + }, + "EMPTY_STATE": "No agents added", + "API": { + "SUCCESS_MESSAGE": "Agent successfully added to policy", + "ERROR_MESSAGE": "Failed to add agent to policy" + } + } + }, + "DELETE_POLICY": { + "SUCCESS_MESSAGE": "Agent capacity policy deleted successfully", + "ERROR_MESSAGE": "Failed to delete agent capacity policy" + } + }, + "DELETE_POLICY": { + "TITLE": "Delete policy", + "DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.", + "CONFIRM_BUTTON_LABEL": "Delete", + "CANCEL_BUTTON_LABEL": "Cancel" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/signup.json b/app/javascript/dashboard/i18n/locale/uz/signup.json new file mode 100644 index 000000000..238a1f061 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/signup.json @@ -0,0 +1,57 @@ +{ + "REGISTER": { + "TRY_WOOT": "Create an account", + "GET_STARTED": "Get started with Chatwoot", + "TITLE": "Register", + "TESTIMONIAL_HEADER": "All it takes is one step to move forward", + "TESTIMONIAL_CONTENT": "You're one step away from engaging your customers, retaining them and finding new ones.", + "TERMS_ACCEPT": "By creating an account, you agree to our T & C and Privacy policy", + "OAUTH": { + "GOOGLE_SIGNUP": "Sign up with Google" + }, + "COMPANY_NAME": { + "LABEL": "Company name", + "PLACEHOLDER": "Enter your company name. E.g., Wayne Enterprises", + "ERROR": "Company name is too short." + }, + "FULL_NAME": { + "LABEL": "Full name", + "PLACEHOLDER": "Enter your full name. E.g., Bruce Wayne", + "ERROR": "Full name is too short." + }, + "EMAIL": { + "LABEL": "Work email", + "PLACEHOLDER": "Enter your work email address. E.g., bruce{'@'}wayne{'.'}enterprises", + "ERROR": "Please enter a valid work email address." + }, + "PASSWORD": { + "LABEL": "Password", + "PLACEHOLDER": "Password", + "ERROR": "Password is too short.", + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character.", + "REQUIREMENTS_LENGTH": "At least 6 characters long", + "REQUIREMENTS_UPPERCASE": "At least one uppercase letter", + "REQUIREMENTS_LOWERCASE": "At least one lowercase letter", + "REQUIREMENTS_NUMBER": "At least one number", + "REQUIREMENTS_SPECIAL": "At least one special character" + }, + "CONFIRM_PASSWORD": { + "LABEL": "Confirm password", + "PLACEHOLDER": "Confirm password", + "ERROR": "Passwords do not match." + }, + "API": { + "SUCCESS_MESSAGE": "Registration Successful", + "ERROR_MESSAGE": "Could not connect to Woot server. Please try again." + }, + "SUBMIT": "Create account", + "HAVE_AN_ACCOUNT": "Already have an account?", + "VERIFY_EMAIL": { + "TITLE": "Check your inbox", + "DESCRIPTION": "We sent a verification link to {email}. Click the link to verify your email and get started.", + "RESEND": "Resend verification email", + "RESEND_SUCCESS": "Verification email sent. Please check your inbox.", + "RESEND_ERROR": "Could not send verification email. Please try again." + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/sla.json b/app/javascript/dashboard/i18n/locale/uz/sla.json new file mode 100644 index 000000000..9ab41fb82 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/sla.json @@ -0,0 +1,117 @@ +{ + "SLA": { + "HEADER": "Service Level Agreements", + "ADD_ACTION": "Add SLA", + "ADD_ACTION_LONG": "Create a new SLA Policy", + "DESCRIPTION": "Service Level Agreements (SLAs) are contracts that define clear expectations between your team and customers. They establish standards for response and resolution times, creating a framework for accountability and ensures a consistent, high-quality experience.", + "LEARN_MORE": "Learn more about SLA", + "COUNT": "{n} SLA | {n} SLAs", + "LOADING": "Fetching SLAs", + "SEARCH_PLACEHOLDER": "Search SLA...", + "SEARCH": { + "NO_RESULTS": "No SLA found matching your search" + }, + "PAYWALL": { + "TITLE": "Upgrade to create SLAs", + "AVAILABLE_ON": "The SLA feature is only available in the Business and Enterprise plans.", + "UPGRADE_PROMPT": "Upgrade your plan to get access to advanced features like team management, automations, custom attributes, and more.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "You can change or cancel your plan anytime" + }, + "ENTERPRISE_PAYWALL": { + "AVAILABLE_ON": "The SLA feature is only available in the paid plans.", + "UPGRADE_PROMPT": "Upgrade to a paid plan to access advanced features like audit logs, agent capacity, and more.", + "ASK_ADMIN": "Please reach out to your administrator for the upgrade." + }, + "LIST": { + "404": "There are no SLAs available in this account.", + "TABLE_HEADER": { + "SLA": "SLA", + "BUSINESS_HOURS": "Business hours" + }, + "EMPTY": { + "TITLE_1": "Enterprise P0", + "DESC_1": "Issues raised by enterprise customers, that require immediate attention.", + "TITLE_2": "Enterprise P1", + "DESC_2": "Issues raised by enterprise customers, that needs to be acknowledged quickly." + }, + "BUSINESS_HOURS_ON": "Turned on", + "BUSINESS_HOURS_OFF": "Turned off", + "RESPONSE_TYPES": { + "FRT": "First response time threshold", + "NRT": "Next response time threshold", + "RT": "Resolution time threshold", + "SHORT_HAND": { + "FRT": "FRT", + "NRT": "NRT", + "RT": "RT" + } + } + }, + "FORM": { + "NAME": { + "LABEL": "SLA Name", + "PLACEHOLDER": "SLA Name", + "REQUIRED_ERROR": "SLA name is required", + "MINIMUM_LENGTH_ERROR": "Minimum length 2 is required", + "VALID_ERROR": "Only Alphabets, Numbers, Hyphen and Underscore are allowed" + }, + "DESCRIPTION": { + "LABEL": "Description", + "PLACEHOLDER": "SLA for premium customers" + }, + "FIRST_RESPONSE_TIME": { + "LABEL": "First Response Time", + "PLACEHOLDER": "5" + }, + "NEXT_RESPONSE_TIME": { + "LABEL": "Next Response Time", + "PLACEHOLDER": "5" + }, + "RESOLUTION_TIME": { + "LABEL": "Resolution Time", + "PLACEHOLDER": "60" + }, + "BUSINESS_HOURS": { + "LABEL": "Business Hours", + "PLACEHOLDER": "Only during business hours" + }, + "THRESHOLD_TIME": { + "INVALID_FORMAT_ERROR": "Threshold should be a number and greater than zero" + }, + "EDIT": "Edit", + "CREATE": "Create", + "DELETE": "Delete", + "CANCEL": "Cancel" + }, + "ADD": { + "TITLE": "Add SLA", + "DESC": "Friendly promises for great service!", + "API": { + "SUCCESS_MESSAGE": "SLA added successfully", + "ERROR_MESSAGE": "There was an error, please try again" + } + }, + "DELETE": { + "TITLE": "Delete SLA", + "API": { + "SUCCESS_MESSAGE": "SLA deleted successfully", + "ERROR_MESSAGE": "There was an error, please try again" + }, + "CONFIRM": { + "TITLE": "Confirm Deletion", + "MESSAGE": "Are you sure you want to delete ", + "YES": "Yes, Delete ", + "NO": "No, Keep " + } + }, + "EVENTS": { + "TITLE": "SLA Misses", + "FRT": "First response time", + "NRT": "Next response time", + "RT": "Resolution time", + "SHOW_MORE": "{count} more", + "HIDE": "Hide {count} rows" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/snooze.json b/app/javascript/dashboard/i18n/locale/uz/snooze.json new file mode 100644 index 000000000..2d9a876aa --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/snooze.json @@ -0,0 +1,72 @@ +{ + "SNOOZE_PARSER": { + "UNITS": { + "MINUTE": "minute", + "MINUTES": "minutes", + "HOUR": "hour", + "HOURS": "hours", + "DAY": "day", + "DAYS": "days", + "WEEK": "week", + "WEEKS": "weeks", + "MONTH": "month", + "MONTHS": "months", + "YEAR": "year", + "YEARS": "years" + }, + "HALF": "half", + "NEXT": "next", + "THIS": "this", + "AT": "at", + "IN": "in", + "FROM_NOW": "from now", + "NEXT_YEAR": "next year", + "MERIDIEM": { + "AM": "am", + "PM": "pm" + }, + "RELATIVE": { + "TOMORROW": "tomorrow", + "DAY_AFTER_TOMORROW": "day after tomorrow", + "NEXT_WEEK": "next week", + "NEXT_MONTH": "next month", + "THIS_WEEKEND": "this weekend", + "NEXT_WEEKEND": "next weekend" + }, + "TIME_OF_DAY": { + "MORNING": "morning", + "AFTERNOON": "afternoon", + "EVENING": "evening", + "NIGHT": "night", + "NOON": "noon", + "MIDNIGHT": "midnight" + }, + "WORD_NUMBERS": { + "ONE": "one", + "TWO": "two", + "THREE": "three", + "FOUR": "four", + "FIVE": "five", + "SIX": "six", + "SEVEN": "seven", + "EIGHT": "eight", + "NINE": "nine", + "TEN": "ten", + "TWELVE": "twelve", + "FIFTEEN": "fifteen", + "TWENTY": "twenty", + "THIRTY": "thirty" + }, + "ORDINALS": { + "FIRST": "first", + "SECOND": "second", + "THIRD": "third", + "FOURTH": "fourth", + "FIFTH": "fifth" + }, + "OF": "of", + "AFTER": "after", + "WEEK": "week", + "DAY": "day" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/teamsSettings.json b/app/javascript/dashboard/i18n/locale/uz/teamsSettings.json new file mode 100644 index 000000000..f3ce7f167 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/teamsSettings.json @@ -0,0 +1,124 @@ +{ + "TEAMS_SETTINGS": { + "NEW_TEAM": "Create new team", + "HEADER": "Teams", + "LOADING": "Fetching teams", + "DESCRIPTION": "Teams allow you to organize agents into groups based on their responsibilities. An agent can belong to multiple teams. When working collaboratively, you can assign conversations to specific teams.", + "LEARN_MORE": "Learn more about teams", + "COUNT": "{n} team | {n} teams", + "SEARCH_PLACEHOLDER": "Search teams...", + "NO_RESULTS": "No teams found matching your search", + "LIST": { + "404": "There are no teams created on this account.", + "EDIT_TEAM": "Edit team", + "NONE": "None" + }, + "CREATE_FLOW": { + "CREATE": { + "TITLE": "Create a new team", + "DESC": "Add a title and description to your new team." + }, + "AGENTS": { + "BUTTON_TEXT": "Add agents to team", + "TITLE": "Add agents to team - {teamName}", + "DESC": "Add Agents to your newly created team. This lets you collaborate as a team on conversations, get notified on new events in the same conversation." + }, + "WIZARD_CREATE": { + "TITLE": "Create", + "BODY": "Create a new team of agents." + }, + "WIZARD_ADD_AGENTS": { + "TITLE": "Add Agents", + "BODY": "Add agents to the team." + }, + "WIZARD_FINISH": { + "TITLE": "Finish", + "BODY": "You are all set to go!" + } + }, + "EDIT_FLOW": { + "CREATE": { + "TITLE": "Edit your team details", + "DESC": "Edit title and description to your team.", + "BUTTON_TEXT": "Update team" + }, + "AGENTS": { + "BUTTON_TEXT": "Update agents in team", + "TITLE": "Add agents to team - {teamName}", + "DESC": "Add Agents to your newly created team. All the added agents will be notified when a conversation is assigned to this team." + }, + "EDIT_WIZARD_DETAILS": { + "TITLE": "Team details", + "ROUTE": "settings_teams_edit", + "BODY": "Change name, description and other details." + }, + "EDIT_WIZARD_AGENTS": { + "TITLE": "Edit Agents", + "ROUTE": "settings_teams_edit_members", + "BODY": "Edit agents in your team." + }, + "EDIT_WIZARD_FINISH": { + "TITLE": "Finish", + "ROUTE": "settings_teams_edit_finish", + "BODY": "You are all set to go!" + } + }, + "TEAM_FORM": { + "ERROR_MESSAGE": "Couldn't save the team details. Try again." + }, + "AGENTS": { + "AGENT": "Agent", + "EMAIL": "Email", + "BUTTON_TEXT": "Add agents", + "ADD_AGENTS": "Adding Agents to your Team...", + "SELECT": "select", + "SELECT_ALL": "select all agents", + "SELECTED_COUNT": "{selected} out of {total} agents selected." + }, + "ADD": { + "TITLE": "Add agents to team - {teamName}", + "DESC": "Add Agents to your newly created team. This lets you collaborate as a team on conversations, get notified on new events in the same conversation.", + "SELECT": "select", + "SELECT_ALL": "select all agents", + "SELECTED_COUNT": "{selected} out of {total} agents selected.", + "BUTTON_TEXT": "Add agents", + "AGENT_VALIDATION_ERROR": "Select at least one agent." + }, + "FINISH": { + "TITLE": "Your team is ready!", + "MESSAGE": "You can now collaborate as a team on conversations. Happy supporting ", + "BUTTON_TEXT": "Finish" + }, + "DELETE": { + "BUTTON_TEXT": "Delete", + "API": { + "SUCCESS_MESSAGE": "Team deleted successfully.", + "ERROR_MESSAGE": "Couldn't delete the team. Try again." + }, + "CONFIRM": { + "TITLE": "Are you sure you want to delete the team?", + "PLACE_HOLDER": "Please type {teamName} to confirm", + "MESSAGE": "Deleting the team will remove the team assignment from the conversations assigned to this team.", + "YES": "Delete ", + "NO": "Cancel" + } + }, + "SETTINGS": "Settings", + "FORM": { + "UPDATE": "Update team", + "CREATE": "Create team", + "NAME": { + "LABEL": "Team name", + "PLACEHOLDER": "Example: Sales, Customer Support" + }, + "DESCRIPTION": { + "LABEL": "Team Description", + "PLACEHOLDER": "Short description about this team." + }, + "AUTO_ASSIGN": { + "LABEL": "Allow auto assign for this team." + }, + "SUBMIT_CREATE": "Create team" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/webhooks.json b/app/javascript/dashboard/i18n/locale/uz/webhooks.json new file mode 100644 index 000000000..347c96893 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/webhooks.json @@ -0,0 +1,5 @@ +{ + "WEBHOOKS_SETTINGS": { + "HEADER": "Webhook Settings" + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/uz/whatsappTemplates.json new file mode 100644 index 000000000..cf28312dc --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/whatsappTemplates.json @@ -0,0 +1,47 @@ +{ + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "DOCUMENT_NAME_PLACEHOLDER": "Enter document filename (e.g., Invoice_2025.pdf)", + "BUTTON_PARAMETER": "Enter button parameter" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/uz/yearInReview.json b/app/javascript/dashboard/i18n/locale/uz/yearInReview.json new file mode 100644 index 000000000..d72e0c679 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/uz/yearInReview.json @@ -0,0 +1,64 @@ +{ + "YEAR_IN_REVIEW": { + "TITLE": "Year in Review", + "LOADING": "Loading your year in review...", + "ERROR": "Failed to load year in review", + "CLOSE": "Close", + "CONVERSATIONS": { + "TITLE": "You have handled", + "SUBTITLE": "conversations", + "FALLBACK": "This year wasn't about the numbers. It was about showing up.", + "COMPARISON": { + "0_50": "You showed up, and that's how every good inbox begins.", + "50_100": "You kept the replies flowing and the conversations alive.", + "100_500": "You handled serious volume and kept everything on track.", + "500_2000": "You kept things moving while the volume kept climbing.", + "2000_10000": "You ran high traffic through your inbox without breaking a sweat.", + "10000_PLUS": "That's a full city of customers knocking on your door. You made it look effortless." + } + }, + "BUSIEST_DAY": { + "TITLE": "Your busiest day was", + "MESSAGE": "{count} conversations that day.", + "COMPARISON": { + "0_5": "A warm-up lap that barely woke the inbox.", + "5_10": "Enough action to justify a second cup of coffee.", + "10_25": "Things got busy and the inbox stayed on its toes.", + "25_50": "A proper rush that barely broke a sweat.", + "50_100": "Controlled chaos, handled like a normal Tuesday.", + "100_500": "Absolute dumpster fire, somehow still shipping replies.", + "500_PLUS": "The inbox lost all chill and never slowed down." + } + }, + "PERSONALITY": { + "TITLE": "Your support personality is", + "MESSAGES": { + "SWIFT_HELPER": "You replied in {time} on average. Faster than most notifications.", + "QUICK_RESPONDER": "You replied in {time} on average. The inbox barely waited.", + "STEADY_SUPPORT": "You replied in {time} on average. Calm pace, solid replies.", + "THOUGHTFUL_ADVISOR": "You replied in {time} on average. Took the time to get it right." + } + }, + "THANK_YOU": { + "TITLE": "Congratulations on surviving the inbox of {year}.", + "MESSAGE": "Thank you for your incredible dedication to supporting customers throughout this year. Your hard work has made a real difference, and we're grateful to have you on this journey. Here's to making {nextYear} even better together!" + }, + "SHARE_MODAL": { + "TITLE": "Share Your Year in Review", + "PREPARING": "Preparing your image...", + "DOWNLOAD": "Download", + "SHARE_TITLE": "My {year} Year in Review", + "SHARE_TEXT": "Check out my {year} Year in Review with Chatwoot!", + "BRANDING": "Made with Chatwoot" + }, + "BANNER": { + "TITLE": "Your {year} Year in Review is here", + "BUTTON": "See your impact" + }, + "NAVIGATION": { + "PREVIOUS": "Previous", + "NEXT": "Next", + "SHARE": "Share" + } + } +} diff --git a/app/javascript/dashboard/i18n/locale/vi/advancedFilters.json b/app/javascript/dashboard/i18n/locale/vi/advancedFilters.json index 9669efcab..145ddbe97 100644 --- a/app/javascript/dashboard/i18n/locale/vi/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/vi/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "HOẶC" }, "INPUT_PLACEHOLDER": "Enter value", + "CONTACT_SEARCH_PLACEHOLDER": "Tìm kiếm liên hệ", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "Bằng", "not_equal_to": "Không bằng", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "Tên người được phân công", "INBOX_NAME": "Tên kênh", "TEAM_NAME": "Tên nhóm", + "CONTACT": "Liên hệ", "CONVERSATION_IDENTIFIER": "Định danh cuộc hội thoại", "CAMPAIGN_NAME": "Tên chiến dịch", "LABELS": "Nhãn", diff --git a/app/javascript/dashboard/i18n/locale/vi/chatlist.json b/app/javascript/dashboard/i18n/locale/vi/chatlist.json index c66341891..e76d78ef0 100644 --- a/app/javascript/dashboard/i18n/locale/vi/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/vi/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/vi/companies.json b/app/javascript/dashboard/i18n/locale/vi/companies.json index 82ac9c245..08f76e616 100644 --- a/app/javascript/dashboard/i18n/locale/vi/companies.json +++ b/app/javascript/dashboard/i18n/locale/vi/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/vi/contact.json b/app/javascript/dashboard/i18n/locale/vi/contact.json index aaaaaae94..0d58c7591 100644 --- a/app/javascript/dashboard/i18n/locale/vi/contact.json +++ b/app/javascript/dashboard/i18n/locale/vi/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "Attributes", "HISTORY": "History", "NOTES": "Ghi chú", + "MEDIA": "Media", "MERGE": "Merge" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/vi/conversation.json b/app/javascript/dashboard/i18n/locale/vi/conversation.json index ca100bb22..ed8aa3a30 100644 --- a/app/javascript/dashboard/i18n/locale/vi/conversation.json +++ b/app/javascript/dashboard/i18n/locale/vi/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "Bạn chỉ có thể phản hồi hội thoại này bằng tin nhắn mẫu vì", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "Giới hạn thời lượng tin nhắn 24 giờ", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "Bạn đang trả lời:", "REMOVE_SELECTION": "Xóa lựa chọn", "DOWNLOAD": "Tải xuống", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "Không thể mở bản ghi âm", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "Kéo thả vào đây để đính kèm", + "IMAGE_UPLOAD_SUCCESS": "Ảnh tải lên thành công", "START_AUDIO_RECORDING": "Bắt đầu ghi âm", "STOP_AUDIO_RECORDING": "Dừng ghi âm", "COPILOT_THINKING": "Copilot đang suy nghĩ", @@ -303,6 +306,25 @@ "MESSAGE": "You cannot undo this action", "DELETE": "Xoá", "CANCEL": "Huỷ" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "Mô tả", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "View all", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/vi/emoji.json b/app/javascript/dashboard/i18n/locale/vi/emoji.json index 6311baec1..2a13bbaeb 100644 --- a/app/javascript/dashboard/i18n/locale/vi/emoji.json +++ b/app/javascript/dashboard/i18n/locale/vi/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "Search emojis", "NOT_FOUND": "No emoji match your search", "REMOVE": "Xoá" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search", + "NO_ICON": "No icons match your search", + "REMOVE": "Xoá", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/vi/helpCenter.json b/app/javascript/dashboard/i18n/locale/vi/helpCenter.json index 944d5ede7..4a11f277c 100644 --- a/app/javascript/dashboard/i18n/locale/vi/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/vi/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "Đã phát hành", "ARCHIVED": "Đã lưu trữ" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "Uncategorised" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "All locales" }, + "SEARCH_PLACEHOLDER": "Search articles...", "NEW_ARTICLE": "New article" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "There are no articles in this category", "SUBTITLE": "Articles in this category will appear here" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "Xoá", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "Tạo danh mục", "EDIT_CATEGORY": "Sửa danh mục", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} category | {n} categories", "BREADCRUMB": { "CATEGORY_LOCALE": "Categories ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "Không tìm thấy danh mục nào", "SUBTITLE": "Categories will appear here. You can add a category by clicking the 'New Category' button." }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "No locales available | {n} locale | {n} locales", "NEW_LOCALE_BUTTON_TEXT": "New locale", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} article | {count} articles", "CATEGORIES_COUNT": "{count} category | {count} categories", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "Make default", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "Xoá" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "Search...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "Chưa được phân loại" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "Tên" + }, + "PAGE_TITLE": { + "LABEL": "Page title" + }, + "HEADER_TEXT": { + "LABEL": "Header text" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "Thêm ngôn ngữ", "DESCRIPTION": "Select the language in which this article will be written. This will be added to your list of translations, and you can add more later.", @@ -730,10 +791,30 @@ }, "PREVIEW": "Xem trước", "PUBLISH": "Phát hành", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "Nháp", "ARCHIVE": "Archive", "BACK_TO_ARTICLES": "Back to articles" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "Tiêu đề" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "More properties", "UNCATEGORIZED": "Chưa được phân loại", diff --git a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json index 00e15289a..0a5ef6829 100644 --- a/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/vi/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "There was an error connecting to Instagram, please try again", "ERROR_AUTH": "There was an error connecting to Instagram, please try again", "NEW_INBOX_SUGGESTION": "This Instagram account was previously linked to a different inbox and has now been migrated here. All new messages will appear here. The old inbox will no longer be able to send or receive messages for this account.", - "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore." + "DUPLICATE_INBOX_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. You won’t be able to send/receive Instagram messages from this inbox anymore.", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "Để thêm hồ sơ Twitter của bạn làm kênh, bạn cần xác thực Hồ sơ Twitter của mình bằng cách nhấp vào 'Đăng nhập bằng Twitter", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "This inbox is connected through WhatsApp embedded signup.", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "You can reconfigure this inbox to update your WhatsApp Business settings.", "WHATSAPP_RECONFIGURE_BUTTON": "Reconfigure", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "ID tài khoản doanh nghiệp", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "Khoá API", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "Connect to WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "Sync Templates", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "Đóng", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "Thêm", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "Hộp thư đến", + "PHONE_NUMBER": "Số điện thoại", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "Trờ về", + "CANCEL": "Huỷ", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/vi/index.js b/app/javascript/dashboard/i18n/locale/vi/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/vi/index.js +++ b/app/javascript/dashboard/i18n/locale/vi/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/vi/integrations.json b/app/javascript/dashboard/i18n/locale/vi/integrations.json index 816b6d328..433566774 100644 --- a/app/javascript/dashboard/i18n/locale/vi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/vi/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "Những sự kiện được theo dõi", "LEARN_MORE": "Learn more about webhooks", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "Upgrade now", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "Tìm hiểu thêm", + "OVERVIEW": { + "HEADER": "Tổng quan", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "Dismiss" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "Dismiss" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "Load more", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "Documents" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Sân chơi", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "Phí", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "Trợ lý", "SWITCH_ASSISTANT": "Chuyển đổi giữa các trợ lý", @@ -494,10 +577,6 @@ "PLACEHOLDER": "Enter assistant name", "ERROR": "The name is required" }, - "TEMPERATURE": { - "LABEL": "Response Temperature", - "DESCRIPTION": "Adjust how creative or restrictive the assistant's responses should be. Lower values produce more focused and deterministic responses, while higher values allow for more creative and varied outputs." - }, "DESCRIPTION": { "LABEL": "Mô tả", "PLACEHOLDER": "Enter assistant description", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "Documents", "ADD_NEW": "Create a new document", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} selected", "SELECT_ALL": "Select all ({count})", "UNSELECT_ALL": "Unselect all ({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "Related FAQs", - "DESCRIPTION": "These FAQs are generated directly from the document." + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "Not available", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "Sao Chép", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "Enter the URL of the document to add it as a knowledge source and choose the assistant to associate it with.", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "There was an error deleting the document, please try again." }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "View Related Responses", + "VIEW_DETAILS": "Xem chi tiết", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "Delete Document" diff --git a/app/javascript/dashboard/i18n/locale/vi/onboarding.json b/app/javascript/dashboard/i18n/locale/vi/onboarding.json index ffbae5a8b..f6d0dc868 100644 --- a/app/javascript/dashboard/i18n/locale/vi/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/vi/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "Đã xảy ra lỗi. Vui lòng thử lại.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "Ready", + "HELP_CENTER": "Help Center", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} category | {count} categories", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "Kết nối", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "Voice", + "VIEW_ALL": "View all", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "Kết nối", + "BACK": "Trờ về", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/vi/report.json b/app/javascript/dashboard/i18n/locale/vi/report.json index 2db342d1c..c8b08f7c9 100644 --- a/app/javascript/dashboard/i18n/locale/vi/report.json +++ b/app/javascript/dashboard/i18n/locale/vi/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "Clear filter", "EMPTY_LIST": "Không tìm thấy kết quả" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "Load more", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "Chưa được phân công", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "Showing {start} to {end} of {total} results", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/vi/sessionLimit.json b/app/javascript/dashboard/i18n/locale/vi/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/vi/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/vi/settings.json b/app/javascript/dashboard/i18n/locale/vi/settings.json index 4a3fe947c..51fb5f8be 100644 --- a/app/javascript/dashboard/i18n/locale/vi/settings.json +++ b/app/javascript/dashboard/i18n/locale/vi/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "Token truy cập", "NOTE": "Có thể sử dụng Token này nếu bạn đang xây dựng tích hợp dựa trên API", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "Sao Chép", "RESET": "Reset", "CONFIRM_RESET": "Are you sure?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "Assistants", + "CAPTAIN_OVERVIEW": "Tổng quan", "CAPTAIN_DOCUMENTS": "Documents", "CAPTAIN_RESPONSES": "FAQs", "CAPTAIN_TOOLS": "Tools", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "Thông báo", "CANNED_RESPONSES": "Thư mẫu phẩn hồi", "INTEGRATIONS": "Tích hợp", + "DATA": "Data", "PROFILE_SETTINGS": "Cài Đặt Hồ Sơ", "ACCOUNT_SETTINGS": "Cài Đặt Tài Khoản", "APPLICATIONS": "Ứng dụng", @@ -379,11 +393,124 @@ "INFO_TEXT": "Hãy để hệ thống tự động đánh dấu bạn ngoại tuyến khi bạn không sử dụng ứng dụng hoặc trang tổng quan.", "INFO_SHORT": "Automatically mark offline when you aren't using the app." }, + "SORT_TOOLTIP": "Sort", + "SORT_BY": "Sắp bởi", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "Đọc tài liệu", "SECURITY": "Security", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "Nhập", + "EXPORT": "Export" + }, + "TYPES": { + "CONTACTS": "Liên hệ", + "CONVERSATIONS": "Các cuộc hội thoại", + "MESSAGES": "Tin nhắn" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "Huỷ", + "IMPORT": "Nhập" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "Nhập", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "Tên", + "TYPE": "Kiểu", + "STATUS": "Trạng thái", + "IMPORTED": "Imported", + "CREATED": "Đã tạo", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "Đã tạo", + "DURATION": "Thời lượng", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "Tất cả", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "Tin nhắn" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "Làm mới", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "Hoàn tất", + "completed_with_errors": "Completed with errors", + "failed": "Failed", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "Gói hiện tại", "PLAN_NOTE": "Bạn hiện đã đăng ký gói **{plan}** với **{quantity}** giấy phép", "SEAT_COUNT": "Number of seats", - "RENEWS_ON": "Renews on" + "RENEWS_ON": "Renews on", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "View Pricing", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "Retry", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/advancedFilters.json b/app/javascript/dashboard/i18n/locale/zh_CN/advancedFilters.json index 01a418d04..7f9cba789 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "或" }, "INPUT_PLACEHOLDER": "填写内容", + "CONTACT_SEARCH_PLACEHOLDER": "搜索联系人", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "等于", "not_equal_to": "不等于", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "受理人姓名", "INBOX_NAME": "收件箱名称", "TEAM_NAME": "团队名称", + "CONTACT": "联系人", "CONVERSATION_IDENTIFIER": "对话标识", "CAMPAIGN_NAME": "活动名称", "LABELS": "标签", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/bulkActions.json b/app/javascript/dashboard/i18n/locale/zh_CN/bulkActions.json index 63b92acbe..ff87f81e7 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/bulkActions.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/bulkActions.json @@ -27,13 +27,13 @@ }, "LABELS": { "ASSIGN_LABELS": "分配标签", - "REMOVE_LABELS": "Remove labels", + "REMOVE_LABELS": "删除标签", "ASSIGN_SELECTED_LABELS": "分配指定的标签", - "REMOVE_SELECTED_LABELS": "Remove selected labels", + "REMOVE_SELECTED_LABELS": "删除选中标签", "ASSIGN_SUCCESFUL": "已成功分配标签.", "ASSIGN_FAILED": "分配标签失败。请再试一次。", - "REMOVE_SUCCESFUL": "Labels removed successfully.", - "REMOVE_FAILED": "Failed to remove labels. Please try again." + "REMOVE_SUCCESFUL": "标签删除成功。", + "REMOVE_FAILED": "删除标签失败,请重试。" }, "TEAMS": { "NONE": "啥都没有", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/chatlist.json b/app/javascript/dashboard/i18n/locale/zh_CN/chatlist.json index 9d170012f..89edca56f 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "Priority: Highest first, Created: Oldest first" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/companies.json b/app/javascript/dashboard/i18n/locale/zh_CN/companies.json index 211a9b577..bc692a48a 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/companies.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/contact.json b/app/javascript/dashboard/i18n/locale/zh_CN/contact.json index 8508692d5..35031f78f 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/contact.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "属性", "HISTORY": "历史记录", "NOTES": "备注", + "MEDIA": "媒体", "MERGE": "合并" }, "HISTORY": { @@ -588,7 +589,7 @@ "REMOVE_LABELS": "Remove Labels", "ASSIGN_LABELS_SUCCESS": "已成功分配标签.", "ASSIGN_LABELS_FAILED": "Failed to assign labels", - "REMOVE_LABELS_SUCCESS": "Labels removed successfully.", + "REMOVE_LABELS_SUCCESS": "标签删除成功。", "REMOVE_LABELS_FAILED": "Failed to remove labels", "DESCRIPTION": "Select the labels you want to add to the selected contacts.", "NO_LABELS_FOUND": "No labels available yet.", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json b/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json index 3ff4fdd2e..66ac83550 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "您只能使用模板信息回复此会话,原因是", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 小时消息窗口限制", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "此 Instagram 帐户已迁移到新的 Instagram 通道收件箱。 所有新消息都将在这里显示。您将无法从这个对话中发送消息。", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "您正在回复到:", "REMOVE_SELECTION": "移除选择", "DOWNLOAD": "下载", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "无法打开音频", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "拖放到此处添加附件", + "IMAGE_UPLOAD_SUCCESS": "图片上传成功", "START_AUDIO_RECORDING": "开始录音", "STOP_AUDIO_RECORDING": "停止录音", "COPILOT_THINKING": "Copilot 正在思考", @@ -303,6 +306,25 @@ "MESSAGE": "此操作无法撤销。", "DELETE": "删除", "CANCEL": "取消" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "描述信息", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "查看全部", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "Order #{id}", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/emoji.json b/app/javascript/dashboard/i18n/locale/zh_CN/emoji.json index 7cea49648..9cbbd1d14 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/emoji.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "搜索表情符号", "NOT_FOUND": "没有适合你的搜索结果", "REMOVE": "删除" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "没有适合你的搜索结果", + "NO_ICON": "No icons match your search", + "REMOVE": "删除", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/helpCenter.json b/app/javascript/dashboard/i18n/locale/zh_CN/helpCenter.json index adf8bdf07..e27f97b6b 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "已发布", "ARCHIVED": "已归档" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "未分类" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "所有语言环境" }, + "SEARCH_PLACEHOLDER": "搜索文章...", "NEW_ARTICLE": "新建文章" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "此类别中没有文章", "SUBTITLE": "此类别中的文章将显示在此处" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "删除", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "新建类别", "EDIT_CATEGORY": "编辑类别", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} 个类别 | {n} 个类别", "BREADCRUMB": { "CATEGORY_LOCALE": "类别 ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "未找到类别", "SUBTITLE": "类别将显示在此处。您可以点击“新建类别”按钮添加类别。" }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} 篇文章 | {count} 篇文章" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "没有可用的语言环境 | {n} 个语言环境 | {n} 个语言环境", "NEW_LOCALE_BUTTON_TEXT": "新建语言环境", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} 篇文章 | {count} 篇文章", "CATEGORIES_COUNT": "{count} 个类别 | {count} 个类别", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "设为默认", "MOVE_TO_DRAFT": "Move to draft", "PUBLISH_LOCALE": "Publish locale", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "删除" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "搜索……", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "未分类" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "姓名:" + }, + "PAGE_TITLE": { + "LABEL": "页面标题" + }, + "HEADER_TEXT": { + "LABEL": "标题文本" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "添加一个新的语言环境", "DESCRIPTION": "选择此文章将使用的语言。这将添加到您的翻译列表中,您可以稍后添加更多。", @@ -730,10 +791,30 @@ }, "PREVIEW": "预览", "PUBLISH": "发布", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "草稿", "ARCHIVE": "归档", "BACK_TO_ARTICLES": "返回文章" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "标题" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "更多属性", "UNCATEGORIZED": "未分类", diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json index e29dd5cb9..d382ec198 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "连接到 Instagram 时出错,请重试", "ERROR_AUTH": "连接到 Instagram 时出错,请重试", "NEW_INBOX_SUGGESTION": "这个 Instagram 账户先前已连接到一个不同的收件箱,现在已经迁移到这里。 所有新消息都将出现在这里。旧收件箱将无法再发送或接收此账户的消息。", - "DUPLICATE_INBOX_BANNER": "此 Instagram 账户已迁移到新的 Instagram 通道收件箱。您将无法从此收件箱发送/接收 Instagram 消息。" + "DUPLICATE_INBOX_BANNER": "此 Instagram 账户已迁移到新的 Instagram 通道收件箱。您将无法从此收件箱发送/接收 Instagram 消息。", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "Continue with TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "Connect your TikTok Profile", "HELP": "To add your TikTok profile as a channel, you need to authenticate your TikTok Profile by clicking on 'Continue with TikTok' ", "ERROR_MESSAGE": "There was an error connecting to TikTok, please try again", - "ERROR_AUTH": "There was an error connecting to TikTok, please try again" + "ERROR_AUTH": "There was an error connecting to TikTok, please try again", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "若要将您的Twitter个人资料添加为频道,您需要通过点击“使用Twitter登录”来验证您的Twitter个人资料。 ", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "此收件箱已通过嵌入注册的 WhatsApp 连接。", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "您可以重新配置此收件箱来更新您的 WhatsApp Business 设置。", "WHATSAPP_RECONFIGURE_BUTTON": "重新配置", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "企业账户ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API 密钥", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "连接到 WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "Upgrade to WhatsApp embedded signup for easier management.", "WHATSAPP_CONNECT_DESCRIPTION": "Connect this inbox to WhatsApp Business for enhanced features and easier management.", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "Manually sync message templates from WhatsApp to update your available templates.", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "同步模板", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "Templates sync initiated successfully. It may take a couple of minutes to update.", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "关闭", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "Display phone number", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "添加", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "收件箱", + "PHONE_NUMBER": "电话号码", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "后退", + "CANCEL": "取消", + "CONTINUE": "Continue", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/index.js b/app/javascript/dashboard/i18n/locale/zh_CN/index.js index 785b1e0b1..290a47a14 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/index.js +++ b/app/javascript/dashboard/i18n/locale/zh_CN/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -75,6 +76,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json index 66191b450..497aa58c9 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "订阅事件", "LEARN_MORE": "了解更多关于 Webhooks 的信息", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "立即升级", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "Secret", "COPY": "Copy secret to clipboard", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "了解更多", + "OVERVIEW": { + "HEADER": "概览", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "取消" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "取消" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "This month", + "LAST_MONTH": "Last month" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "加载更多", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "Pending FAQs", + "DOCUMENTS": "文档" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "试验场", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "计费", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "助手", "SWITCH_ASSISTANT": "在助手之间切换", @@ -494,10 +577,6 @@ "PLACEHOLDER": "输入助手名称", "ERROR": "名称是必需的" }, - "TEMPERATURE": { - "LABEL": "响应温度", - "DESCRIPTION": "调整助手回复的创造性或限制程度。较低的数值会产生更专注和确定性的回复,而较高的数值则允许更有创意和多样化的输出。" - }, "DESCRIPTION": { "LABEL": "描述信息", "PLACEHOLDER": "输入助手描述", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "文档", "ADD_NEW": "创建新文档", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "{count} 已选择", "SELECT_ALL": "全选 ({count})", "UNSELECT_ALL": "取消全选({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "相关常见问题", - "DESCRIPTION": "这些常见问题直接从文档生成。" + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "暂无", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "复制", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "输入文档的 URL 以将其添加为知识源,并选择要关联的助手。", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "删除文档时出错,请重试" }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "查看相关常见问题", + "VIEW_DETAILS": "查看详细信息", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "删除文档" diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/onboarding.json b/app/javascript/dashboard/i18n/locale/zh_CN/onboarding.json index b2305361d..afb267c12 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "Continue", + "SKIP": "Skip", + "ERROR": "出错了。请重试。", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "已就绪", + "HELP_CENTER": "帮助中心", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} 个类别 | {count} 个类别", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "连接", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "Email", + "MORE_CHANNELS_VOICE": "语音", + "VIEW_ALL": "查看全部", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "连接", + "BACK": "后退", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/report.json b/app/javascript/dashboard/i18n/locale/zh_CN/report.json index 0d5592e44..5c34c44bb 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/report.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "清除筛选条件", "EMPTY_LIST": "没有检索到相关信息" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "加载更多", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "未分配", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "显示 {start} 到 {end} 条,共 {total} 条结果", "PER_PAGE_TEMPLATE": "{size} / page" diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/sessionLimit.json b/app/javascript/dashboard/i18n/locale/zh_CN/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/zh_CN/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/settings.json b/app/javascript/dashboard/i18n/locale/zh_CN/settings.json index 1ae37314e..635e81723 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/settings.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/settings.json @@ -86,9 +86,21 @@ "NOTE": "Manage additional security features for your account.", "MFA_BUTTON": "Manage Two-Factor Authentication" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "访问令牌", "NOTE": "如果您正在构建基于 API 的集成,这个令牌可以被使用", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "复制", "RESET": "重置", "CONFIRM_RESET": "您确定吗?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "All Companies", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "助手", + "CAPTAIN_OVERVIEW": "概览", "CAPTAIN_DOCUMENTS": "文档", "CAPTAIN_RESPONSES": "常见问题", "CAPTAIN_TOOLS": "工具", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "消息通知", "CANNED_RESPONSES": "预设回复", "INTEGRATIONS": "集成方式", + "DATA": "Data", "PROFILE_SETTINGS": "个人资料设置", "ACCOUNT_SETTINGS": "账户设置", "APPLICATIONS": "应用程序", @@ -379,11 +393,124 @@ "INFO_TEXT": "当您不使用应用程序或仪表板时,让系统自动标记您离线。", "INFO_SHORT": "当您不使用应用程序时自动标记离线。" }, + "SORT_TOOLTIP": "排序", + "SORT_BY": "排序方式", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "阅读文档", "SECURITY": "安全", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "Conversation Workflow" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "导入", + "EXPORT": "导出" + }, + "TYPES": { + "CONTACTS": "联系人", + "CONVERSATIONS": "会话", + "MESSAGES": "消息" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "取消", + "IMPORT": "导入" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "Coming soon" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "导入", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "姓名:", + "TYPE": "类型", + "STATUS": "状态", + "IMPORTED": "Imported", + "CREATED": "创建时间", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "创建时间", + "DURATION": "持续时间", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "所有的", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "消息" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "刷新", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "已完成", + "completed_with_errors": "Completed with errors", + "failed": "失败", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain Settings", "DESCRIPTION": "Configure your AI models and features for Captain. Captain follows a credit based billing, you will be charged credits for every action Captain takes based on the model selected.", @@ -414,7 +541,9 @@ "DESCRIPTION": "Enable or disable AI-powered features.", "AUDIO_TRANSCRIPTION": { "TITLE": "Audio Transcription", - "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts." + "DESCRIPTION": "Automatically convert voice messages and call recordings into searchable text transcripts.", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "Help Center Search Indexing", @@ -439,7 +568,18 @@ "TITLE": "当前计划", "PLAN_NOTE": "您当前订阅的是 **{plan}** 计划,拥有 **{quantity}** 个许可证", "SEAT_COUNT": "座位数", - "RENEWS_ON": "续订于" + "RENEWS_ON": "续订于", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "查看价格", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "Purchase Credits", "LOADING": "Loading options...", "FETCH_ERROR": "Failed to load credit options. Please try again.", + "RETRY": "重试", "PURCHASE_ERROR": "Failed to process purchase. Please try again.", "PURCHASE_SUCCESS": "Successfully added {credits} credits to your account", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "Assign max", "DURATION": "Conversations per agent in every" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "Added inboxes", "DESCRIPTION": "Add inboxes for which this policy will be applicable.", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/advancedFilters.json b/app/javascript/dashboard/i18n/locale/zh_TW/advancedFilters.json index 2ab003990..04c612d27 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/advancedFilters.json @@ -19,6 +19,8 @@ "OR": "或" }, "INPUT_PLACEHOLDER": "輸入值", + "CONTACT_SEARCH_PLACEHOLDER": "搜尋聯絡人", + "CONTACT_FALLBACK": "Contact #{id}", "OPERATOR_LABELS": { "equal_to": "等於", "not_equal_to": "不等於", @@ -49,6 +51,7 @@ "ASSIGNEE_NAME": "指派對象", "INBOX_NAME": "收件匣名稱", "TEAM_NAME": "團隊名稱", + "CONTACT": "聯絡人", "CONVERSATION_IDENTIFIER": "對話識別碼", "CAMPAIGN_NAME": "活動名稱", "LABELS": "標籤", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/chatlist.json b/app/javascript/dashboard/i18n/locale/zh_TW/chatlist.json index 71f4d58f7..5316d7ed2 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/chatlist.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/chatlist.json @@ -79,6 +79,9 @@ }, "priority_desc_created_at_asc": { "TEXT": "優先順序:高的在前,建立日期:舊的在前" + }, + "unread": { + "TEXT": "Unread Count: Highest first" } }, "ATTACHMENTS": { diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/companies.json b/app/javascript/dashboard/i18n/locale/zh_TW/companies.json index fa023537d..c30bf1423 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/companies.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/companies.json @@ -25,6 +25,10 @@ "ACTIONS": { "CREATE": "Add company" }, + "SELECTOR": { + "PLACEHOLDER": "Select company", + "CREATE_OPTION": "Add \"{name}\"" + }, "CREATE": { "TITLE": "Add company details", "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/contact.json b/app/javascript/dashboard/i18n/locale/zh_TW/contact.json index a7848de4c..8a2eef0f8 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/contact.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/contact.json @@ -510,6 +510,7 @@ "ATTRIBUTES": "屬性", "HISTORY": "歷史紀錄", "NOTES": "備註", + "MEDIA": "媒體", "MERGE": "合併" }, "HISTORY": { diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json b/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json index 9501312d7..beaecf9ce 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/conversation.json @@ -44,6 +44,8 @@ "TWILIO_WHATSAPP_CAN_REPLY": "由於以下原因,您只能使用範本訊息回覆此對話", "TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 小時訊息視窗限制", "OLD_INSTAGRAM_INBOX_REPLY_BANNER": "此 Instagram 帳號已遷移至新的 Instagram 頻道收件匣。所有新訊息將顯示在該處。您將無法再從此對話發送訊息。", + "INSTAGRAM_RESTRICTION_BANNER": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "INSTAGRAM_RESTRICTION_STATUS_LINK": "View status update", "REPLYING_TO": "您正在回覆:", "REMOVE_SELECTION": "移除選擇", "DOWNLOAD": "下載", @@ -233,6 +235,7 @@ "TIP_AUDIORECORDER_ERROR": "無法開啟音訊", "AUDIO_CONVERSION_FAILED": "Audio conversion failed. Please try again.", "DRAG_DROP": "拖放至此處以附加檔案", + "IMAGE_UPLOAD_SUCCESS": "圖片上傳成功", "START_AUDIO_RECORDING": "開始錄音", "STOP_AUDIO_RECORDING": "停止錄音", "COPILOT_THINKING": "Copilot 正在思考", @@ -303,6 +306,25 @@ "MESSAGE": "此操作無法復原", "DELETE": "刪除", "CANCEL": "取消" + }, + "REPORT_MESSAGE": { + "LABEL": "Report message", + "TITLE": "Report Captain message", + "DESCRIPTION": "Found an issue with this AI response? Let us know what went wrong and our team will review it to help improve Captain's accuracy.", + "PROBLEM_TYPE": "Problem type", + "PROBLEM_TYPE_PLACEHOLDER": "Select a problem type", + "DESCRIPTION_LABEL": "描述", + "DESCRIPTION_PLACEHOLDER": "Describe the problem in detail", + "SUBMIT": "Report", + "SUCCESS": "Thanks for reporting. Our team will take a look.", + "ERROR": "Could not report this message. Please try again.", + "REASONS": { + "incorrect_information": "Incorrect information", + "inappropriate_response": "Inappropriate response", + "incomplete_response": "Incomplete response", + "outdated_information": "Outdated information", + "other": "Other" + } } }, "SIDEBAR": { @@ -400,7 +422,8 @@ "VIEW_ALL": "查看全部", "SHOW_LESS": "Show less", "MORE_COUNT": "+{count}", - "UNTITLED_FILE": "Untitled file" + "UNTITLED_FILE": "Untitled file", + "JUMP_TO_MESSAGE": "Jump to message" }, "SHOPIFY": { "ORDER_ID": "訂單 #{id}", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/emoji.json b/app/javascript/dashboard/i18n/locale/zh_TW/emoji.json index d6a1703af..aacf33dc4 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/emoji.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/emoji.json @@ -3,5 +3,33 @@ "PLACEHOLDER": "搜尋表情符號", "NOT_FOUND": "找不到符合的表情符號", "REMOVE": "移除" + }, + "EMOJI_ICON_PICKER": { + "TABS": { + "ICONS": "Icons", + "EMOJIS": "Emojis" + }, + "SEARCH_EMOJI": "Search emoji…", + "SEARCH_ICON": "Search icons…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "找不到符合的表情符號", + "NO_ICON": "No icons match your search", + "REMOVE": "移除", + "STYLE": { + "OUTLINE": "Outline icons", + "FILLED": "Filled icons" + }, + "COLORS": { + "SLATE": "Slate", + "RED": "Red", + "ORANGE": "Orange", + "AMBER": "Amber", + "GREEN": "Green", + "TEAL": "Teal", + "BLUE": "Blue", + "INDIGO": "Indigo", + "VIOLET": "Violet", + "PINK": "Pink" + } } } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/helpCenter.json b/app/javascript/dashboard/i18n/locale/zh_TW/helpCenter.json index ca899905c..a310aac24 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/helpCenter.json @@ -533,6 +533,8 @@ "PUBLISHED": "已發佈", "ARCHIVED": "已封存" }, + "PENDING_EDITS": "Unpublished edits", + "PENDING_EDITS_TOOLTIP": "This published article has unpublished edits", "CATEGORY": { "UNCATEGORISED": "未分類" } @@ -552,6 +554,7 @@ "LOCALE": { "ALL": "所有語系" }, + "SEARCH_PLACEHOLDER": "搜尋文章...", "NEW_ARTICLE": "新增文章" }, "EMPTY_STATE": { @@ -579,6 +582,10 @@ "CATEGORY": { "TITLE": "此分類中沒有文章", "SUBTITLE": "此分類中的文章將顯示在此處" + }, + "SEARCH": { + "TITLE": "No matching articles", + "SUBTITLE": "We couldn't find any articles matching your search. Try a different term." } }, "BULK_TRANSLATE": { @@ -611,6 +618,8 @@ "DELETE": "刪除", "STATUS_SUCCESS": "Articles updated successfully", "STATUS_ERROR": "Failed to update articles", + "STATUS_SKIPPED": "1 article with unpublished edits was skipped — open it to publish or discard. | {count} articles with unpublished edits were skipped — open them to publish or discard.", + "STATUS_SKIPPED_ALL": "These articles have unpublished edits — open each to publish or discard.", "CATEGORY_SUCCESS": "Articles moved successfully", "CATEGORY_ERROR": "Failed to move articles", "DELETE_CONFIRM_TITLE": "Delete article | Delete {count} articles", @@ -624,6 +633,7 @@ "CATEGORY_HEADER": { "NEW_CATEGORY": "新增分類", "EDIT_CATEGORY": "編輯分類", + "SEARCH_PLACEHOLDER": "Search categories...", "CATEGORIES_COUNT": "{n} 個分類 | {n} 個分類", "BREADCRUMB": { "CATEGORY_LOCALE": "分類 ({localeCode})", @@ -634,6 +644,10 @@ "TITLE": "找不到分類", "SUBTITLE": "分類將顯示在此處。您可以點擊「新增分類」按鈕來新增分類。" }, + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching categories", + "SUBTITLE": "We couldn't find any categories matching your search. Try a different term." + }, "CATEGORY_CARD": { "ARTICLES_COUNT": "{count} 篇文章 | {count} 篇文章" }, @@ -691,6 +705,11 @@ "LOCALES_PAGE": { "LOCALES_COUNT": "沒有可用的語系 | {n} 個語系 | {n} 個語系", "NEW_LOCALE_BUTTON_TEXT": "新增語系", + "SEARCH_PLACEHOLDER": "Search locales...", + "SEARCH_EMPTY_STATE": { + "TITLE": "No matching locales", + "SUBTITLE": "We couldn't find any locales matching your search. Try a different term." + }, "LOCALE_CARD": { "ARTICLES_COUNT": "{count} 篇文章 | {count} 篇文章", "CATEGORIES_COUNT": "{count} 個分類 | {count} 個分類", @@ -700,9 +719,51 @@ "MAKE_DEFAULT": "設為預設", "MOVE_TO_DRAFT": "移至草稿", "PUBLISH_LOCALE": "發佈語系", + "CUSTOMIZE_CONTENT": "Localize content", + "SELECT_POPULAR_CONTENT": "Select recommended content", "DELETE": "刪除" } }, + "POPULAR_CONTENT_DIALOG": { + "TITLE": "Recommended content", + "DESCRIPTION": "Pick up to 3 categories and 6 articles to feature on this locale's help center home page. Drag them into the order you want visitors to see.", + "SEARCH": "搜尋...", + "EMPTY": "No matching results", + "ADD_ANOTHER": "Add another...", + "SLOTS_LEFT": "{count} slots left", + "OVERRIDING_DEFAULTS": "Overriding defaults for this locale", + "CONFIRM": "Save recommendations", + "CATEGORIES": { + "LABEL": "Recommended categories", + "ARTICLES_COUNT": "No articles | {count} article | {count} articles" + }, + "ARTICLES": { + "LABEL": "Recommended articles", + "IN_CATEGORY": "in {category}", + "UNCATEGORIZED": "未分類" + }, + "API": { + "SUCCESS_MESSAGE": "Recommended content updated successfully", + "ERROR_MESSAGE": "Unable to update recommended content. Try again." + } + }, + "CONTENT_DIALOG": { + "TITLE": "Localize content", + "DESCRIPTION": "Set values specific to this locale. Anything left blank falls back to the default locale.", + "NAME": { + "LABEL": "名稱" + }, + "PAGE_TITLE": { + "LABEL": "頁面標題" + }, + "HEADER_TEXT": { + "LABEL": "標頭文字" + }, + "API": { + "SUCCESS_MESSAGE": "Locale content updated successfully", + "ERROR_MESSAGE": "Unable to update locale content. Try again." + } + }, "ADD_LOCALE_DIALOG": { "TITLE": "新增語系", "DESCRIPTION": "選擇此文章將使用的語言。這將新增到您的翻譯清單中,您可以稍後新增更多。", @@ -730,10 +791,30 @@ }, "PREVIEW": "預覽", "PUBLISH": "發佈", + "PUBLISH_CHANGES": "Publish changes", + "PUBLISH_CHANGES_SUCCESS": "Changes published successfully", + "PUBLISH_CHANGES_ERROR": "Could not publish changes", + "SAVE_IN_PROGRESS": "Still saving your latest changes — please try again in a moment.", + "DISCARD_CHANGES": "Discard changes", + "DISCARD_CHANGES_SUCCESS": "Changes discarded", + "DISCARD_CHANGES_ERROR": "Could not discard changes", + "PENDING_CHANGES": "Pending changes", + "VIEW_CHANGES": "View unpublished changes", "DRAFT": "草稿", "ARCHIVE": "封存", "BACK_TO_ARTICLES": "返回文章列表" }, + "PENDING_CHANGES_POPOVER": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "This article has draft changes that aren't live yet. Apply them before changing the status, or discard them?", + "APPLY": "Apply changes", + "DISCARD": "Discard changes" + }, + "DIFF_DIALOG": { + "TITLE": "Unpublished changes", + "DESCRIPTION": "Compare your draft against the version that's currently live.", + "TITLE_LABEL": "標題" + }, "EDIT_ARTICLE": { "MORE_PROPERTIES": "更多屬性", "UNCATEGORIZED": "未分類", diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json index c21756e36..3b15ffd12 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/inboxMgmt.json @@ -58,14 +58,17 @@ "ERROR_MESSAGE": "連結 Instagram 時發生錯誤,請重試", "ERROR_AUTH": "連結 Instagram 時發生錯誤,請重試", "NEW_INBOX_SUGGESTION": "此 Instagram 帳號先前連結至其他收件匣,現已遷移至此處。所有新訊息將顯示在此。舊收件匣將無法再為此帳號收發訊息。", - "DUPLICATE_INBOX_BANNER": "此 Instagram 帳號已遷移至新的 Instagram 頻道收件匣。您將無法再從此收件匣收發 Instagram 訊息。" + "DUPLICATE_INBOX_BANNER": "此 Instagram 帳號已遷移至新的 Instagram 頻道收件匣。您將無法再從此收件匣收發 Instagram 訊息。", + "SETTINGS_RESTRICTED_WARNING": "Instagram is currently restricted. Some messages or actions may be delayed or unavailable while we restore full support.", + "STATUS_LINK": "View status update" }, "TIKTOK": { "CONTINUE_WITH_TIKTOK": "繼續使用 TikTok", "CONNECT_YOUR_TIKTOK_PROFILE": "連結您的 TikTok 個人檔案", "HELP": "若要將您的 TikTok 個人檔案新增為頻道,請點擊「繼續使用 TikTok」來驗證您的 TikTok 個人檔案。", "ERROR_MESSAGE": "連結 TikTok 時發生錯誤,請重試", - "ERROR_AUTH": "連結 TikTok 時發生錯誤,請重試" + "ERROR_AUTH": "連結 TikTok 時發生錯誤,請重試", + "NORTH_AMERICA_WARNING": "TikTok connections for North American accounts are temporarily unavailable while we wait for an update from the TikTok team." }, "TWITTER": { "HELP": "若要將您的 Twitter 個人檔案新增為頻道,請點擊「使用 Twitter 登入」來驗證您的 Twitter 個人檔案。", @@ -653,6 +656,10 @@ }, "CREDENTIALS": { "DESCRIPTION": "Voice calling requires Twilio API Key credentials. These are used to generate tokens for agent voice connections." + }, + "INBOUND": { + "LABEL": "Allow incoming calls", + "DESCRIPTION": "Let customers call this number. When turned off, incoming calls are declined automatically — agents aren't notified and no conversation is created. Agents can still place outgoing calls." } }, "WHATSAPP_CALLING": { @@ -810,6 +817,15 @@ "WHATSAPP_EMBEDDED_SIGNUP_SUBHEADER": "此收件匣透過 WhatsApp Embedded Signup 連接。", "WHATSAPP_EMBEDDED_SIGNUP_DESCRIPTION": "您可以重新設定此收件匣以更新 WhatsApp Business 設定。", "WHATSAPP_RECONFIGURE_BUTTON": "重新設定", + "WHATSAPP_MANUAL_TRANSFER_TITLE": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUBHEADER": "This inbox was connected through WhatsApp embedded signup, which is no longer supported. Enter the WhatsApp Cloud API credentials from your own Meta app to switch this inbox to a manual setup. Configure the webhook in your Meta app using the verification token above before switching.", + "WHATSAPP_MANUAL_TRANSFER_PHONE_NUMBER_ID_LABEL": "Phone Number ID", + "WHATSAPP_MANUAL_TRANSFER_BUSINESS_ACCOUNT_ID_LABEL": "商業帳戶 ID", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_LABEL": "API Key", + "WHATSAPP_MANUAL_TRANSFER_API_KEY_PLACEHOLDER": "Enter a permanent access token from your Meta app", + "WHATSAPP_MANUAL_TRANSFER_BUTTON": "Switch to Manual Setup", + "WHATSAPP_MANUAL_TRANSFER_SUCCESS": "Inbox switched to manual setup successfully.", + "WHATSAPP_MANUAL_TRANSFER_ERROR": "Could not switch to manual setup. Please verify the credentials and try again.", "WHATSAPP_CONNECT_TITLE": "連接到 WhatsApp Business", "WHATSAPP_CONNECT_SUBHEADER": "升級至 WhatsApp Embedded Signup 以便於管理。", "WHATSAPP_CONNECT_DESCRIPTION": "將此收件匣連接到 WhatsApp Business,以獲得進階功能和更便捷的管理。", @@ -827,6 +843,70 @@ "WHATSAPP_TEMPLATES_SYNC_SUBHEADER": "手動從 WhatsApp 同步訊息範本以更新可用範本。", "WHATSAPP_TEMPLATES_SYNC_BUTTON": "同步範本", "WHATSAPP_TEMPLATES_SYNC_SUCCESS": "範本同步已啟動。可能需要幾分鐘才能更新完成。", + "WHATSAPP_MANUAL_MIGRATION": { + "BANNER": { + "TITLE": "Manual setup recommended", + "DESCRIPTION": "This inbox connects through the shared Meta app used for embedded signup, which recent Meta restrictions have affected. To avoid similar issues in the future, we recommend reconnecting it with your own Meta app.", + "START": "Start manual migration", + "GUIDE": "View guide" + }, + "DIALOG": { + "EYEBROW": "WhatsApp manual migration", + "TITLE": "Reconnect WhatsApp inbox", + "CLOSE": "關閉", + "ACTION_REQUIRED_TITLE": "Reconnect with your own Meta app", + "ACTION_REQUIRED_DESCRIPTION": "Inboxes connected through your own Meta app are not affected by restrictions on the shared embedded signup app. This guided flow updates the WhatsApp API connection without creating a new inbox.", + "GUIDE_LINK": "Open the manual setup guide", + "PRESERVED_TITLE": "Preserved", + "PRESERVED_DESCRIPTION": "Conversations, contacts, collaborators, routing, business hours, and inbox settings.", + "UPDATED_TITLE": "Updated", + "UPDATED_DESCRIPTION": "WABA ID, phone number ID, access token, and webhook configuration.", + "WABA_ID": "WABA ID", + "WABA_PLACEHOLDER": "Enter WABA ID", + "WABA_HELP": "The WhatsApp Business Account that owns this phone number.", + "PHONE_NUMBER_ID": "Phone Number ID", + "PHONE_NUMBER_PLACEHOLDER": "Enter Phone Number ID", + "PHONE_NUMBER_HELP": "Meta's unique ID for the WhatsApp number connected to this inbox.", + "DISPLAY_PHONE_NUMBER": "顯示電話號碼", + "DISPLAY_PHONE_NUMBER_PLACEHOLDER": "Enter display phone number", + "DISPLAY_PHONE_NUMBER_HELP": "The customer-facing WhatsApp number. This cannot be changed during migration.", + "ACCESS_TOKEN": "Permanent access token or system user token", + "ACCESS_TOKEN_PLACEHOLDER": "Paste access token", + "TOKEN_HELP_PREFIX": "The token must include", + "TOKEN_HELP_MIDDLE": "新增", + "TOKEN_HELP_SUFFIX": "for template sync and template management.", + "MESSAGING_PERMISSION": "whatsapp_business_messaging.", + "MANAGEMENT_PERMISSION": "whatsapp_business_management", + "REVIEW_TITLE": "Review before reconnecting", + "INBOX": "收件匣", + "PHONE_NUMBER": "電話號碼", + "NOT_ENTERED": "Not entered", + "VERIFY_NOTICE": "Chatwoot will verify these credentials with Meta before applying any changes. If verification fails, the current configuration is left untouched.", + "BACK": "返回", + "CANCEL": "取消", + "CONTINUE": "繼續", + "REVIEW_MIGRATION": "Review migration", + "RECONNECT": "Reconnect WhatsApp inbox" + }, + "STEPS": { + "BEFORE_YOU_START": { + "TITLE": "Before you start", + "DESCRIPTION": "This reconnects the WhatsApp API details for this inbox. Conversations, collaborators, routing, business hours, CSAT, and bot settings will be preserved." + }, + "BUSINESS_DETAILS": { + "TITLE": "Business details", + "DESCRIPTION": "Enter the WhatsApp assets from the customer Meta Business account." + }, + "ACCESS_TOKEN": { + "TITLE": "Access token", + "DESCRIPTION": "Paste a permanent access token or system user token with WhatsApp permissions." + }, + "REVIEW_MIGRATION": { + "TITLE": "Review migration", + "DESCRIPTION": "Confirm the connection details before reconnecting this inbox. Chatwoot will verify the token, WABA, and phone number with Meta before applying changes." + } + } + }, "WHATSAPP_CALLING_ENABLED": { "LABEL": "Enable voice calling", "DESCRIPTION": "Allow agents to start and receive WhatsApp voice calls on this inbox. Available only on embedded-signup WhatsApp Cloud channels with calling permission granted by Meta." diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/index.js b/app/javascript/dashboard/i18n/locale/zh_TW/index.js index 7974e3385..965553a67 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/index.js +++ b/app/javascript/dashboard/i18n/locale/zh_TW/index.js @@ -33,6 +33,7 @@ import report from './report.json'; import resetPassword from './resetPassword.json'; import search from './search.json'; import setNewPassword from './setNewPassword.json'; +import sessionLimit from './sessionLimit.json'; import settings from './settings.json'; import signup from './signup.json'; import sla from './sla.json'; @@ -76,6 +77,7 @@ export default { ...resetPassword, ...search, ...setNewPassword, + ...sessionLimit, ...settings, ...signup, ...sla, diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json index ff9422d88..9141b1ca1 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json @@ -31,6 +31,13 @@ "WEBHOOK": { "SUBSCRIBED_EVENTS": "已訂閱的事件", "LEARN_MORE": "進一步瞭解 webhook", + "PAYWALL": { + "TITLE": "Webhooks are available on paid plans", + "AVAILABLE_ON": "Use webhooks to receive real-time events from your Chatwoot account.", + "UPGRADE_PROMPT": "Upgrade to the Startups, Business, or Enterprise plan to use webhooks.", + "UPGRADE_NOW": "立即升級", + "CANCEL_ANYTIME": "Change or cancel your plan anytime." + }, "SECRET": { "LABEL": "密鑰", "COPY": "複製密鑰至剪貼簿", @@ -392,6 +399,82 @@ "CAPTAIN": { "NAME": "Captain", "HEADER_KNOW_MORE": "瞭解更多", + "OVERVIEW": { + "HEADER": "總覽", + "WELCOME": { + "LABEL": "Captain summary", + "LOADING": "Generating summary…" + }, + "INBOX_BANNER": { + "TEXT": "This assistant isn't connected to any inbox yet, so it won't respond to conversations.", + "ACTION": "Connect inbox", + "DISMISS": "關閉" + }, + "COVERAGE_BANNER": { + "TEXT": "{count} FAQs are pending review, keeping coverage at {coverage}%. Approve them so your assistant can resolve more on its own.", + "ACTION": "Review FAQs", + "DISMISS": "關閉" + }, + "RANGES": { + "LAST_DAYS": "Last {count} days", + "THIS_MONTH": "本月", + "LAST_MONTH": "上個月" + }, + "METRICS": { + "HANDLED": { + "LABEL": "Conversations handled", + "HINT": "Distinct conversations this assistant replied in." + }, + "AUTO_RESOLUTION": { + "LABEL": "Auto-resolution rate", + "HINT": "Share of handled conversations closed without a human reply." + }, + "HANDOFF": { + "LABEL": "Handoff rate", + "HINT": "Share of handled conversations escalated to a human agent." + }, + "HOURS_SAVED": { + "LABEL": "Time saved", + "HINT": "Estimate: Captain replies times ~2 minutes of assumed agent effort per reply. Directional, not measured labor." + }, + "REOPEN": { + "LABEL": "Reopen rate", + "HINT": "Auto-resolved conversations that were reopened afterwards." + }, + "DEPTH": { + "LABEL": "Messages / conversation", + "HINT": "Average replies the assistant sends per conversation." + } + }, + "DRILLDOWN": { + "CLOSE": "Close details", + "EMPTY": "No records found for this metric.", + "ERROR": "Could not load records. Please try again.", + "LOAD_MORE": "載入更多", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations" + }, + "KNOWLEDGE": { + "TITLE": "Knowledge coverage", + "COVERAGE": "{pct}% approved", + "APPROVED": "Approved FAQs", + "PENDING": "待審核的常見問答", + "DOCUMENTS": "文件" + }, + "LINKS": { + "DOCS": { + "TITLE": "Captain docs", + "DESCRIPTION": "Guides and how-tos for Captain" + }, + "PLAYGROUND": { + "TITLE": "Playground", + "DESCRIPTION": "Test this assistant's replies" + }, + "BILLING": { + "TITLE": "帳單", + "DESCRIPTION": "Manage credits and plan" + } + } + }, "ASSISTANT_SWITCHER": { "ASSISTANTS": "助理", "SWITCH_ASSISTANT": "切換助理", @@ -494,10 +577,6 @@ "PLACEHOLDER": "請輸入助理名稱", "ERROR": "名稱為必填" }, - "TEMPERATURE": { - "LABEL": "回應溫度", - "DESCRIPTION": "調整助理回應的創造性或限制性。較低的值會產生更聚焦且確定性的回應,而較高的值則允許更多創意和多樣化的輸出。" - }, "DESCRIPTION": { "LABEL": "描述", "PLACEHOLDER": "請輸入助理描述", @@ -739,6 +818,7 @@ "DOCUMENTS": { "HEADER": "文件", "ADD_NEW": "建立新文件", + "FAQ_COUNT": "{n} FAQ | {n} FAQs", "SELECTED": "已選擇 {count} 個", "SELECT_ALL": "全選({count})", "UNSELECT_ALL": "取消全選({count})", @@ -798,7 +878,27 @@ }, "RELATED_RESPONSES": { "TITLE": "相關常見問答", - "DESCRIPTION": "這些常見問答是直接從文件中生成的。" + "EMPTY": "No FAQs have been generated from this document yet." + }, + "DETAILS": { + "DESCRIPTION": "Review the crawled content and the FAQs generated from this source.", + "SOURCE": "Source", + "GENERATED_FAQS": "Generated FAQs", + "LAST_UPDATED": "Last updated", + "NOT_AVAILABLE": "不可用", + "CONTENT_TAB": "Crawled content", + "PDF_TAB": "PDF details", + "CONTENT_TITLE": "Crawled content", + "PDF_TITLE": "PDF file", + "PDF_DESCRIPTION": "Review the original PDF source.", + "CHARACTER_COUNT": "{count} characters extracted", + "COPY_CONTENT": "複製", + "COPY_SUCCESS": "Crawled content copied to clipboard", + "COPY_ERROR": "Could not copy crawled content", + "VIEW_RAW": "View raw", + "VIEW_PREVIEW": "View preview", + "UNREADABLE_CONTENT": "Readable content could not be extracted from this document. You can view the raw extracted content.", + "EMPTY_CONTENT": "No crawled content is available for this document yet." }, "FORM_DESCRIPTION": "請輸入文件的 URL 將其新增為知識來源,並選擇要關聯的助理。", "CREATE": { @@ -838,7 +938,7 @@ "ERROR_MESSAGE": "刪除文件時發生錯誤,請重試。" }, "OPTIONS": { - "VIEW_RELATED_RESPONSES": "檢視相關回應", + "VIEW_DETAILS": "查看詳細資訊", "SYNC_NOW": "Refresh now", "RETRY_SYNC": "Retry refresh", "DELETE_DOCUMENT": "刪除文件" diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/onboarding.json b/app/javascript/dashboard/i18n/locale/zh_TW/onboarding.json index db6b89923..818540d23 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/onboarding.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/onboarding.json @@ -30,5 +30,59 @@ "VALIDATION_ERROR": "Please fill in all required fields", "SUCCESS": "Details saved successfully", "ERROR": "Could not save details. Please try again." + }, + "ONBOARDING_INBOX_SETUP": { + "GREETING": "Let's set up a few things", + "SUBTITLE": "This will give you head-start in your workspace", + "CONTINUE": "繼續", + "SKIP": "略過", + "ERROR": "發生錯誤,請重試.", + "WHATSAPP_CONNECTED": "WhatsApp connected successfully", + "FACEBOOK_CONNECTED": "Facebook connected successfully", + "CREATED_FOR_YOU": { + "TITLE": "We've created the following for you", + "LIVE_CHAT": "Live Chat widget", + "LIVE_CHAT_DESCRIPTION": "Instant messenger for your website", + "LIVE_CHAT_STATUS": "Almost done…", + "LIVE_CHAT_READY": "已就緒", + "HELP_CENTER": "幫助中心", + "HELP_CENTER_DESCRIPTION": "Your digital encyclopedia", + "HELP_CENTER_GENERATING": "Creating your help center…", + "HELP_CENTER_ANALYZING_WEBSITE": "Analyzing your website…", + "HELP_CENTER_SETTING_UP_CATEGORIES": "Setting up categories…", + "HELP_CENTER_CURATING_ARTICLES": "Curating articles…", + "HELP_CENTER_ARTICLES": "Created {count} article | Created {count} articles", + "HELP_CENTER_CATEGORIES": "{count} 個分類 | {count} 個分類", + "HELP_CENTER_SUMMARY": "Created {count} article across {categories} | Created {count} articles across {categories}" + }, + "CHANNELS": { + "TITLE": "Connect all your conversation channels", + "HEADER": "We found a few channels you can connect", + "CONNECT": "連接", + "CONNECTED": "Connected", + "MORE_CHANNELS_NOTE": "Set up {email} and {voice} channels later inside the app", + "MORE_CHANNELS_EMAIL": "電子郵件", + "MORE_CHANNELS_VOICE": "語音", + "VIEW_ALL": "查看全部", + "GMAIL": "Gmail", + "OUTLOOK": "Outlook", + "OTHER_EMAIL": "Other Email Providers" + }, + "CHANNELS_DIALOG": { + "TITLE": "Connect all your channels instantly", + "SUBTITLE": "Manage all of them from one dashboard. You can also set up and edit inboxes later inside the app.", + "NOTE": "SMS, API, Voice, and other email providers can be set up later from your dashboard.", + "CONNECT_TITLE": "Connect your {name} account", + "CONNECT_SUBTITLE": "Fill out these quick details", + "CONNECT": "連接", + "BACK": "返回", + "SETUP_LATER": "Setup later in app", + "FACEBOOK_SUBTITLE": "Authorize access and choose a Page to connect.", + "FACEBOOK_LAUNCH": "Continue with Facebook", + "FACEBOOK_SELECT_PAGE": "Select a Page to connect", + "FACEBOOK_LOADING": "Loading your Facebook Pages…", + "FACEBOOK_NO_PAGES": "No connectable Pages found. All your Pages are already connected.", + "FACEBOOK_ERROR": "Couldn't connect to Facebook. Please try again." + } } } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/report.json b/app/javascript/dashboard/i18n/locale/zh_TW/report.json index 3cece1b9b..1e0eaa719 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/report.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/report.json @@ -121,6 +121,26 @@ "CLEAR_FILTER": "清除篩選條件", "EMPTY_LIST": "查無結果" }, + "DRILLDOWN": { + "TITLE": "{metric} details", + "RESULT_COUNT_CONVERSATION": "{count} conversation | {count} conversations", + "RESULT_COUNT_MESSAGE": "{count} message | {count} messages", + "EMPTY": "No records found for this bar.", + "ERROR": "Could not load records. Please try again.", + "ADMIN_ONLY": "Only administrators can drill down into report records.", + "LOAD_MORE": "載入更多", + "CLOSE": "Close details", + "PREVIOUS_BUCKET": "Previous bar", + "NEXT_BUCKET": "Next bar", + "UNKNOWN_CONTACT": "Unknown contact", + "UNKNOWN_INBOX": "Unknown inbox", + "UNASSIGNED_AGENT": "未指派", + "NO_MESSAGE_CONTENT": "No message content", + "MESSAGE_CREATED_AT": "Message created at {time}", + "EVENT_OCCURRED_AT": "Event occurred at {time}", + "INCOMING_MESSAGE": "Incoming message", + "OUTGOING_MESSAGE": "Outgoing message" + }, "PAGINATION": { "RESULTS": "顯示第 {start} 至 {end} 筆,共 {total} 筆結果", "PER_PAGE_TEMPLATE": "{size} / 頁" diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/sessionLimit.json b/app/javascript/dashboard/i18n/locale/zh_TW/sessionLimit.json new file mode 100644 index 000000000..926745c23 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/zh_TW/sessionLimit.json @@ -0,0 +1,12 @@ +{ + "SESSION_LIMIT": { + "TITLE": "Active session limit reached", + "DESCRIPTION": "You have reached your limit of active sessions. Please end a session before logging in.", + "END": "End", + "END_ALL": "End all sessions", + "LOG_IN": "Log in", + "CANCEL": "Back to login", + "UNKNOWN_DEVICE": "Unknown device", + "STARTED": "Started" + } +} diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/settings.json b/app/javascript/dashboard/i18n/locale/zh_TW/settings.json index dcf3ed6a3..0e05bc352 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/settings.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/settings.json @@ -86,9 +86,21 @@ "NOTE": "管理您帳戶的額外安全功能。", "MFA_BUTTON": "管理雙因素驗證" }, + "SESSIONS_SECTION": { + "TITLE": "Active Sessions", + "NOTE": "These are the devices currently logged in to your account.", + "CURRENT": "Current session", + "REVOKE": "Revoke", + "REVOKE_SUCCESS": "Session revoked successfully", + "REVOKE_ERROR": "Unable to revoke session. Please try again.", + "FETCH_ERROR": "Unable to fetch sessions. Please try again.", + "LAST_ACTIVE": "Last active", + "UNKNOWN_DEVICE": "Unknown device" + }, "ACCESS_TOKEN": { "TITLE": "存取 Token", "NOTE": "若您正在建立基於 API 的整合,可以使用此 token", + "PAID_PLAN_NOTE": "API access tokens are available on paid plans.", "COPY": "複製", "RESET": "重設", "CONFIRM_RESET": "確定要重設嗎?", @@ -313,6 +325,7 @@ "ALL_COMPANIES": "所有公司", "CAPTAIN": "Captain", "CAPTAIN_ASSISTANTS": "助理", + "CAPTAIN_OVERVIEW": "總覽", "CAPTAIN_DOCUMENTS": "文件", "CAPTAIN_RESPONSES": "常見問答", "CAPTAIN_TOOLS": "工具", @@ -328,6 +341,7 @@ "NOTIFICATIONS": "通知", "CANNED_RESPONSES": "預設回覆", "INTEGRATIONS": "整合", + "DATA": "Data", "PROFILE_SETTINGS": "個人資料設定", "ACCOUNT_SETTINGS": "帳戶設定", "APPLICATIONS": "應用程式", @@ -379,11 +393,124 @@ "INFO_TEXT": "當您未使用應用程式或儀表板時,讓系統自動將您標記為離線。", "INFO_SHORT": "當您未使用應用程式時自動標記為離線。" }, + "SORT_TOOLTIP": "排序", + "SORT_BY": "排序方式", + "SORT_GROUPS": { + "CREATED": "Sort by date of creation", + "ALPHABETICAL": "Sort in alphabetical order", + "UNREAD_COUNT": "Sort by unread count" + }, + "SORT_OPTIONS": { + "CREATED_DESC": "Newest first", + "CREATED_ASC": "Oldest first", + "ALPHABETICAL_ASC": "Ascending (A - Z)", + "ALPHABETICAL_DESC": "Descending (Z - A)", + "UNREAD_COUNT_DESC": "Highest first", + "UNREAD_COUNT_ASC": "Lowest first" + }, "DOCS": "閱讀文件", "SECURITY": "安全性", "CAPTAIN_AI": "Captain", "CONVERSATION_WORKFLOW": "對話工作流程" }, + "DATA_IMPORTS": { + "HEADER": "Data", + "DESCRIPTION": "Bring your existing contacts and past conversations into this account from another support tool. Each import runs in the background, so you can keep working while it finishes, track its progress, and review anything that was skipped along the way.", + "LOADING": "Fetching imports", + "DEFAULT_IMPORT_NAME": "Intercom import", + "TABS": { + "IMPORT": "匯入", + "EXPORT": "匯出" + }, + "TYPES": { + "CONTACTS": "聯絡人", + "CONVERSATIONS": "對話", + "MESSAGES": "訊息" + }, + "DRAWER": { + "TITLE": "New import", + "SOURCE": "Source", + "NAME": "Import name", + "NAME_PLACEHOLDER": "July Intercom migration", + "ACCESS_KEY": "Intercom access key", + "ACCESS_KEY_PLACEHOLDER": "Paste your Intercom access key", + "DATA_TYPES": "Data to import", + "VALIDATING": "Validating access key...", + "VALID_KEY": "Access key validated.", + "INVALID_KEY": "Could not validate this access key.", + "ACTIVE_IMPORT": "Wait for the active import to finish before starting another one.", + "CANCEL": "取消", + "IMPORT": "匯入" + }, + "EXPORT": { + "TITLE": "Exports are on the way", + "DESCRIPTION": "Export your contacts and conversations out of this account. This workflow is coming soon.", + "COMING_SOON": "即將推出" + }, + "TABLE": { + "TITLE": "Recent imports", + "EMPTY": "No imports yet", + "EMPTY_DESCRIPTION": "Start an import to bring your existing customer history into this account.", + "NEW_IMPORT": "匯入", + "COUNT": "{count} imports", + "UNNAMED": "Untitled import", + "IMPORTED_COUNT": "{count} imported", + "VIEW": "View import", + "NAME": "名稱", + "TYPE": "類型", + "STATUS": "狀態", + "IMPORTED": "Imported", + "CREATED": "建立時間", + "ABANDON": "Abandon" + }, + "DETAIL": { + "BACK": "Back to imports", + "ERRORS": "Errors", + "SKIP_LOGS": "Skip logs", + "SOURCE": "Source", + "IMPORT_TYPES": "Import types", + "CREATED": "建立時間", + "DURATION": "期間", + "INITIATED_BY": "Started by", + "PROGRESS": "Import progress", + "PROGRESS_WITH_TOTAL": "{imported} of {total} imported", + "PROGRESS_WITHOUT_TOTAL": "{imported} imported", + "PROGRESS_OF_TOTAL": "of {total} imported", + "PROGRESS_IMPORTED": "imported", + "LAST_UPDATED_TOOLTIP": "Last updated {time}", + "NO_SKIP_LOGS": "No skipped or failed records recorded.", + "DOWNLOAD_SKIP_LOGS": "Download CSV", + "DOWNLOAD_ERROR_LOGS": "Download CSV", + "ALL_SKIP_LOGS": "全部", + "KIND": "Kind", + "NO_ERRORS": "No errors recorded.", + "ERROR_CODE": "Code", + "SOURCE_OBJECT": "Source object", + "MESSAGE": "訊息" + }, + "MONITOR": { + "LIVE": "Live updates every {seconds}s", + "LAST_UPDATED": "Last updated {time}", + "REFRESH": "重新整理", + "REFRESHING": "Refreshing", + "STAGES": { + "unknown": "Waiting for update", + "queued": "Queued", + "contacts": "Importing contacts", + "conversations": "Importing conversations", + "finalizing": "Finalizing import", + "completed": "已完成", + "completed_with_errors": "Completed with errors", + "failed": "失敗", + "abandoned": "Abandoned" + } + }, + "ALERTS": { + "IMPORT_STARTED": "Intercom import has started.", + "IMPORT_ABANDONED": "Intercom import has been abandoned.", + "IMPORT_FAILED": "Could not start the Intercom import." + } + }, "CAPTAIN_SETTINGS": { "TITLE": "Captain 設定", "DESCRIPTION": "設定 Captain 的 AI 模型和功能。Captain 採用點數計費制,您將根據所選模型為 Captain 執行的每項操作支付點數。", @@ -414,7 +541,9 @@ "DESCRIPTION": "啟用或停用 AI 驅動的功能。", "AUDIO_TRANSCRIPTION": { "TITLE": "語音轉文字", - "DESCRIPTION": "自動將語音訊息和通話錄音轉換為可搜尋的文字記錄。" + "DESCRIPTION": "自動將語音訊息和通話錄音轉換為可搜尋的文字記錄。", + "MODEL_TITLE": "Audio Transcription Model", + "MODEL_DESCRIPTION": "Select the AI model to use for converting audio messages into text transcripts" }, "HELP_CENTER_SEARCH": { "TITLE": "幫助中心搜尋索引", @@ -439,7 +568,18 @@ "TITLE": "目前方案", "PLAN_NOTE": "您目前訂閱的是 **{plan}** 方案,擁有 **{quantity}** 個授權", "SEAT_COUNT": "席位數量", - "RENEWS_ON": "續約日期" + "RENEWS_ON": "續約日期", + "CURRENCY": "Currency" + }, + "CURRENCY": { + "SELECT": { + "TITLE": "Choose your billing currency", + "DESCRIPTION": "Select the currency you'd like to be billed in. This can't be changed once your subscription is created." + }, + "OPTIONS": { + "USD": "US Dollar (USD)", + "BRL": "Brazilian Real (BRL)" + } }, "VIEW_PRICING": "查看定價", "MANAGE_SUBSCRIPTION": { @@ -475,6 +615,7 @@ "PURCHASE": "購買點數", "LOADING": "正在載入選項...", "FETCH_ERROR": "無法載入點數選項,請再試一次。", + "RETRY": "Retry", "PURCHASE_ERROR": "購買處理失敗,請再試一次。", "PURCHASE_SUCCESS": "已成功將 {credits} 點數加入您的帳戶", "CONFIRM": { @@ -776,6 +917,10 @@ "INPUT_MAX": "最大指派數", "DURATION": "每位客服人員在每段時間內的對話數" }, + "EXCLUDE_OLDER_THAN": { + "LABEL": "Skip stale conversations", + "DESCRIPTION": "Skip unassigned conversations older than this. Defaults to 7 days; clear to disable." + }, "INBOXES": { "LABEL": "已加入的收件匣", "DESCRIPTION": "新增適用此政策的收件匣。", diff --git a/app/javascript/survey/i18n/locale/uz.json b/app/javascript/survey/i18n/locale/uz.json new file mode 100644 index 000000000..2d8359d79 --- /dev/null +++ b/app/javascript/survey/i18n/locale/uz.json @@ -0,0 +1,19 @@ +{ + "SURVEY": { + "DESCRIPTION": "Hurmatli mijoz 👋, {inboxName} bilan bo'lgan suhbatingiz haqida fikr bildirish uchun bir necha daqiqa vaqt ajrating.", + "RATING": { + "LABEL": "Suhbatingizni baholang", + "SUCCESS_MESSAGE": "Baho berganingiz uchun rahmat" + }, + "FEEDBACK": { + "LABEL": "Bildirmoqchi bo'lgan fikr-mulohazalaringiz bormi?", + "PLACEHOLDER": "Fikringiz (ixtiyoriy)", + "BUTTON_TEXT": "Fikrni yuborish" + }, + "API": { + "SUCCESS_MESSAGE": "So'rovnoma muvaffaqiyatli yangilandi", + "ERROR_MESSAGE": "Woot serveriga ulanib bo'lmadi, iltimos, keyinroq qayta urinib ko'ring" + } + }, + "POWERED_BY": "Chatwoot yordamida ishlaydi" +} diff --git a/app/javascript/widget/i18n/locale/am.json b/app/javascript/widget/i18n/locale/am.json index c3d6ddfc1..82271f4de 100644 --- a/app/javascript/widget/i18n/locale/am.json +++ b/app/javascript/widget/i18n/locale/am.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/ar.json b/app/javascript/widget/i18n/locale/ar.json index 1424b7418..9d7e7daa1 100644 --- a/app/javascript/widget/i18n/locale/ar.json +++ b/app/javascript/widget/i18n/locale/ar.json @@ -106,6 +106,11 @@ "NOT_FOUND": "لا يوجد إيموجي يطابق بحثك", "ARIA_LABEL": "أداة اختيار الايموجي" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "لا يوجد إيموجي يطابق بحثك" + }, "CSAT": { "TITLE": "قيم محادثتك", "SUBMITTED_TITLE": "شكرا لك على تقييم المحادثة", diff --git a/app/javascript/widget/i18n/locale/az.json b/app/javascript/widget/i18n/locale/az.json index c3d6ddfc1..82271f4de 100644 --- a/app/javascript/widget/i18n/locale/az.json +++ b/app/javascript/widget/i18n/locale/az.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/bg.json b/app/javascript/widget/i18n/locale/bg.json index 369caa46a..ccaf944f5 100644 --- a/app/javascript/widget/i18n/locale/bg.json +++ b/app/javascript/widget/i18n/locale/bg.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Няма намерени емотикони", "ARIA_LABEL": "Избор на емотикони" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Оценете този разговор", "SUBMITTED_TITLE": "Благодарим ви, че оценихте разговора", diff --git a/app/javascript/widget/i18n/locale/bn.json b/app/javascript/widget/i18n/locale/bn.json index c3d6ddfc1..82271f4de 100644 --- a/app/javascript/widget/i18n/locale/bn.json +++ b/app/javascript/widget/i18n/locale/bn.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/ca.json b/app/javascript/widget/i18n/locale/ca.json index ce3b99da7..4553c4c6b 100644 --- a/app/javascript/widget/i18n/locale/ca.json +++ b/app/javascript/widget/i18n/locale/ca.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Cap emoji coincideix amb la teva cerca", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Cap emoji coincideix amb la teva cerca" + }, "CSAT": { "TITLE": "Valora la teva conversa", "SUBMITTED_TITLE": "Gràcies per enviar la qualificació", diff --git a/app/javascript/widget/i18n/locale/cs.json b/app/javascript/widget/i18n/locale/cs.json index 61bebf777..e2aa28472 100644 --- a/app/javascript/widget/i18n/locale/cs.json +++ b/app/javascript/widget/i18n/locale/cs.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Žádné emoji neodpovídají vašemu hledání", "ARIA_LABEL": "Výběr emoji" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Ohodnoťte svou konverzaci", "SUBMITTED_TITLE": "Děkujeme Vám za odeslání hodnocení", diff --git a/app/javascript/widget/i18n/locale/da.json b/app/javascript/widget/i18n/locale/da.json index ef7adfc51..b663ee089 100644 --- a/app/javascript/widget/i18n/locale/da.json +++ b/app/javascript/widget/i18n/locale/da.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Ingen emoji matcher din søgning", "ARIA_LABEL": "Emoji vælger" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Ingen emoji matcher din søgning" + }, "CSAT": { "TITLE": "Bedøm din samtale", "SUBMITTED_TITLE": "Tak for din bedømmelse", diff --git a/app/javascript/widget/i18n/locale/de.json b/app/javascript/widget/i18n/locale/de.json index fd6de1f2e..b51f879af 100644 --- a/app/javascript/widget/i18n/locale/de.json +++ b/app/javascript/widget/i18n/locale/de.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Kein Emoji entspricht Ihrer Suche", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Kein Emoji entspricht deiner Suche" + }, "CSAT": { "TITLE": "Bewerten Sie Ihre Konversation", "SUBMITTED_TITLE": "Danke, dass Sie die Bewertung eingereicht haben", diff --git a/app/javascript/widget/i18n/locale/el.json b/app/javascript/widget/i18n/locale/el.json index 64bb71e74..c3613fe58 100644 --- a/app/javascript/widget/i18n/locale/el.json +++ b/app/javascript/widget/i18n/locale/el.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Κανένα emoji δεν ταιριάζει με την αναζήτησή σας", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Κανένα emoji δεν ταιριάζει με την αναζήτησή σας" + }, "CSAT": { "TITLE": "Αξιολογήστε τη συνομιλία σας", "SUBMITTED_TITLE": "Ευχαριστούμε για την υποβολή της αξιολόγησης", diff --git a/app/javascript/widget/i18n/locale/es.json b/app/javascript/widget/i18n/locale/es.json index 3ced9aeab..8119a674a 100644 --- a/app/javascript/widget/i18n/locale/es.json +++ b/app/javascript/widget/i18n/locale/es.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Ningún emoji coincide con tu búsqueda", "ARIA_LABEL": "Selector de emoji" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Buscar emoji…", + "FREQUENTLY_USED": "Usado con frecuencia", + "NO_EMOJI": "Ningún emoji coincide con tu búsqueda" + }, "CSAT": { "TITLE": "Califica tu conversación", "SUBMITTED_TITLE": "Gracias por enviar la valoración", diff --git a/app/javascript/widget/i18n/locale/et.json b/app/javascript/widget/i18n/locale/et.json index e4a1f135f..e856e3f89 100644 --- a/app/javascript/widget/i18n/locale/et.json +++ b/app/javascript/widget/i18n/locale/et.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Ühtegi emotikoni ei leitud", "ARIA_LABEL": "Emotikonide valija" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Hinda oma vestlust", "SUBMITTED_TITLE": "Täname hinnangu eest", diff --git a/app/javascript/widget/i18n/locale/fa.json b/app/javascript/widget/i18n/locale/fa.json index c4d1bcc1c..17eac8c8e 100644 --- a/app/javascript/widget/i18n/locale/fa.json +++ b/app/javascript/widget/i18n/locale/fa.json @@ -106,6 +106,11 @@ "NOT_FOUND": "هیچ اموجی با جستجوی شما مطابقت ندارد", "ARIA_LABEL": "انتخاب اموجی" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "هیچ اموجی با جستجوی شما مطابقت ندارد" + }, "CSAT": { "TITLE": "به گفتگوی خود امتیاز دهید", "SUBMITTED_TITLE": "با تشکر از شما برای ثبت امتیاز", diff --git a/app/javascript/widget/i18n/locale/fi.json b/app/javascript/widget/i18n/locale/fi.json index b11170020..c7655af29 100644 --- a/app/javascript/widget/i18n/locale/fi.json +++ b/app/javascript/widget/i18n/locale/fi.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Yksikään emoji ei vastaa hakuasi", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Anna arvio palvelusta", "SUBMITTED_TITLE": "Kiitos, että lähetit arvion", diff --git a/app/javascript/widget/i18n/locale/fr.json b/app/javascript/widget/i18n/locale/fr.json index 90275e02a..9f6a649f1 100644 --- a/app/javascript/widget/i18n/locale/fr.json +++ b/app/javascript/widget/i18n/locale/fr.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Aucun émoji ne correspond à votre recherche", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Aucun émoji ne correspond à votre recherche" + }, "CSAT": { "TITLE": "Évaluer votre conversation", "SUBMITTED_TITLE": "Merci d'avoir soumis votre évaluation", diff --git a/app/javascript/widget/i18n/locale/he.json b/app/javascript/widget/i18n/locale/he.json index 70ea66e83..0fdfa0fd3 100644 --- a/app/javascript/widget/i18n/locale/he.json +++ b/app/javascript/widget/i18n/locale/he.json @@ -106,6 +106,11 @@ "NOT_FOUND": "אין אמוג'י שתואם את החיפוש שלך", "ARIA_LABEL": "בוחר אימוג'י" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "אין אמוג'י שתואם את החיפוש שלך" + }, "CSAT": { "TITLE": "דרג את השיחה שלך", "SUBMITTED_TITLE": "תודה על שליחת הדירוג", diff --git a/app/javascript/widget/i18n/locale/hi.json b/app/javascript/widget/i18n/locale/hi.json index c3d6ddfc1..82271f4de 100644 --- a/app/javascript/widget/i18n/locale/hi.json +++ b/app/javascript/widget/i18n/locale/hi.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/hr.json b/app/javascript/widget/i18n/locale/hr.json index 1ae76f16f..f10e4eef4 100644 --- a/app/javascript/widget/i18n/locale/hr.json +++ b/app/javascript/widget/i18n/locale/hr.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Nema emojija koji odgovaraju vašoj pretrazi", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Ocijenite vaš razgovor", "SUBMITTED_TITLE": "Hvala vam na ocjeni", diff --git a/app/javascript/widget/i18n/locale/hu.json b/app/javascript/widget/i18n/locale/hu.json index 5ea7c095a..2bca22079 100644 --- a/app/javascript/widget/i18n/locale/hu.json +++ b/app/javascript/widget/i18n/locale/hu.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Nem található emoji", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Nem található emoji" + }, "CSAT": { "TITLE": "Értékeld a beszélgetést", "SUBMITTED_TITLE": "Köszönjük, hogy elküldted az értékelést", diff --git a/app/javascript/widget/i18n/locale/hy.json b/app/javascript/widget/i18n/locale/hy.json index c3d6ddfc1..82271f4de 100644 --- a/app/javascript/widget/i18n/locale/hy.json +++ b/app/javascript/widget/i18n/locale/hy.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/id.json b/app/javascript/widget/i18n/locale/id.json index 59f86956f..d65558010 100644 --- a/app/javascript/widget/i18n/locale/id.json +++ b/app/javascript/widget/i18n/locale/id.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Tidak ada emoji yang cocok dengan penelusuran anda", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Tidak ditemukan emoji yang sesuai dengan pencarian Anda" + }, "CSAT": { "TITLE": "Nilai percakapan anda", "SUBMITTED_TITLE": "Terima kasih telah mengirimkan penilaian", diff --git a/app/javascript/widget/i18n/locale/is.json b/app/javascript/widget/i18n/locale/is.json index 0ab53118a..14d5e585b 100644 --- a/app/javascript/widget/i18n/locale/is.json +++ b/app/javascript/widget/i18n/locale/is.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Enginn emoji fannst", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Gefðu samtalinu einkunn", "SUBMITTED_TITLE": "Takk fyrir að gefa samtalinu einkunn", diff --git a/app/javascript/widget/i18n/locale/it.json b/app/javascript/widget/i18n/locale/it.json index d5ec381d2..5d3c37acd 100644 --- a/app/javascript/widget/i18n/locale/it.json +++ b/app/javascript/widget/i18n/locale/it.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Nessuna emoji corrisponde alla tua ricerca", "ARIA_LABEL": "Selettore emoji" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Nessuna emoji corrisponde alla tua ricerca" + }, "CSAT": { "TITLE": "Valuta la conversazione", "SUBMITTED_TITLE": "Grazie per aver inviato la valutazione", diff --git a/app/javascript/widget/i18n/locale/ja.json b/app/javascript/widget/i18n/locale/ja.json index b8300fbab..a915271f9 100644 --- a/app/javascript/widget/i18n/locale/ja.json +++ b/app/javascript/widget/i18n/locale/ja.json @@ -106,6 +106,11 @@ "NOT_FOUND": "検索条件に一致する絵文字がありません", "ARIA_LABEL": "絵文字選択" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "検索条件に一致する絵文字が見つかりません" + }, "CSAT": { "TITLE": "会話の評価", "SUBMITTED_TITLE": "評価を送信いただきありがとうございます", diff --git a/app/javascript/widget/i18n/locale/ka.json b/app/javascript/widget/i18n/locale/ka.json index ce5f10c07..e9ec1ea08 100644 --- a/app/javascript/widget/i18n/locale/ka.json +++ b/app/javascript/widget/i18n/locale/ka.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/ko.json b/app/javascript/widget/i18n/locale/ko.json index d9f213da4..379cba948 100644 --- a/app/javascript/widget/i18n/locale/ko.json +++ b/app/javascript/widget/i18n/locale/ko.json @@ -106,6 +106,11 @@ "NOT_FOUND": "검색과 일치하는 이모지 없음", "ARIA_LABEL": "이모지 선택기" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "검색과 일치하는 이모지가 없습니다" + }, "CSAT": { "TITLE": "대화를 평가해주세요.", "SUBMITTED_TITLE": "평가해주셔서 감사합니다!", diff --git a/app/javascript/widget/i18n/locale/lt.json b/app/javascript/widget/i18n/locale/lt.json index a11db6919..5d07721e5 100644 --- a/app/javascript/widget/i18n/locale/lt.json +++ b/app/javascript/widget/i18n/locale/lt.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Jūsų paieška neatitinka jokių jaustukų", "ARIA_LABEL": "Jaustukų pasirinkimas" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Jūsų paieška neatitinka jokių emodži" + }, "CSAT": { "TITLE": "Įvertinkite savo pokalbį", "SUBMITTED_TITLE": "Dėkojame, kad pateikėte įvertinimą", diff --git a/app/javascript/widget/i18n/locale/lv.json b/app/javascript/widget/i18n/locale/lv.json index 702fb041f..8d5b93417 100644 --- a/app/javascript/widget/i18n/locale/lv.json +++ b/app/javascript/widget/i18n/locale/lv.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Neviena emocijzīme neatbilst jūsu meklēšanas vaicājumam", "ARIA_LABEL": "Emocijzīmju atlasītājs" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Neviena emocijzīme neatbilst jūsu meklēšanas vaicājumam" + }, "CSAT": { "TITLE": "Novērtējiet Jūsu sarunu", "SUBMITTED_TITLE": "Paldies, ka iesniedzāt novērtējumu", diff --git a/app/javascript/widget/i18n/locale/ml.json b/app/javascript/widget/i18n/locale/ml.json index 96a650cb4..5fecfb403 100644 --- a/app/javascript/widget/i18n/locale/ml.json +++ b/app/javascript/widget/i18n/locale/ml.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "നിങ്ങളുടെ സംഭാഷണം റേറ്റുചെയ്യുക", "SUBMITTED_TITLE": "റേറ്റിംഗ് സമർപ്പിച്ചതിന് നന്ദി", diff --git a/app/javascript/widget/i18n/locale/ms.json b/app/javascript/widget/i18n/locale/ms.json index d813e4eb1..3fd8aa653 100644 --- a/app/javascript/widget/i18n/locale/ms.json +++ b/app/javascript/widget/i18n/locale/ms.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/ne.json b/app/javascript/widget/i18n/locale/ne.json index 20120afd9..f1959ec1e 100644 --- a/app/javascript/widget/i18n/locale/ne.json +++ b/app/javascript/widget/i18n/locale/ne.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/nl.json b/app/javascript/widget/i18n/locale/nl.json index 2f123f80a..271d9feed 100644 --- a/app/javascript/widget/i18n/locale/nl.json +++ b/app/javascript/widget/i18n/locale/nl.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Er zijn geen overeenkomende emoji's gevonden", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Er zijn geen overeenkomende emoji's gevonden" + }, "CSAT": { "TITLE": "Beoordeel uw gesprek", "SUBMITTED_TITLE": "Bedankt voor het indienen van een beoordeling", diff --git a/app/javascript/widget/i18n/locale/no.json b/app/javascript/widget/i18n/locale/no.json index 9034df45b..92742d443 100644 --- a/app/javascript/widget/i18n/locale/no.json +++ b/app/javascript/widget/i18n/locale/no.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Ingen emojier samsvarer søket ditt", "ARIA_LABEL": "Emoji velger" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Vurder samtalen din", "SUBMITTED_TITLE": "Takk for at du ga din vurdering", diff --git a/app/javascript/widget/i18n/locale/pl.json b/app/javascript/widget/i18n/locale/pl.json index c2095692f..7677a5ea2 100644 --- a/app/javascript/widget/i18n/locale/pl.json +++ b/app/javascript/widget/i18n/locale/pl.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Nie znaleziono emoji pasującego do wyszukiwania", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Nie znaleziono emoji pasującego do wyszukiwania" + }, "CSAT": { "TITLE": "Oceń udzielone Ci wsparcie", "SUBMITTED_TITLE": "Dziękujemy za przesłanie oceny", diff --git a/app/javascript/widget/i18n/locale/pt.json b/app/javascript/widget/i18n/locale/pt.json index 300ffb59f..0dfebb81e 100644 --- a/app/javascript/widget/i18n/locale/pt.json +++ b/app/javascript/widget/i18n/locale/pt.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Nenhum emoji corresponde à sua pesquisa", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Nenhum emoji corresponde à sua pesquisa" + }, "CSAT": { "TITLE": "Avalie a sua conversa", "SUBMITTED_TITLE": "Obrigado pela sua avaliação", diff --git a/app/javascript/widget/i18n/locale/pt_BR.json b/app/javascript/widget/i18n/locale/pt_BR.json index c5c85a251..7c9422df9 100644 --- a/app/javascript/widget/i18n/locale/pt_BR.json +++ b/app/javascript/widget/i18n/locale/pt_BR.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Nenhum emoji corresponde à sua pesquisa", "ARIA_LABEL": "Seletor de emoji" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Pesquisar emoji…", + "FREQUENTLY_USED": "Usados com frequência", + "NO_EMOJI": "Nenhum emoji corresponde à sua pesquisa" + }, "CSAT": { "TITLE": "Avalie sua conversa", "SUBMITTED_TITLE": "Obrigado por enviar a classificação", diff --git a/app/javascript/widget/i18n/locale/ro.json b/app/javascript/widget/i18n/locale/ro.json index cd77700b8..bfd5ca849 100644 --- a/app/javascript/widget/i18n/locale/ro.json +++ b/app/javascript/widget/i18n/locale/ro.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Niciun emoji nu corespunde căutării tale", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Niciun emoji nu corespunde căutării tale" + }, "CSAT": { "TITLE": "Evaluează conversația ta", "SUBMITTED_TITLE": "Vă mulțumim pentru trimiterea de rating", diff --git a/app/javascript/widget/i18n/locale/ru.json b/app/javascript/widget/i18n/locale/ru.json index a2d1005c1..397088273 100644 --- a/app/javascript/widget/i18n/locale/ru.json +++ b/app/javascript/widget/i18n/locale/ru.json @@ -106,6 +106,11 @@ "NOT_FOUND": "По Вашему запросу не было найдено эмодзи", "ARIA_LABEL": "Выбор эмодзи" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Эмодзи не соответствуют вашему запросу" + }, "CSAT": { "TITLE": "Оцените разговор", "SUBMITTED_TITLE": "Спасибо за оценку", diff --git a/app/javascript/widget/i18n/locale/sh.json b/app/javascript/widget/i18n/locale/sh.json index c3d6ddfc1..82271f4de 100644 --- a/app/javascript/widget/i18n/locale/sh.json +++ b/app/javascript/widget/i18n/locale/sh.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/sk.json b/app/javascript/widget/i18n/locale/sk.json index b7ac2a763..49865cd03 100644 --- a/app/javascript/widget/i18n/locale/sk.json +++ b/app/javascript/widget/i18n/locale/sk.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Ohodnoťte konverzáciu", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/sl.json b/app/javascript/widget/i18n/locale/sl.json index 0c95f1268..b06eaeeaf 100644 --- a/app/javascript/widget/i18n/locale/sl.json +++ b/app/javascript/widget/i18n/locale/sl.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Noben emoji ne ustreza vašemu iskanju", "ARIA_LABEL": "Iskalnik emoji-jev" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Z vašim iskanjem se ne ujema noben emoji" + }, "CSAT": { "TITLE": "Ocenite svoj pogovor", "SUBMITTED_TITLE": "Hvala za oddano oceno", diff --git a/app/javascript/widget/i18n/locale/sq.json b/app/javascript/widget/i18n/locale/sq.json index 3efbe543e..299cf6999 100644 --- a/app/javascript/widget/i18n/locale/sq.json +++ b/app/javascript/widget/i18n/locale/sq.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/sr.json b/app/javascript/widget/i18n/locale/sr.json index c0eae2c59..b0e1e8205 100644 --- a/app/javascript/widget/i18n/locale/sr.json +++ b/app/javascript/widget/i18n/locale/sr.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Ocenite razgovor", "SUBMITTED_TITLE": "Hvala vam na dostavljenoj oceni", diff --git a/app/javascript/widget/i18n/locale/sv.json b/app/javascript/widget/i18n/locale/sv.json index 4d6e1723c..3ee701e1d 100644 --- a/app/javascript/widget/i18n/locale/sv.json +++ b/app/javascript/widget/i18n/locale/sv.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Ingen emoji matchar din sökning", "ARIA_LABEL": "Emoji-väljare" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Ingen emoji matchar din sökning" + }, "CSAT": { "TITLE": "Betygsätt din konversation", "SUBMITTED_TITLE": "Tack för att du lämnat in omdömet", diff --git a/app/javascript/widget/i18n/locale/ta.json b/app/javascript/widget/i18n/locale/ta.json index 91ccddf96..922f50d91 100644 --- a/app/javascript/widget/i18n/locale/ta.json +++ b/app/javascript/widget/i18n/locale/ta.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/th.json b/app/javascript/widget/i18n/locale/th.json index fcfed1fde..1c4781380 100644 --- a/app/javascript/widget/i18n/locale/th.json +++ b/app/javascript/widget/i18n/locale/th.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "ให้คะแนนการสนทนาครั้งนี้", "SUBMITTED_TITLE": "ขอบคุณที่ร่วมมือให้คะแนนการสนทนากับเรา", diff --git a/app/javascript/widget/i18n/locale/tl.json b/app/javascript/widget/i18n/locale/tl.json index c3d6ddfc1..82271f4de 100644 --- a/app/javascript/widget/i18n/locale/tl.json +++ b/app/javascript/widget/i18n/locale/tl.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/tr.json b/app/javascript/widget/i18n/locale/tr.json index 7c552eac5..d3f716523 100644 --- a/app/javascript/widget/i18n/locale/tr.json +++ b/app/javascript/widget/i18n/locale/tr.json @@ -106,6 +106,11 @@ "NOT_FOUND": "İfade bulunamadı", "ARIA_LABEL": "Emoji seçimi" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Aramanızla eşleşen emoji yok" + }, "CSAT": { "TITLE": "Görüşmenizi değerlendirin", "SUBMITTED_TITLE": "Değerlendirmeniz için teşekkürler", diff --git a/app/javascript/widget/i18n/locale/uk.json b/app/javascript/widget/i18n/locale/uk.json index d31df8ab0..4c028be58 100644 --- a/app/javascript/widget/i18n/locale/uk.json +++ b/app/javascript/widget/i18n/locale/uk.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Немає емодзі, що відповідають пошуковому запиту", "ARIA_LABEL": "Вибір емодзі" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "Немає смайликів, які відповідають вашому запиту" + }, "CSAT": { "TITLE": "Оцініть вашу бесіду", "SUBMITTED_TITLE": "Дякуємо за оцінку", diff --git a/app/javascript/widget/i18n/locale/ur.json b/app/javascript/widget/i18n/locale/ur.json index 7b03483a4..16cf1968f 100644 --- a/app/javascript/widget/i18n/locale/ur.json +++ b/app/javascript/widget/i18n/locale/ur.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/ur_IN.json b/app/javascript/widget/i18n/locale/ur_IN.json index c3d6ddfc1..82271f4de 100644 --- a/app/javascript/widget/i18n/locale/ur_IN.json +++ b/app/javascript/widget/i18n/locale/ur_IN.json @@ -106,6 +106,11 @@ "NOT_FOUND": "No emoji match your search", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Rate your conversation", "SUBMITTED_TITLE": "Thank you for submitting the rating", diff --git a/app/javascript/widget/i18n/locale/uz.json b/app/javascript/widget/i18n/locale/uz.json new file mode 100644 index 000000000..3e0b06a5d --- /dev/null +++ b/app/javascript/widget/i18n/locale/uz.json @@ -0,0 +1,158 @@ +{ + "COMPONENTS": { + "FILE_BUBBLE": { + "DOWNLOAD": "Yuklab olish", + "UPLOADING": "Yuklanmoqda..." + }, + "FORM_BUBBLE": { + "SUBMIT": "Yuborish" + }, + "MESSAGE_BUBBLE": { + "RETRY": "Xabarni qayta yuborish", + "ERROR_MESSAGE": "Yuborib bo'lmadi, qayta urinib ko'ring" + } + }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Mavjud emas" + } + }, + "TEAM_AVAILABILITY": { + "ONLINE": "Biz onlaynmiz", + "OFFLINE": "Hozircha javob bera olmaymiz", + "BACK_AS_SOON_AS_POSSIBLE": "Imkon qadar tezroq qaytamiz" + }, + "REPLY_TIME": { + "IN_A_FEW_MINUTES": "Odatda bir necha daqiqada javob beramiz", + "IN_A_FEW_HOURS": "Odatda bir necha soatda javob beramiz", + "IN_A_DAY": "Odatda bir kun ichida javob beramiz", + "BACK_IN_HOURS": "{n} soatdan keyin onlayn bo'lamiz | {n} soatdan keyin onlayn bo'lamiz", + "BACK_IN_MINUTES": "{time} daqiqadan keyin onlayn bo'lamiz", + "BACK_AT_TIME": "Soat {time} da onlayn bo'lamiz", + "BACK_ON_DAY": "{day} kuni onlayn bo'lamiz", + "BACK_TOMORROW": "Ertaga onlayn bo'lamiz", + "BACK_IN_SOME_TIME": "Birozdan keyin onlayn bo'lamiz" + }, + "DAY_NAMES": { + "SUNDAY": "Yakshanba", + "MONDAY": "Dushanba", + "TUESDAY": "Seshanba", + "WEDNESDAY": "Chorshanba", + "THURSDAY": "Payshanba", + "FRIDAY": "Juma", + "SATURDAY": "Shanba" + }, + "START_CONVERSATION": "Suhbatni boshlash", + "END_CONVERSATION": "Suhbatni tugatish", + "CONTINUE_CONVERSATION": "Suhbatni davom ettirish", + "YOU": "Siz", + "START_NEW_CONVERSATION": "Yangi suhbatni boshlash", + "VIEW_UNREAD_MESSAGES": "Sizda o'qilmagan xabarlar bor", + "UNREAD_VIEW": { + "VIEW_MESSAGES_BUTTON": "Yangi xabarlarni ko'rish", + "CLOSE_MESSAGES_BUTTON": "Yopish", + "COMPANY_FROM": "tomonidan", + "BOT": "Bot" + }, + "BUBBLE": { + "LABEL": "Biz bilan suhbatlashing" + }, + "POWERED_BY": "Chatwoot yordamida ishlaydi", + "EMAIL_PLACEHOLDER": "Iltimos, emailingizni kiriting", + "CHAT_PLACEHOLDER": "Xabaringizni yozing", + "TODAY": "Bugun", + "YESTERDAY": "Kecha", + "PRE_CHAT_FORM": { + "FIELDS": { + "FULL_NAME": { + "LABEL": "To'liq ism", + "PLACEHOLDER": "Iltimos, to'liq ismingizni kiriting", + "REQUIRED_ERROR": "To'liq ism kiritilishi shart" + }, + "EMAIL_ADDRESS": { + "LABEL": "Email manzili", + "PLACEHOLDER": "Iltimos, email manzilingizni kiriting", + "REQUIRED_ERROR": "Email manzilini kiritish shart", + "VALID_ERROR": "Iltimos, to'g'ri email manzilini kiriting" + }, + "PHONE_NUMBER": { + "LABEL": "Telefon raqami", + "PLACEHOLDER": "Iltimos, telefon raqamingizni kiriting", + "REQUIRED_ERROR": "Telefon raqami kiritilishi shart", + "DIAL_CODE_VALID_ERROR": "Iltimos, mamlakat kodini tanlang", + "VALID_ERROR": "Iltimos, to'g'ri telefon raqamini kiriting", + "DROPDOWN_EMPTY": "Natija topilmadi", + "DROPDOWN_SEARCH": "Mamlakatni qidirish" + }, + "MESSAGE": { + "LABEL": "Xabar", + "PLACEHOLDER": "Iltimos, xabaringizni kiriting", + "ERROR": "Xabar juda qisqa" + } + }, + "CAMPAIGN_HEADER": "Suhbatni boshlashdan oldin ism va emailingizni kiriting", + "IS_REQUIRED": "kiritilishi shart", + "REQUIRED": "Majburiy", + "REGEX_ERROR": "Iltimos, to'g'ri ma'lumot kiriting" + }, + "FILE_SIZE_LIMIT": "Fayl {MAXIMUM_FILE_UPLOAD_SIZE} biriktirma chegarasidan oshib ketdi", + "CHAT_FORM": { + "INVALID": { + "FIELD": "Noto'g'ri maydon" + } + }, + "EMOJI": { + "PLACEHOLDER": "Emoji qidirish", + "NOT_FOUND": "Qidiruvga mos emoji topilmadi", + "ARIA_LABEL": "Emoji tanlagich" + }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Emojilarni qidirish…", + "FREQUENTLY_USED": "Ko'p ishlatiladiganlar", + "NO_EMOJI": "Qidiruvga mos emoji topilmadi" + }, + "CSAT": { + "TITLE": "Suhbatingizni baholang", + "SUBMITTED_TITLE": "Baho berganingiz uchun rahmat", + "PLACEHOLDER": "Batafsil aytib bering..." + }, + "EMAIL_TRANSCRIPT": { + "BUTTON_TEXT": "Suhbat tarixini so'rash", + "SEND_EMAIL_SUCCESS": "Suhbat tarixi muvaffaqiyatli yuborildi", + "SEND_EMAIL_ERROR": "Xatolik yuz berdi, qayta urinib ko'ring" + }, + "INTEGRATIONS": { + "DYTE": { + "CLICK_HERE_TO_JOIN": "Qo'shilish uchun shu yerni bosing", + "LEAVE_THE_ROOM": "Qo'ng'iroqni tark etish" + } + }, + "PORTAL": { + "POPULAR_ARTICLES": "Ommabop maqolalar", + "VIEW_ALL_ARTICLES": "Barcha maqolalarni ko'rish", + "IFRAME_LOAD_ERROR": "Maqolani yuklashda xatolik yuz berdi, sahifani yangilab qayta urinib ko'ring." + }, + "ATTACHMENTS": { + "image": { + "CONTENT": "Rasmli xabar" + }, + "audio": { + "CONTENT": "Audio xabar" + }, + "video": { + "CONTENT": "Video xabar" + }, + "file": { + "CONTENT": "Fayl biriktirmasi" + }, + "location": { + "CONTENT": "Joylashuv" + }, + "fallback": { + "CONTENT": "havola ulashdi" + } + }, + "FOOTER_REPLY_TO": { + "REPLY_TO": "Javob berilmoqda:" + } +} diff --git a/app/javascript/widget/i18n/locale/vi.json b/app/javascript/widget/i18n/locale/vi.json index 312883388..318316f3f 100644 --- a/app/javascript/widget/i18n/locale/vi.json +++ b/app/javascript/widget/i18n/locale/vi.json @@ -106,6 +106,11 @@ "NOT_FOUND": "Không có biểu tượng cảm xúc nào phù hợp với tìm kiếm của bạn", "ARIA_LABEL": "Emoji picker" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "No emoji match your search" + }, "CSAT": { "TITLE": "Đánh giá hội thoại", "SUBMITTED_TITLE": "Cảm ơn vì đã đánh giá", diff --git a/app/javascript/widget/i18n/locale/zh_CN.json b/app/javascript/widget/i18n/locale/zh_CN.json index dc4a1cebe..ac30579e8 100644 --- a/app/javascript/widget/i18n/locale/zh_CN.json +++ b/app/javascript/widget/i18n/locale/zh_CN.json @@ -106,6 +106,11 @@ "NOT_FOUND": "没有适合你的搜索结果", "ARIA_LABEL": "Emoji选择器" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "没有适合你的搜索结果" + }, "CSAT": { "TITLE": "评价您的对话", "SUBMITTED_TITLE": "感谢您提交评分", diff --git a/app/javascript/widget/i18n/locale/zh_TW.json b/app/javascript/widget/i18n/locale/zh_TW.json index bd401a8ca..bfc737d91 100644 --- a/app/javascript/widget/i18n/locale/zh_TW.json +++ b/app/javascript/widget/i18n/locale/zh_TW.json @@ -106,6 +106,11 @@ "NOT_FOUND": "查無相符的 emoji", "ARIA_LABEL": "表情選擇" }, + "EMOJI_ICON_PICKER": { + "SEARCH_EMOJI": "Search emoji…", + "FREQUENTLY_USED": "Frequently used", + "NO_EMOJI": "找不到符合的表情符號" + }, "CSAT": { "TITLE": "為此對話評分", "SUBMITTED_TITLE": "感謝您提交的評分", diff --git a/config/locales/am.yml b/config/locales/am.yml index 70c1310af..252dd6237 100644 --- a/config/locales/am.yml +++ b/config/locales/am.yml @@ -33,8 +33,33 @@ am: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ am: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ am: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ am: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ am: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ am: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ am: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ am: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'ነባሪ' + features: + editor: 'Editor' + assistant: 'አስማሪ' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 3882666eb..5dbdc3806 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -33,8 +33,33 @@ ar: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: سيتم معالجة طلب حذف صندوق الوارد الخاص بك في بعض الوقت. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ar: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: نوع البيانات غير صالح @@ -92,6 +122,15 @@ ar: unique: يجب أن تكون فريدة من نوعها في الفئة والبوابة dyte: invalid_message_type: 'نوع الرسالة غير صالح. الإجراء غير مسموح به' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'قناة Slack غير صحيحة. الرجاء المحاولة مرة أخرى' whatsapp: @@ -104,6 +143,7 @@ ar: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ar: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -329,9 +372,9 @@ ar: name: 'تطبيقات لوحة التحكم' description: 'تسمح لك تطبيقات لوحة التحكم بإنشاء وتضمين التطبيقات التي تعرض معلومات المستخدم أو الطلبات أو سجل الدفع، مما يوفر المزيد من السياق لوكلاء دعم العملاء الخاص بك.' dyte: - name: 'Dyte' + name: 'Cloudflare RealtimeKit' short_description: 'Start video/voice calls with customers directly from Chatwoot.' - description: 'Dyte هو منتج يدمج وظائف الصوت والفيديو في تطبيقك. مع هذا الدمج، يمكن لوكلائك بدء مكالمات الفيديو/الصوت مع عملائك مباشرة من Chatwoot.' + description: 'يتيح Cloudflare RealtimeKit لوكلائك بَدْء مكالمات فيديو أو صوت مع عملائك مباشرةً من Chatwoot.' meeting_name: 'بدأ %{agent_name} اجتماعاً' slack: name: 'Slack' @@ -438,7 +481,10 @@ ar: browse_by_topic_subtitle: اعثر على أدلة ودروس وأجوبة منظمة حسب الفئة. popular_articles: المقالات الشائعة popular_articles_subtitle: ما يقرأه الآخرون الآن. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'مواضيع شائعة:' + recommended_label: 'Recommended topics:' authors_others: "%{names} و %{count} آخرون" primary_nav: التنقل الرئيسي hero: @@ -474,6 +520,7 @@ ar: light: فاتح dark: مظلم featured_articles: المقالات المميزة + recommended: Recommended articles uncategorized: غير مصنف 404: title: لم يتم العثور على الصفحة @@ -564,6 +611,29 @@ ar: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'نموذج' + sources: + account_override: 'Account override' + default: 'افتراضي' + features: + editor: 'Editor' + assistant: 'مساعد' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'لم يتم العثور على المستخدم.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/az.yml b/config/locales/az.yml index fe51b907d..3d8d5264c 100644 --- a/config/locales/az.yml +++ b/config/locales/az.yml @@ -33,8 +33,33 @@ az: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ az: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ az: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ az: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ az: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ az: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ az: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ az: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Defolt' + features: + editor: 'Editor' + assistant: 'Assistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/bg.yml b/config/locales/bg.yml index e2674edda..bb98fbd44 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -33,8 +33,33 @@ bg: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ bg: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ bg: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ bg: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ bg: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ bg: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ bg: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ bg: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Асистент' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/bn.yml b/config/locales/bn.yml index fb88cd27b..94c76a96e 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -33,8 +33,33 @@ bn: login_saml_user: এই অ্যাকাউন্টটি SAML প্রমাণীকরণ ব্যবহার করে। অনুগ্রহ করে আপনার প্রতিষ্ঠানের SAML প্রদানকারীর মাধ্যমে সাইন ইন করুন।. saml_not_available: এই ইনস্টলেশনে SAML প্রমাণীকরণ উপলব্ধ নয়।. inbox_deletetion_response: আপনার ইনবক্স মুছে ফেলার অনুরোধ কিছু সময়ের মধ্যে প্রক্রিয়াকরণ করা হবে।. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: বৈধ টাইমজোন নয় support_email: @@ -64,9 +89,14 @@ bn: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: এই অ্যাকাউন্টের জন্য SAML ফিচার সক্রিয় নয় sso_not_enabled: এই ইনস্টলেশনের জন্য SAML SSO সক্রিয় করা হয়নি + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: অবৈধ ডেটা টাইপ @@ -92,6 +122,15 @@ bn: unique: ক্যাটাগরি ও পোর্টালে অবশ্যই ইউনিক হতে হবে dyte: invalid_message_type: 'অবৈধ বার্তার ধরন। এই কার্যক্রম অনুমোদিত নয়' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'অবৈধ Slack চ্যানেল। অনুগ্রহ করে আবার চেষ্টা করুন।' whatsapp: @@ -104,6 +143,7 @@ bn: not_supported: 'এই ধরনের WhatsApp চ্যানেলের জন্য পুনরায় অনুমোদন সমর্থিত নয়।.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ bn: invalid_token: ভুল বা মেয়াদোত্তীর্ণ MFA টোকেন invalid_credentials: ভুল শংসাপত্র বা যাচাইকরণ কোড feature_unavailable: MFA ফিচারটি উপলব্ধ নয়। অনুগ্রহ করে এনক্রিপশন কী কনফিগার করুন।. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: ক্রেডিটের পরিমাণ আবশ্যক invalid_credits: অবৈধ ক্রেডিটের পরিমাণ @@ -434,7 +477,10 @@ bn: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ bn: light: হালকা dark: গাঢ় featured_articles: ফিচার্ড প্রবন্ধ + recommended: Recommended articles uncategorized: বিনাশ্রেণীভুক্ত 404: title: পৃষ্ঠা খুঁজে পাওয়া যায়নি @@ -544,6 +591,29 @@ bn: ssl_status: custom_domain_not_configured: 'কাস্টম ডোমেইন কনফিগার করা হয়নি' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'ডিফল্ট' + features: + editor: 'Editor' + assistant: 'সহকারী' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ca.yml b/config/locales/ca.yml index ebf894da2..a026715a2 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -33,8 +33,33 @@ ca: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: La teva sol·licitud d'eliminació de la safata d'entrada es processarà d'aquí a un temps. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ca: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Tipus de dades no vàlid @@ -92,6 +122,15 @@ ca: unique: hauria de ser únic a la categoria i al portal dyte: invalid_message_type: 'Tipus de missatge no vàlid. Acció no permesa' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Canal slack no vàlid. Torna-ho a provar' whatsapp: @@ -104,6 +143,7 @@ ca: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ca: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ ca: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ ca: light: Clar dark: Fosc featured_articles: Articles destacats + recommended: Recommended articles uncategorized: Sense categoria 404: title: Pàgina no trobada @@ -544,6 +591,29 @@ ca: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Per defecte' + features: + editor: 'Editor' + assistant: 'Assistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 5e6315000..d40104675 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -33,8 +33,33 @@ cs: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ cs: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ cs: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ cs: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ cs: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -436,7 +479,10 @@ cs: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ cs: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -554,6 +601,29 @@ cs: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Asistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/da.yml b/config/locales/da.yml index 43d291bfc..7aa9e8926 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -33,8 +33,33 @@ da: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ da: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Ugyldig datatype @@ -92,6 +122,15 @@ da: unique: bør være unik i kategorien og portalen dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ da: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ da: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ da: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ da: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Ikke Kategoriseret 404: title: Page not found @@ -544,6 +591,29 @@ da: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Standard' + features: + editor: 'Editor' + assistant: 'Assistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/de.yml b/config/locales/de.yml index ddf1ad052..80cc08b3e 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -33,8 +33,33 @@ de: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Die Löschanfrage Ihres Posteingangs wird in Kürze bearbeitet. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -51,7 +76,7 @@ de: invalid_params: 'Ungültig, bitte überprüfen Sie die Anmeldeparameter und versuchen Sie es erneut' failed: Anmeldung gescheitert voice: - call_already_accepted: '%{agent_name} is already handling the call.' + call_already_accepted: 'Dieser Anruf wird bereits von %{agent_name} betreut.' assignment_policy: not_found: Assignment policy not found attachments: @@ -64,9 +89,14 @@ de: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Ungültiger Datentyp @@ -92,6 +122,15 @@ de: unique: sollte in der Kategorie und im Portal eindeutig sein dyte: invalid_message_type: 'Ungültiger Nachrichtentyp. Aktion nicht erlaubt' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Ungültiger Slack Channel. Bitte erneut versuchen' whatsapp: @@ -104,6 +143,7 @@ de: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ de: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ de: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ de: light: Hell dark: Dunkel featured_articles: Empfohlene Artikel + recommended: Recommended articles uncategorized: Unkategorisiert 404: title: Seite nicht gefunden @@ -544,6 +591,29 @@ de: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Modell' + sources: + account_override: 'Account override' + default: 'Standard' + features: + editor: 'Editor' + assistant: 'Assistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/devise.uz.yml b/config/locales/devise.uz.yml new file mode 100644 index 000000000..5f83eefdc --- /dev/null +++ b/config/locales/devise.uz.yml @@ -0,0 +1,61 @@ +#Additional translations at https://github.com/plataformatec/devise/wiki/I18n +uz: + devise: + confirmations: + confirmed: "Your email address has been successfully confirmed." + send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes." + send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes." + failure: + already_authenticated: "You are already signed in." + inactive: "Your account is not activated yet." + invalid: "Invalid %{authentication_keys}/password or account is not verified yet." + locked: "Your account is locked." + last_attempt: "You have one more attempt before your account is locked." + not_found_in_database: "Invalid %{authentication_keys} or password." + timeout: "Your session expired. Please sign in again to continue." + unauthenticated: "You need to sign in or sign up before continuing." + unconfirmed: "You have to confirm your email address before continuing." + mailer: + confirmation_instructions: + subject: "Confirmation Instructions" + reset_password_instructions: + subject: "Reset password instructions" + unlock_instructions: + subject: "Unlock instructions" + password_change: + subject: "Password Changed" + omniauth_callbacks: + failure: "Could not authenticate you from %{kind} because \"%{reason}\"." + success: "Successfully authenticated from %{kind} account." + passwords: + no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided." + send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes." + send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." + updated: "Your password has been changed successfully. You are now signed in." + updated_not_active: "Your password has been changed successfully." + registrations: + destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon." + signed_up: "Welcome! You have signed up successfully." + signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated." + signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked." + signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account." + update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address." + updated: "Your account has been updated successfully." + sessions: + signed_in: "Signed in successfully." + signed_out: "Signed out successfully." + already_signed_out: "Signed out successfully." + unlocks: + send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes." + send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes." + unlocked: "Your account has been unlocked successfully. Please sign in to continue." + errors: + messages: + already_confirmed: "was already confirmed, please try signing in" + confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one" + expired: "has expired, please request a new one" + not_found: "not found" + not_locked: "was not locked" + not_saved: + one: "1 error prohibited this %{resource} from being saved:" + other: "%{count} errors prohibited this %{resource} from being saved:" diff --git a/config/locales/el.yml b/config/locales/el.yml index 153bb5c89..6f35eb7f8 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -33,8 +33,33 @@ el: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ el: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Μη έγκυρος τύπος δεδομένων @@ -92,6 +122,15 @@ el: unique: πρέπει να είναι μοναδικό στην κατηγορία και την πύλη dyte: invalid_message_type: 'Μη έγκυρος τύπος μηνύματος. Δεν επιτρέπεται η ενέργεια' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ el: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ el: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ el: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ el: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ el: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Μοντέλο' + sources: + account_override: 'Account override' + default: 'Προεπιλογή' + features: + editor: 'Editor' + assistant: 'Βοηθός' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/es.yml b/config/locales/es.yml index c5a17fc79..dcd7652fb 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -33,8 +33,33 @@ es: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Su solicitud de eliminación de la bandeja de entrada será procesada en algún tiempo. + data_imports: + intercom: + activities: + assignment: '%{actor} asignó la conversación' + assignment_with_target: '%{actor} asignó la conversación a %{target}' + assign_and_reopen: '%{actor} asignado y reabierto la conversación' + assign_and_reopen_with_target: '%{actor} asignó la conversación a %{target} y la reabrió' + open: '%{actor} abrió la conversación' + close: '%{actor} cerró la conversación' + snoozed: '%{actor} silenció la conversación' + participant_added: '%{actor} agregó un participante' + participant_added_with_target: '%{actor} agregó a %{target} como participante' + participant_removed: '%{actor} eliminó un participante' + participant_removed_with_target: '%{actor} eliminó %{target} como participante' + conversation_attribute_updated: '%{actor} actualizó los atributos de la conversación' + ticket_attribute_updated: '%{actor} actualizó los atributos del ticket' + ticket_state_updated: '%{actor} actualizó el estado del ticket' + custom_action_started: '%{actor} inició una acción personalizada' + custom_action_finished: '%{actor} terminó una acción personalizada' + quick_reply: '%{actor} usó una respuesta rápida' + generic: '%{actor} grabado %{event}' + profile_settings: + sessions: + cannot_revoke_current: No puede revocar la sesión actual. errors: account: + not_authorized: No está autorizado a acceder a esta cuenta reporting_timezone: invalid: is not a valid timezone support_email: @@ -51,7 +76,7 @@ es: invalid_params: 'Inválido, por favor comprueba los parámetros de registro e inténtalo de nuevo' failed: Registro fallido voice: - call_already_accepted: '%{agent_name} is already handling the call.' + call_already_accepted: '%{agent_name} ya está gestionando la llamada.' assignment_policy: not_found: Assignment policy not found attachments: @@ -64,9 +89,14 @@ es: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'La solicitud tardó demasiado en completarse. Por favor, inténtalo de nuevo.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Función de contadores no leídos de conversación no habilitada para esta cuenta data_import: data_type: invalid: Tipo de datos no válido @@ -92,6 +122,15 @@ es: unique: debe ser único en la categoría y el portal dyte: invalid_message_type: 'Tipo de mensaje inválido. Acción no permitida' + realtimekit_credentials_required: 'Las credenciales de Cloudflare RealtimeKit son requeridas. Elimina la integración existente de Dyte y vuelve a crearla con las credenciales Cloudflare RealtimeKit.' + cloudflare: + realtimekit: + invalid_credentials: 'Las credenciales de Cloudflare RealtimeKit no son válidas. Por favor, comprueba el ID de cuenta, el ID de la aplicación RealtimeKit y los permisos de token de la API.' + missing_credentials: 'ID de la cuenta Cloudflare, ID de la aplicación RealtimeKit, y token API son requeridos.' + invalid_api_token: 'El token de la API de Cloudflare no es válido o está inactivo. Por favor, crea un nuevo token con permisos de administración de tiempo real.' + invalid_account_or_permissions: 'El ID de cuenta de Cloudflare no es válido, o el token de la API no tiene acceso de Administrador de tiempo real a esta cuenta.' + app_not_found: 'El ID de la aplicación RealtimeKit no se ha encontrado en esta cuenta Cloudflare. Por favor, comprueba la aplicación seleccionada.' + verification_failed: 'No se han podido verificar las credenciales de Cloudflare RealtimeKit en este momento. Por favor, inténtalo de nuevo.' slack: invalid_channel_id: 'Canal de slack inválido. Por favor, inténtalo de nuevo' whatsapp: @@ -103,14 +142,15 @@ es: generic: 'Failed to reauthorize WhatsApp. Please try again.' not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: - not_enabled: 'Calling is not enabled for this inbox' - no_recording: 'No recording file provided' - no_message: 'Call has no associated message' - sdp_offer_required: 'sdp_offer is required' - contact_phone_required: 'Contact phone number is required' - permission_request_failed: 'Failed to send call permission request' + not_enabled: 'Llamada no está habilitada para esta bandeja de entrada' + already_ended: 'Esta llamada ya ha finalizado' + no_recording: 'Ningún archivo de grabación proporcionado' + no_message: 'La llamada no tiene ningún mensaje asociado' + sdp_offer_required: 'sdp_offer es requerido' + contact_phone_required: 'Se requiere un número de teléfono de contacto' + permission_request_failed: 'Error al enviar la solicitud de permiso de llamada' openai: - invalid_api_key: 'OpenAI API key is invalid or revoked. Please check your key in your OpenAI dashboard.' + invalid_api_key: 'La clave API OpenAI no es válida o revocada. Por favor, compruebe su clave en su panel de control OpenAI.' inboxes: imap: socket_error: Verifique la conexión de red, la dirección IMAP y vuelva a intentarlo. @@ -142,6 +182,9 @@ es: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Moneda de facturación no válida + currency_locked: La moneda de facturación no se puede cambiar después de que se haya configurado la facturación topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -240,11 +283,11 @@ es: deleted: Este mensaje se ha eliminado whatsapp: list_button_label: 'Choose an item' - call_permission_request_body: 'We would like to call you regarding your conversation.' - unsupported_message: 'This message is unavailable.' + call_permission_request_body: 'Nos gustaría llamarte en relación con tu conversación.' + unsupported_message: 'Este mensaje no está disponible.' voice_call: - twilio: 'Voice Call' - whatsapp: 'WhatsApp Call' + twilio: 'Llamada de voz' + whatsapp: 'Llamada de WhatsApp' delivery_status: error_code: 'Código de error: %{error_code}' activity: @@ -290,8 +333,8 @@ es: issue_linked: 'Linear issue %{issue_id} was linked by %{user_name}' issue_unlinked: 'Linear issue %{issue_id} was unlinked by %{user_name}' whatsapp_call: - permission_requested: 'Sent a call permission request to %{contact_name}.' - permission_granted: '%{contact_name} accepted the call permission request.' + permission_requested: 'Envió una solicitud de permiso de llamada a %{contact_name}.' + permission_granted: '%{contact_name} ha aceptado la solicitud de permiso de llamada.' csat: not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' auto_resolve: @@ -356,7 +399,7 @@ es: name: 'Lineal' short_description: 'Create and link Linear issues directly from conversations.' description: 'Crea problemas en Linear directamente desde tu ventana de conversación. Alternativamente, enlaza problemas existentes en Linear para un proceso de seguimiento de problemas más eficiente y ágil.' - attachment_link_title: 'Conversation (#%{conversation_id}) with %{name}' + attachment_link_title: 'Conversación (%{conversation_id}) con %{name}' notion: name: 'Notion' short_description: 'Integrate databases, documents and pages directly with Captain.' @@ -385,9 +428,9 @@ es: limit_exceeded: 'Document limit exceeded' pdf_format_error: 'must be a PDF file' pdf_size_error: 'must be less than 10MB' - sync_not_supported_for_pdf: 'Sync is not supported for PDF documents' - sync_only_available_documents: 'Sync is only available for processed documents' - sync_already_in_progress: 'Document sync is already in progress' + sync_not_supported_for_pdf: 'La sincronización no es compatible con documentos PDF' + sync_only_available_documents: 'La sincronización sólo está disponible para documentos procesados' + sync_already_in_progress: 'La sincronización de documentos ya está en progreso' pdf_upload_failed: 'Failed to upload PDF to OpenAI' pdf_upload_success: 'PDF uploaded successfully with file_id: %{file_id}' pdf_processing_failed: 'Failed to process PDF document %{document_id}: %{error}' @@ -414,29 +457,32 @@ es: loading_placeholder: Buscando... results_title: Buscar resultados results: Buscar resultados - results_for: "Search Results for '%{query}'" - no_results: "No results found for '%{query}'" + results_for: "Resultados de búsqueda para '%{query}'" + no_results: "No se han encontrado resultados para '%{query}'" found_results: - one: Found 1 result - other: 'Found %{count} results' + one: Se encontró 1 resultado + other: 'Se encontraron %{count} resultados' submit: Buscar toc_header: 'En esta página' sidebar: help_center: Centro de ayuda categories: Categorías language: Idioma - theme: Theme + theme: Tema open_sidebar: Abrir barra lateral close_sidebar: Cerrar barra lateral - browse: Browse - back_to_category: Back to %{name} - browse_by_topic: Browse by topic - browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. - popular_articles: Popular articles - popular_articles_subtitle: What other people are reading right now. - popular_label: 'Popular topics:' - authors_others: "%{names} and %{count} others" - primary_nav: Primary + browse: Navegar + back_to_category: Regresar a %{name} + browse_by_topic: Navegar por tema + browse_by_topic_subtitle: Encuentra guías, tutoriales y respuestas organizadas por categoría. + popular_articles: Artículos populares + popular_articles_subtitle: Lo que otras personas están leyendo ahora mismo. + recommended: Artículos recomendados + recommended_subtitle: Artículos elegidos a mano para empezar. + popular_label: 'Temas populares:' + recommended_label: 'Temas recomendados:' + authors_others: "%{names} y %{count} otros" + primary_nav: Primario hero: sub_title: Busque aquí los artículos o busque las categorías de abajo. common: @@ -454,11 +500,11 @@ es: previous: Anterior next: Siguiente article_actions: - label: Open in - view_markdown: View as Markdown - open_in_chatgpt: Open in ChatGPT - open_in_claude: Open in Claude - llm_prompt: "Read the following article and help me understand it: %{url}" + label: Abrir en + view_markdown: Ver como Markdown + open_in_chatgpt: Abrir en ChatGPT + open_in_claude: Abrir en Claude + llm_prompt: "Lee el siguiente artículo y ayúdame a entenderlo: %{url}" footer: made_with: Hecho con header: @@ -470,6 +516,7 @@ es: light: Claro dark: Oscuro featured_articles: Artículos destacados + recommended: Artículos recomendados uncategorized: Sin categoría 404: title: Página no encontrada @@ -530,11 +577,11 @@ es: inbox_already_assigned: 'Inbox has already been assigned to this policy' portals: articles: - captain_not_available: 'Translation requires Captain to be enabled for this account' - locale_not_available: 'Locale not available in this portal' - category_not_found: 'Category not found in this portal' - no_articles_found: 'No articles found to process' - invalid_status: 'Invalid status value' + captain_not_available: 'La traducción requiere que el Capitán esté habilitado para esta cuenta' + locale_not_available: 'Locale no disponible en este portal' + category_not_found: 'Categoría no encontrada en este portal' + no_articles_found: 'No hay artículos para procesar' + invalid_status: 'Valor de estado inválido' send_instructions: email_required: 'El email es requerido' invalid_email_format: 'Invalid email format' @@ -544,8 +591,31 @@ es: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Deje un modelo en blanco para usar el valor por defecto de YAML para esa función de IA.' + use_default: 'Usar por defecto: %{model} (%{model_id})' + show: + summary: 'Ver ruta del modelo' + provider: 'Proveedor' + model: 'Modelo' + sources: + account_override: 'Anulación de cuenta' + default: 'Predeterminado' + features: + editor: 'Editor' + assistant: 'Asistente' + copilot: 'Copilot' + label_suggestion: 'Sugerencia de etiqueta' + document_faq_generation: 'Generación de FAQ de documentos' + conversation_faq_generation: 'Generación de FAQ de conversación' + help_center_article_generation: 'Centro de ayuda para la generación de artículos' + onboarding_content_generation: 'Generación de contenidos integrados' + help_center_query_translation: 'Traducción de consultas al centro de ayuda' + audio_transcription: 'Transcripción de audio' + help_center_search: 'Centro de búsqueda de ayuda' push_diagnostics: - user_not_found: 'User not found.' - no_subscriptions_to_test: 'Select at least one subscription to test.' - no_subscriptions_to_delete: 'Select at least one subscription to delete.' - subscriptions_deleted: "Deleted %{count} subscription(s). The user's device(s) will re-register on next app launch." + user_not_found: 'Usuario no encontrado.' + no_subscriptions_to_test: 'Seleccione al menos una suscripción para probar.' + no_subscriptions_to_delete: 'Seleccione al menos una suscripción a eliminar.' + subscriptions_deleted: "Suscripción(es) %{count} eliminada(s). El dispositivo(s) del usuario volverá a registrarse en el próximo lanzamiento de la aplicación." diff --git a/config/locales/et.yml b/config/locales/et.yml index 4a846374e..1b861c587 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -33,8 +33,33 @@ et: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ et: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Vigane andmetüüp @@ -92,6 +122,15 @@ et: unique: peab olema kategoorias ja portaalis unikaalne dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ et: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ et: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ et: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ et: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ et: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Vaikimisi' + features: + editor: 'Editor' + assistant: 'Assistent' + copilot: 'Kaassõitja' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 4e6e2e492..e836d6c72 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -33,8 +33,33 @@ fa: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: درخواست حذف صندوق ورودی شما پس از مدتی پردازش خواهد شد. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ fa: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: نوع داده نامعتبر است @@ -92,6 +122,15 @@ fa: unique: باید منحصر به فرد در دسته‌بندی و پورتال باشد dyte: invalid_message_type: 'نوع پیام نامعتبر است. اقدام مجاز نیست' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'کانال اسلک نامعتبر است. لطفا دوباره تلاش کنید' whatsapp: @@ -104,6 +143,7 @@ fa: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ fa: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ fa: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ fa: light: روشن dark: تیره featured_articles: مقالات برگزیده + recommended: Recommended articles uncategorized: دسته بندی نشده 404: title: صفحه یافت نشد @@ -544,6 +591,29 @@ fa: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'مدل' + sources: + account_override: 'Account override' + default: 'پیش‌فرض' + features: + editor: 'Editor' + assistant: 'دستیار' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 3317f547e..6aa94436a 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -33,8 +33,33 @@ fi: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ fi: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ fi: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ fi: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ fi: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ fi: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ fi: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ fi: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Assistentti' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/fr.yml b/config/locales/fr.yml index b63c46cd6..ab8d0fcec 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -33,8 +33,33 @@ fr: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Votre demande de suppression de la boîte de réception sera traitée dans un certain délai. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ fr: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: La fonctionnalité de comptage des conversations non lues n'est pas activée pour ce compte data_import: data_type: invalid: Type de données incorrect @@ -92,6 +122,15 @@ fr: unique: Doit être unique dans la catégorie et le portail dyte: invalid_message_type: 'Type de message invalide. Action non autorisée' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Canal Slack invalide. Veuillez réessayer' whatsapp: @@ -104,6 +143,7 @@ fr: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer est requis' @@ -142,6 +182,9 @@ fr: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ fr: browse_by_topic_subtitle: Trouvez des guides, des tutoriels et des réponses organisés par catégorie. popular_articles: Articles populaires popular_articles_subtitle: Ce que les autres lisent en ce moment. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Sujets populaires :' + recommended_label: 'Recommended topics:' authors_others: "%{names} et %{count} autres" primary_nav: Navigation principale hero: @@ -470,6 +516,7 @@ fr: light: Clair dark: Sombre featured_articles: Articles à la une + recommended: Recommended articles uncategorized: Non catégorisé 404: title: Page introuvable @@ -544,6 +591,29 @@ fr: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Modèle' + sources: + account_override: 'Account override' + default: 'Par défaut' + features: + editor: 'Editor' + assistant: 'Assistant IA' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'Utilisateur introuvable.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/he.yml b/config/locales/he.yml index 39ad787fc..61805dc54 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -33,8 +33,33 @@ he: login_saml_user: חשבון זה משתמש באימות SAML. אנא התחבר דרך ספק SAML של הארגון שלך. saml_not_available: אימות SAML אינו זמין בהתקנה זו. inbox_deletetion_response: בקשת מחיקת תיבת הדואר הנכנס שלך תעובד בקרוב. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ he: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: תכונת SAML לא מופעלת עבור חשבון זה sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: סוג נתונים לא חוקי @@ -92,6 +122,15 @@ he: unique: צריך להיות ייחודי בקטגוריה ובפורטל dyte: invalid_message_type: 'סוג הודעה לא חוקי. פעולה אסורה' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'ערוץ Slack לא תקין. אנא נסה שוב' whatsapp: @@ -104,6 +143,7 @@ he: not_supported: 'אישור מחדש אינו נתמך עבור סוג ערוץ WhatsApp זה.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ he: invalid_token: אסימון MFA לא תקין או שפג תוקפו invalid_credentials: פרטי התחברות או קוד אימות לא תקינים feature_unavailable: תכונת MFA אינה זמינה. אנא הגדר מפתחות הצפנה. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -436,7 +479,10 @@ he: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ he: light: בהיר dark: כהה featured_articles: מאמרים מוצעים + recommended: Recommended articles uncategorized: ללא קטגוריה 404: title: דף לא נמצא @@ -554,6 +601,29 @@ he: ssl_status: custom_domain_not_configured: 'דומיין מותאם אישית לא מוגדר' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'מודל' + sources: + account_override: 'Account override' + default: 'ברירת מחדל' + features: + editor: 'Editor' + assistant: 'עוזר' + copilot: 'טייס משנה' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 06fabd7d5..62b5f1fd9 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -33,8 +33,33 @@ hi: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ hi: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ hi: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ hi: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ hi: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ hi: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ hi: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ hi: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'सहायक' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 2cbae5b61..c505b9bd7 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -33,8 +33,33 @@ hr: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ hr: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ hr: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ hr: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ hr: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -435,7 +478,10 @@ hr: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -471,6 +517,7 @@ hr: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -549,6 +596,29 @@ hr: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Asistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 64133fab1..b16c92b16 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -33,8 +33,33 @@ hu: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: A beérkező üzeneteid törlésére vonatkozó kérésed nem sokára feldolgozásra kerül. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ hu: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Hibás adattípus @@ -92,6 +122,15 @@ hu: unique: egyedinek kell lennie a kategóriában a portálon dyte: invalid_message_type: 'Hibás üzenet típus. Kérés elutasítva' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Érvénytelen Slack csatorna. Kérjük, próbálja újra' whatsapp: @@ -104,6 +143,7 @@ hu: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ hu: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ hu: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ hu: light: Világos mód dark: Sötét mód featured_articles: Kiemelt cikkek + recommended: Recommended articles uncategorized: Kategorizálhatatlan 404: title: Az oldal nem található @@ -544,6 +591,29 @@ hu: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Alapértelmezett' + features: + editor: 'Editor' + assistant: 'Asszisztens' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 664459655..97991fe08 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -33,8 +33,33 @@ hy: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Ձեր մուտքի ջնջման հարցումը կմշակվի որոշ ժամանակ անց։ + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ hy: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Անվավեր տվյալների տեսակ @@ -92,6 +122,15 @@ hy: unique: պետք է լինի եզակի կատեգորիայում և պորտալում dyte: invalid_message_type: 'Հաղորդագրության անվավեր տեսակ։ Գործողությունը թույլատրված չէ' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Սխալ Slack ալիք։ Խնդրում ենք փորձել կրկին' whatsapp: @@ -104,6 +143,7 @@ hy: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ hy: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ hy: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ hy: light: Լուսավոր dark: Մութ featured_articles: Առաջարկվող հոդվածներ + recommended: Recommended articles uncategorized: Առանց կատեգորիայի 404: title: Էջը չի գտնվել @@ -544,6 +591,29 @@ hy: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Նախնական' + features: + editor: 'Editor' + assistant: 'Օգնական' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/id.yml b/config/locales/id.yml index f465157a5..bea75210f 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -33,8 +33,33 @@ id: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Permintaan penghapusan kotak masuk Anda akan diproses dalam beberapa waktu. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -51,7 +76,7 @@ id: invalid_params: 'Invalid, please check the signup paramters and try again' failed: Pendaftaran gagal voice: - call_already_accepted: '%{agent_name} is already handling the call.' + call_already_accepted: '%{agent_name} sudah menangani panggilan tersebut.' assignment_policy: not_found: Assignment policy not found attachments: @@ -64,9 +89,14 @@ id: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Fitur penghitung percakapan yang belum dibaca belum diaktifkan untuk akun ini data_import: data_type: invalid: Jenis data tidak valid @@ -92,6 +122,15 @@ id: unique: harus unik dalam kategori dan portal dyte: invalid_message_type: 'Jenis pesan tidak valid. Tindakan tidak diizinkan' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -103,14 +142,15 @@ id: generic: 'Failed to reauthorize WhatsApp. Please try again.' not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: - not_enabled: 'Calling is not enabled for this inbox' - no_recording: 'No recording file provided' - no_message: 'Call has no associated message' - sdp_offer_required: 'sdp_offer is required' - contact_phone_required: 'Contact phone number is required' - permission_request_failed: 'Failed to send call permission request' + not_enabled: 'Panggilan tidak diaktifkan untuk kotak masuk ini' + already_ended: 'This call has already ended' + no_recording: 'Tidak ada berkas rekaman yang disediakan' + no_message: 'Panggilan tidak memiliki pesan terkait' + sdp_offer_required: 'sdp_offer diperlukan' + contact_phone_required: 'Nomor telepon kontak wajib diisi' + permission_request_failed: 'Permintaan izin panggilan gagal dikirim' openai: - invalid_api_key: 'OpenAI API key is invalid or revoked. Please check your key in your OpenAI dashboard.' + invalid_api_key: 'Kunci API OpenAI tidak sah atau dicabut. Silakan periksa kunci Anda di dasbor OpenAI Anda.' inboxes: imap: socket_error: Periksa sambungan jaringan, alamat IMAP, dan coba lagi. @@ -142,6 +182,9 @@ id: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -240,11 +283,11 @@ id: deleted: Pesan ini telah terhapus whatsapp: list_button_label: 'Choose an item' - call_permission_request_body: 'We would like to call you regarding your conversation.' - unsupported_message: 'This message is unavailable.' + call_permission_request_body: 'Kami ingin menghubungi Anda terkait percakapan Anda.' + unsupported_message: 'Pesan ini tidak tersedia.' voice_call: - twilio: 'Voice Call' - whatsapp: 'WhatsApp Call' + twilio: 'Panggilan Suara' + whatsapp: 'Panggilan WhatsApp' delivery_status: error_code: 'Error code: %{error_code}' activity: @@ -290,8 +333,8 @@ id: issue_linked: 'Linear issue %{issue_id} was linked by %{user_name}' issue_unlinked: 'Linear issue %{issue_id} was unlinked by %{user_name}' whatsapp_call: - permission_requested: 'Sent a call permission request to %{contact_name}.' - permission_granted: '%{contact_name} accepted the call permission request.' + permission_requested: 'Mengirim permintaan izin panggilan ke %{contact_name}.' + permission_granted: '%{contact_name} menerima permintaan izin panggilan.' csat: not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' auto_resolve: @@ -356,7 +399,7 @@ id: name: 'Linear' short_description: 'Create and link Linear issues directly from conversations.' description: 'Create issues in Linear directly from your conversation window. Alternatively, link existing Linear issues for a more streamlined and efficient issue tracking process.' - attachment_link_title: 'Conversation (#%{conversation_id}) with %{name}' + attachment_link_title: 'Percakapan (#%{conversation_id}) dengan %{name}' notion: name: 'Notion' short_description: 'Integrate databases, documents and pages directly with Captain.' @@ -385,9 +428,9 @@ id: limit_exceeded: 'Document limit exceeded' pdf_format_error: 'must be a PDF file' pdf_size_error: 'must be less than 10MB' - sync_not_supported_for_pdf: 'Sync is not supported for PDF documents' - sync_only_available_documents: 'Sync is only available for processed documents' - sync_already_in_progress: 'Document sync is already in progress' + sync_not_supported_for_pdf: 'Sinkronisasi tidak didukung untuk dokumen PDF' + sync_only_available_documents: 'Sinkronisasi hanya tersedia untuk dokumen yang telah diproses' + sync_already_in_progress: 'Sinkronisasi dokumen sedang berlangsung' pdf_upload_failed: 'Failed to upload PDF to OpenAI' pdf_upload_success: 'PDF uploaded successfully with file_id: %{file_id}' pdf_processing_failed: 'Failed to process PDF document %{document_id}: %{error}' @@ -414,8 +457,8 @@ id: loading_placeholder: Sedang mencari... results_title: Hasil pencarian results: Hasil Pencarian - results_for: "Search Results for '%{query}'" - no_results: "No results found for '%{query}'" + results_for: "Hasil Pencarian untuk '%{query}'" + no_results: "Tidak ada hasil yang ditemukan untuk '%{query}'" found_results: other: 'Found %{count} results' submit: Cari @@ -433,7 +476,10 @@ id: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -469,6 +515,7 @@ id: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Tanpa Kategori 404: title: Page not found @@ -539,6 +586,29 @@ id: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Asisten' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/is.yml b/config/locales/is.yml index 840ac4f4f..4429dfc4e 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -33,8 +33,33 @@ is: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ is: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ is: unique: ætti að vera einstakt í flokki og gátt dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ is: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ is: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ is: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ is: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ is: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Aðstoðarmaður' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/it.yml b/config/locales/it.yml index 54e2c218f..41b1c8a51 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -33,8 +33,33 @@ it: login_saml_user: Questo account utilizza autenticazione SAML. Effettua il login dal portale SAML della tua organizzazione. saml_not_available: Autenticazione SAML non disponibile in questa installazione. inbox_deletetion_response: La tua richiesta di cancellazione inbox verrà elaborata. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: non è un fuso orario valido support_email: @@ -64,9 +89,14 @@ it: file_too_large: 'Il file supera la dimensione massima consentita' unsupported_content_type: 'Tipo di file non supportato (sono ammessi solo immagini e video)' unexpected: 'Si è verificato un errore imprevisto' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: Funzionalità SAML non attiva per questo account sso_not_enabled: SAML SSO non è abilitato per questa installazione + conversations: + unread_counts: + feature_not_enabled: Funzione conteggio conversazioni non lette non abilitata per questo account data_import: data_type: invalid: Tipo di dato non valido @@ -92,6 +122,15 @@ it: unique: deve essere unico nella categoria e nel portale dyte: invalid_message_type: 'Tipo messaggio non valido. Azione non consentita' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Canale slack non valido. Riprova' whatsapp: @@ -104,13 +143,14 @@ it: not_supported: 'La riautorizzazione non è supportata per questo tipo di canale WhatsApp.' calls: not_enabled: 'Le chiamate non sono abilitate per questa inbox' + already_ended: 'This call has already ended' no_recording: 'Nessun file di registrazione fornito' no_message: 'La chiamata non ha messaggi associati' sdp_offer_required: 'sdp_offer è richiesto' contact_phone_required: 'È richiesto il numero di telefono del contatto' permission_request_failed: 'Impossibile inviare la richiesta di autorizzazione di chiamata' openai: - invalid_api_key: 'OpenAI API key is invalid or revoked. Please check your key in your OpenAI dashboard.' + invalid_api_key: 'La chiave API OpenAI non è valida o è revocata. Controlla la tua chiave nella dashboard OpenAI.' inboxes: imap: socket_error: Controlla la connessione di rete, l'indirizzo IMAP e riprova. @@ -142,6 +182,9 @@ it: invalid_token: Token MFA non valido o scaduto invalid_credentials: Credenziali o codice di verifica non validi feature_unavailable: MFA non disponibile. Configura le chiavi di cifratura. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Quantità crediti richiesta invalid_credits: Quantità crediti non valida @@ -241,7 +284,7 @@ it: whatsapp: list_button_label: 'Scegli un elemento' call_permission_request_body: 'Vorremmo chiamarti riguardo alla tua conversazione.' - unsupported_message: 'This message is unavailable.' + unsupported_message: 'Questo messaggio non è disponibile.' voice_call: twilio: 'Chiamata Vocale' whatsapp: 'Chiamata WhatsApp' @@ -414,29 +457,32 @@ it: loading_placeholder: Ricerca... results_title: Risultati di ricerca results: Risultati di Ricerca - results_for: "Search Results for '%{query}'" - no_results: "No results found for '%{query}'" + results_for: "Risultati di ricerca per '%{query}'" + no_results: "Nessun risultato trovato per '%{query}'" found_results: - one: Found 1 result - other: 'Found %{count} results' + one: Trovato 1 risultato + other: 'Trovati %{count} risultati' submit: Cerca toc_header: 'Su questa pagina' sidebar: help_center: Help Center categories: Categorie language: Lingua - theme: Theme + theme: Tema open_sidebar: Apri barra laterale close_sidebar: Chiudi barra laterale - browse: Browse - back_to_category: Back to %{name} - browse_by_topic: Browse by topic - browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. - popular_articles: Popular articles - popular_articles_subtitle: What other people are reading right now. - popular_label: 'Popular topics:' - authors_others: "%{names} and %{count} others" - primary_nav: Primary + browse: Esplora + back_to_category: Torna a %{name} + browse_by_topic: Esplora per argomento + browse_by_topic_subtitle: Trova guide, tutorial e risposte organizzate per categoria. + popular_articles: Articoli popolari + popular_articles_subtitle: Cosa leggono le altre persone in questo momento. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. + popular_label: 'Argomenti popolari:' + recommended_label: 'Recommended topics:' + authors_others: "%{names} e %{count} altri" + primary_nav: Principale hero: sub_title: Cerca gli articoli qui oppure sfoglia le categorie qui sotto. common: @@ -454,11 +500,11 @@ it: previous: Precedente next: Successivo article_actions: - label: Open in - view_markdown: View as Markdown - open_in_chatgpt: Open in ChatGPT - open_in_claude: Open in Claude - llm_prompt: "Read the following article and help me understand it: %{url}" + label: Apri in + view_markdown: Visualizza come Markdown + open_in_chatgpt: Apri in ChatGPT + open_in_claude: Apri in Claude + llm_prompt: "Leggi il seguente articolo e aiutami a capirlo: %{url}" footer: made_with: Realizzato con header: @@ -470,6 +516,7 @@ it: light: Chiaro dark: Scuro featured_articles: Articoli in evidenza + recommended: Recommended articles uncategorized: Senza categoria 404: title: Pagina non trovata @@ -544,6 +591,29 @@ it: ssl_status: custom_domain_not_configured: 'Il dominio personalizzato non è configurato' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Modello' + sources: + account_override: 'Account override' + default: 'Predefinito' + features: + editor: 'Editor' + assistant: 'Assistente' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'Utente non trovato.' no_subscriptions_to_test: 'Seleziona almeno una subscription da testare.' diff --git a/config/locales/ja.yml b/config/locales/ja.yml index e6a0fbaa2..540994692 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -33,8 +33,33 @@ ja: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: 受信トレイの削除リクエストは、しばらくしてから処理されます。 + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ja: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: 無効なデータ型。 @@ -92,6 +122,15 @@ ja: unique: カテゴリとポータルで一意である必要があります dyte: invalid_message_type: '無効なメッセージタイプです。アクションは許可されていません' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: '無効なSlackチャンネルです。もう一度お試しください。' whatsapp: @@ -104,6 +143,7 @@ ja: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ja: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -433,7 +476,10 @@ ja: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -469,6 +515,7 @@ ja: light: ライト dark: ダーク featured_articles: 注目の記事 + recommended: Recommended articles uncategorized: 未分類 404: title: ページが見つかりません @@ -539,6 +586,29 @@ ja: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'アシスタント' + copilot: 'コパイロット' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 81f2921f7..b5db83e78 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -33,8 +33,33 @@ ka: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ka: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ ka: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ ka: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ka: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ ka: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ ka: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ ka: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'სტანდარტი' + features: + editor: 'Editor' + assistant: 'მხარდაჭერა' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ko.yml b/config/locales/ko.yml index e50dac85a..dd4b8d62c 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -33,8 +33,33 @@ ko: login_saml_user: 이 계정은 SAML 인증을 사용합니다. 조직의 SAML 제공자를 통해 로그인하십시오. saml_not_available: 이 설치에서는 SAML 인증을 사용할 수 없습니다. inbox_deletetion_response: 받은 메시지함 삭제 요청이 곧 처리될 예정입니다. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ko: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: 이 계정에서는 SAML 기능이 활성화되지 않았습니다 sso_not_enabled: 이 설치에서는 SAML SSO가 활성화되지 않았습니다 + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: 유효하지 않은 데이터 유형 @@ -92,6 +122,15 @@ ko: unique: 카테고리와 포털에서 고유해야 합니다 dyte: invalid_message_type: '유효하지 않은 메시지 유형입니다. 작업이 허용되지 않습니다' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: '유효하지 않은 Slack 채널입니다. 다시 시도하십시오' whatsapp: @@ -104,6 +143,7 @@ ko: not_supported: '이 유형의 WhatsApp 채널은 재인증을 지원하지 않습니다.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ko: invalid_token: 유효하지 않거나 만료된 MFA 토큰 invalid_credentials: 유효하지 않은 자격 증명 또는 인증 코드 feature_unavailable: MFA 기능을 사용할 수 없습니다. 암호화 키를 구성하십시오. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: 크레딧 금액이 필요합니다 invalid_credits: 유효하지 않은 크레딧 금액 @@ -433,7 +476,10 @@ ko: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -469,6 +515,7 @@ ko: light: 밝게 dark: 어둡게 featured_articles: 추천 게시물 + recommended: Recommended articles uncategorized: 카테고리가 지정되지 않음 404: title: 페이지를 찾을 수 없습니다 @@ -539,6 +586,29 @@ ko: ssl_status: custom_domain_not_configured: '사용자 정의 도메인이 구성되지 않았습니다' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: '기본' + features: + editor: 'Editor' + assistant: '어시스턴트' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/lt.yml b/config/locales/lt.yml index eaf3ff8ff..36bd666ef 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -33,8 +33,33 @@ lt: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Jūsų gautųj laiškų aplanko ištrynimo užklausa bus apdorota po kurio laiko. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ lt: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO neįjungta šiai diegimo versijai + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Neteisingas duomenų tipas @@ -92,6 +122,15 @@ lt: unique: turėtų būti unikalūs kategorijoje ir portale dyte: invalid_message_type: 'Neteisingas pranešimo tipas. Veiksmas neleidžiamas' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ lt: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ lt: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -436,7 +479,10 @@ lt: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ lt: light: Šviesus dark: Tamsus featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Neįtraukta į kategorijas 404: title: Puslapis nerastas @@ -554,6 +601,29 @@ lt: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Pagal nutylėjimą' + features: + editor: 'Editor' + assistant: 'Asistentas' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/lv.yml b/config/locales/lv.yml index c8e45b2a4..5db35c120 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -33,8 +33,33 @@ lv: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Jūsu iesūtnes dzēšanas pieprasījums pēc kāda laika tiks apstrādāts. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ lv: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Nederīgs datu tips @@ -92,6 +122,15 @@ lv: unique: vajadzētu būt unikālai, kategorijā un portālā dyte: invalid_message_type: 'Nederīgs ziņojuma veids. Darbība nav atļauta' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Nepareizs Slack kanāls. Lūdzu, mēģiniet vēlreiz' whatsapp: @@ -104,6 +143,7 @@ lv: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ lv: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -435,7 +478,10 @@ lv: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -471,6 +517,7 @@ lv: light: Gaišs dark: Tumšs featured_articles: Piedāvātie raksti + recommended: Recommended articles uncategorized: Bez kategorijas 404: title: Lapa nav atrasta @@ -549,6 +596,29 @@ lv: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Noklusējums' + features: + editor: 'Editor' + assistant: 'Asistents' + copilot: 'Kopilots' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 7dee9f525..1ab62fc1e 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -33,8 +33,33 @@ ml: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ml: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ ml: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ ml: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ml: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ ml: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ ml: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ ml: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'ഡീഫോൾട്ട്' + features: + editor: 'Editor' + assistant: 'സഹായി' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 095c8b9e3..71f1ec470 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -33,8 +33,33 @@ ms: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ms: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ ms: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ ms: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ms: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -433,7 +476,10 @@ ms: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -469,6 +515,7 @@ ms: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -539,6 +586,29 @@ ms: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Lalai' + features: + editor: 'Editor' + assistant: 'Pembantu' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ne.yml b/config/locales/ne.yml index cbc3d624f..917ea7add 100644 --- a/config/locales/ne.yml +++ b/config/locales/ne.yml @@ -33,8 +33,33 @@ ne: login_saml_user: यो खाता SAML प्रमाणीकरण प्रयोग गर्छ। कृपया आफ्नो संस्थाको SAML प्रदायकमार्फत साइन इन गर्नुहोस्।. saml_not_available: यस इन्स्टलेशनमा SAML प्रमाणीकरण उपलब्ध छैन. inbox_deletetion_response: तपाईंको पत्रपेटिका मेटाउने अनुरोध केही समयपछि प्रक्रिया हुनेछ।. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ne: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: यस खाताको लागि SAML सुविधा सक्षम गरिएको छैन sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ ne: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ ne: not_supported: 'यस प्रकारको WhatsApp च्यानलमा पुन: अधिकृत समर्थन छैन।.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ne: invalid_token: अवैध वा म्याद सकिएको MFA टोकन invalid_credentials: अवैध प्रमाणपत्र वा प्रमाणीकरण कोड feature_unavailable: MFA सुविधा उपलब्ध छैन। कृपया इन्क्रिप्सन कुञ्जीहरू सेटअप गर्नुहोस्।. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: क्रेडिट रकम आवश्यक छ invalid_credits: अवैध क्रेडिट रकम @@ -434,7 +477,10 @@ ne: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ ne: light: हल्का dark: गाढा featured_articles: विशेष लेखहरू + recommended: Recommended articles uncategorized: वर्गीकरण नगरिएको 404: title: पृष्ठ फेला परेन @@ -544,6 +591,29 @@ ne: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'पूर्वनिर्धारित' + features: + editor: 'Editor' + assistant: 'सहायक' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 7d872bcab..aa59e8759 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -33,8 +33,33 @@ nl: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Uw verzoek tot verwijdering binnen de inbox zal binnen enige tijd worden verwerkt. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ nl: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Ongeldig datatype @@ -92,6 +122,15 @@ nl: unique: moet uniek zijn in de categorie en portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ nl: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ nl: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ nl: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ nl: light: Light dark: Dark featured_articles: Uitgelichte artikelen + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ nl: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Assistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/no.yml b/config/locales/no.yml index 5a9caa60c..5e8b957d6 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -33,8 +33,33 @@ login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Innboksen din slettingsforespørsel vil bli behandlet i løpet av en periode. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Ugyldig datatype @@ -92,6 +122,15 @@ unique: må være unikt i kategorien og portalen dyte: invalid_message_type: 'Ugyldig meldingstype. Handlingen er ikke tillatt' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Ugyldig slack kanal. Vennligst prøv på nytt' whatsapp: @@ -104,6 +143,7 @@ not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Assistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/pl.yml b/config/locales/pl.yml index f4368c230..cb26ca412 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -33,8 +33,33 @@ pl: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Żądanie usunięcia skrzynki odbiorczej zostanie rozpatrzone za jakiś czas. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ pl: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Nieprawidłowy typ danych @@ -92,6 +122,15 @@ pl: unique: powinno być unikalne w kategorii i portalu dyte: invalid_message_type: 'Nieprawidłowy typ wiadomości. Niedozwolone działanie.' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ pl: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ pl: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -436,7 +479,10 @@ pl: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ pl: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Bez kategorii 404: title: Page not found @@ -554,6 +601,29 @@ pl: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Domyślny' + features: + editor: 'Editor' + assistant: 'Asystent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/pt.yml b/config/locales/pt.yml index e5cf9e883..df307b09f 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -33,8 +33,33 @@ pt: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: O seu pedido de eliminação de caixa de entrada será processado mais tarde. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ pt: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Tipo de dados inválido @@ -92,6 +122,15 @@ pt: unique: deve ser único na categoria e no portal dyte: invalid_message_type: 'Tipo de mensagem inválido. Ação não permitida' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Canal de slack inválido. Por favor, tente novamente' whatsapp: @@ -104,6 +143,7 @@ pt: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ pt: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ pt: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ pt: light: Claro dark: Escuro featured_articles: Artigos destacados + recommended: Recommended articles uncategorized: Sem categoria 404: title: Página não encontrada @@ -532,6 +579,29 @@ pt: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Padrão' + features: + editor: 'Editor' + assistant: 'Assistente' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index f647c2c9a..8bb6c79d6 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -33,8 +33,33 @@ pt_BR: login_saml_user: Esta conta usa autenticação SAML. Por favor, faça login através do provedor SAML da sua organização. saml_not_available: A autenticação SAML não está disponível nesta instalação. inbox_deletetion_response: Seu pedido de exclusão da caixa de entrada será processado dentro de algum tempo. + data_imports: + intercom: + activities: + assignment: '%{actor} atribuiu a conversa' + assignment_with_target: '%{actor} atribuiu a conversa a %{target}' + assign_and_reopen: '%{actor} atribuiu e reabriu a conversa' + assign_and_reopen_with_target: '%{actor} atribuiu a conversa a %{target} e a reabriu' + open: '%{actor} abriu a conversa' + close: '%{actor} fechou a conversa' + snoozed: '%{actor} adiou a conversa' + participant_added: '%{actor} adicionou um participante' + participant_added_with_target: '%{actor} adicionou %{target} como participante' + participant_removed: '%{actor} removeu um usuário' + participant_removed_with_target: '%{actor} removeu %{target} como participante' + conversation_attribute_updated: '%{actor} atualizou atributos de conversa' + ticket_attribute_updated: '%{actor} atributos atualizados do ticket' + ticket_state_updated: '%{actor} atualizou o estado do ticket' + custom_action_started: '%{actor} iniciou uma ação personalizada' + custom_action_finished: '%{actor} finalizou uma ação personalizada' + quick_reply: '%{actor} usou uma resposta rápida' + generic: '%{actor} gravou %{event}' + profile_settings: + sessions: + cannot_revoke_current: Você não pode revogar a sessão atual. errors: account: + not_authorized: Você não está autorizado a acessar esta conta reporting_timezone: invalid: não é um fuso horário válido support_email: @@ -64,9 +89,14 @@ pt_BR: file_too_large: 'O arquivo excede o tamanho máximo permitido' unsupported_content_type: 'Tipo de arquivo não suportado (apenas imagens e vídeos são permitidos)' unexpected: 'Ocorreu um erro inesperado' + database: + query_canceled: 'A solicitação demorou muito para ser concluída. Tente novamente.' saml: feature_not_enabled: SAML não está habilitado para esta conta sso_not_enabled: O SSO via SAML não está habilitado para esta instalação + conversations: + unread_counts: + feature_not_enabled: O recurso de contagem de conversas não lidas não está habilitado para esta conta data_import: data_type: invalid: Tipo de dado inválido @@ -92,6 +122,15 @@ pt_BR: unique: deve ser único na categoria e no portal dyte: invalid_message_type: 'Tipo de mensagem inválido. Ação não permitida' + realtimekit_credentials_required: 'Credenciais do Cloudflare RealtimeKit são necessárias. Exclua a integração de Dyte existente e crie-a novamente com Cloudflare RealtimeKit credenciais.' + cloudflare: + realtimekit: + invalid_credentials: 'As credenciais do Cloudflare RealtimeKit são inválidas. Verifique o ID da conta, RealtimeKit App ID e as permissões do token de API.' + missing_credentials: 'ID da conta Cloudflare, ID do App RealtimeKit e token API são necessários.' + invalid_api_token: 'O token API do Cloudflare está inválido ou inativo. Por favor, crie um novo token com permissões de administrador em tempo real.' + invalid_account_or_permissions: 'O ID da conta Cloudflare é inválido, ou o token de API não tem acesso de Administrador em tempo real a esta conta.' + app_not_found: 'RealtimeKit App ID não foi encontrado nesta conta Cloudflare. Por favor, verifique o app selecionado.' + verification_failed: 'Não foi possível verificar as credenciais do Cloudflare RealtimeKit agora. Tente novamente.' slack: invalid_channel_id: 'Canal de slack inválido. Por favor, tente novamente' whatsapp: @@ -104,6 +143,7 @@ pt_BR: not_supported: 'Reautenticação não é suportado por este tipo de canal WhatsApp.' calls: not_enabled: 'As chamadas não estão habilitadas para esta caixa de entrada' + already_ended: 'Esta chamada já terminou' no_recording: 'Nenhum arquivo de gravação fornecido' no_message: 'A chamada não possui mensagem associada' sdp_offer_required: 'sdp_offer é obrigatório' @@ -142,6 +182,9 @@ pt_BR: invalid_token: Token MFA inválido ou expirado invalid_credentials: Credenciais ou código de verificação inválidos feature_unavailable: O recurso MFA não está disponível. Por favor, configure as chaves de criptografia. + billing: + invalid_currency: Moeda de cobrança inválida + currency_locked: Moeda de faturamento não pode ser alterada após o faturamento ter sido configurado topup: credits_required: A quantidade de créditos é obrigatória invalid_credits: Quantidade de créditos inválida @@ -414,11 +457,11 @@ pt_BR: loading_placeholder: Procurando... results_title: Resultados de pesquisa results: Resultados da Pesquisa - results_for: "Search Results for '%{query}'" - no_results: "No results found for '%{query}'" + results_for: "Resultados da pesquisa para '%{query}'" + no_results: "Nenhum resultado encontrado para '%{query}'" found_results: one: Um resultado encontrado - other: 'Found %{count} results' + other: 'Encontrados %{count} resultados' submit: Pesquisar toc_header: 'Nesta página' sidebar: @@ -434,7 +477,10 @@ pt_BR: browse_by_topic_subtitle: Encontre guias, tutoriais e respostas organizados por categoria. popular_articles: Artigos populares popular_articles_subtitle: O que outras pessoas estão lendo agora. + recommended: Artigos recomendados + recommended_subtitle: Artigos escolhidos para você começar. popular_label: 'Tópicos populares:' + recommended_label: 'Tópicos recomendados:' authors_others: "%{names} e %{count} outros" primary_nav: Primário hero: @@ -470,6 +516,7 @@ pt_BR: light: Claro dark: Escuro featured_articles: Artigos em Destaque + recommended: Artigos recomendados uncategorized: Não categorizado 404: title: Página não encontrada @@ -544,6 +591,29 @@ pt_BR: ssl_status: custom_domain_not_configured: 'Domínio personalizado não está configurado' super_admin: + captain_model_overrides: + form: + helper_text: 'Deixe um modelo em branco para usar o padrão YAML para esse recurso AI.' + use_default: 'Usar padrão: %{model} (%{model_id})' + show: + summary: 'Ver roteamento de modelo' + provider: 'Fornecedor' + model: 'Modelo' + sources: + account_override: 'Substituição de cliente' + default: 'Padrão' + features: + editor: 'Editores' + assistant: 'Assistente' + copilot: 'Copiloto' + label_suggestion: 'Sugestão de etiqueta' + document_faq_generation: 'Documentar geração de FAQ' + conversation_faq_generation: 'Conversação de geração FAQ' + help_center_article_generation: 'Ajuda da geração de artigo central' + onboarding_content_generation: 'Integração de geração de conteúdo' + help_center_query_translation: 'Tradução da consulta central de ajuda' + audio_transcription: 'Transcrição de áudio' + help_center_search: 'Pesquisa central de ajuda' push_diagnostics: user_not_found: 'Usuário não encontrado.' no_subscriptions_to_test: 'Selecione pelo menos uma assinatura para teste.' diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 5b5772b41..fce9d3971 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -33,8 +33,33 @@ ro: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Solicitarea de ștergere a inboxului va fi procesată într-un anumit timp. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ro: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Tip de date nevalid @@ -92,6 +122,15 @@ ro: unique: ar trebui să fie unic în categorie și portal dyte: invalid_message_type: 'Tip de mesaj nevalid. Acțiune nepermisă' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ ro: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ro: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -435,7 +478,10 @@ ro: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -471,6 +517,7 @@ ro: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Necategorizat 404: title: Page not found @@ -549,6 +596,29 @@ ro: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Implicit' + features: + editor: 'Editor' + assistant: 'Asistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ru.yml b/config/locales/ru.yml index ff7ac7980..c51fd193d 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -33,8 +33,33 @@ ru: login_saml_user: Эта учетная запись использует SAML аутентификацию. Пожалуйста, войдите через SAML провайдера вашей организации. saml_not_available: SAML аутентификация не доступна в этой установке. inbox_deletetion_response: Ваш запрос на удаление входящих сообщений будет обработан через некоторое время. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: неверный часовой пояс support_email: @@ -64,9 +89,14 @@ ru: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: Функция SAML не включена для этой учетной записи sso_not_enabled: SSO SAML не включен для этой установки + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Недопустимый тип данных @@ -92,6 +122,15 @@ ru: unique: Должны быть уникальными в категории и портале dyte: invalid_message_type: 'Недопустимый тип сообщения. Действие запрещено' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Неправильный канал slack - попробуйте еще раз' whatsapp: @@ -104,6 +143,7 @@ ru: not_supported: 'Повторная авторизация не поддерживается для данного типа канала WhatsApp.' calls: not_enabled: 'Вызов не включен для этого входящего сообщения' + already_ended: 'This call has already ended' no_recording: 'Файл записи не указан' no_message: 'Звонок не имеет связанных сообщений' sdp_offer_required: 'Необходимо указать sdp_offer' @@ -142,6 +182,9 @@ ru: invalid_token: Недопустимый или просроченный MFA токен invalid_credentials: Неверные учетные данные или проверочный код feature_unavailable: Функция MFA недоступна. Пожалуйста, настройте ключи шифрования. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Необходимо ввести сумму кредитов invalid_credits: Неверная сумма кредитов @@ -436,7 +479,10 @@ ru: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ ru: light: Светлая dark: Тёмная featured_articles: Рекомендуемые статьи + recommended: Recommended articles uncategorized: Без категории 404: title: Страница не найдена @@ -554,6 +601,29 @@ ru: ssl_status: custom_domain_not_configured: 'Пользовательский домен не настроен' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Модель' + sources: + account_override: 'Account override' + default: 'По умолчанию' + features: + editor: 'Editor' + assistant: 'Ассистент' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'Пользователь не найден.' no_subscriptions_to_test: 'Выберите хотя бы одну подписку для тестирования.' diff --git a/config/locales/sh.yml b/config/locales/sh.yml index 37588e130..cf378bd49 100644 --- a/config/locales/sh.yml +++ b/config/locales/sh.yml @@ -33,8 +33,33 @@ sh: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ sh: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Nevažeći tip podataka @@ -92,6 +122,15 @@ sh: unique: mora biti jedinstven u kategoriji i portalu dyte: invalid_message_type: 'Neispravan tip poruke. Akcija nije dozvoljena' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ sh: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ sh: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -436,7 +479,10 @@ sh: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ sh: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -554,6 +601,29 @@ sh: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Zadano' + features: + editor: 'Editor' + assistant: 'Asistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 2a5c9d917..242b0171d 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -33,8 +33,33 @@ sk: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ sk: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ sk: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ sk: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ sk: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -436,7 +479,10 @@ sk: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ sk: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -554,6 +601,29 @@ sk: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Asistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 0cb87bfbb..3080a15c4 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -33,8 +33,33 @@ sl: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Vaša zahteva za izbris predala bo obdelana čez nekaj časa. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ sl: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Nepravilen podatkovni tip @@ -92,6 +122,15 @@ sl: unique: mora biti edinstven v kategoriji in portalu dyte: invalid_message_type: 'Neveljavna vrsta sporočila. Dejanje ni dovoljeno' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Neveljaven slack kanal. Prosimo poskusite ponovno' whatsapp: @@ -104,6 +143,7 @@ sl: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ sl: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -436,7 +479,10 @@ sl: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ sl: light: Svetlo dark: Temno featured_articles: Predstavljeni članki + recommended: Recommended articles uncategorized: Nekategorizirano 404: title: Stran ni najdena @@ -554,6 +601,29 @@ sl: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Privzeto' + features: + editor: 'Editor' + assistant: 'Pomočnik' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 59e98e325..21017c4c3 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -33,8 +33,33 @@ sq: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ sq: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'Ndodhi një gabim i papritur' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ sq: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ sq: not_supported: 'Riautorizimi nuk mbështetet për këtë lloj kanali të WhatsApp-it.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ sq: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ sq: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ sq: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ sq: ssl_status: custom_domain_not_configured: 'Domeni i personalizuar nuk është konfiguruar' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Parazgjedhje' + features: + editor: 'Editor' + assistant: 'Asistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 5120a1066..b1efa8dd4 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -33,8 +33,33 @@ sr-Latn: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ sr-Latn: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Neispravan tip podatka @@ -92,6 +122,15 @@ sr-Latn: unique: treba biti jedinstvena u kategoriji i portalu dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ sr-Latn: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ sr-Latn: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -435,7 +478,10 @@ sr-Latn: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -471,6 +517,7 @@ sr-Latn: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -549,6 +596,29 @@ sr-Latn: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Predefinisano' + features: + editor: 'Editor' + assistant: 'Asistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 94c0ba3cb..06cc4b693 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -33,8 +33,33 @@ sv: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ sv: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ sv: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ sv: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ sv: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ sv: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ sv: light: Ljus dark: Mörk featured_articles: Utvalda artiklar + recommended: Recommended articles uncategorized: Okategoriserade 404: title: Sidan kunde inte hittas @@ -544,6 +591,29 @@ sv: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Assistent' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 0915cdabd..c22224fc5 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -33,8 +33,33 @@ ta: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ta: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ ta: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ ta: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ta: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ ta: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ ta: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ ta: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'இயல்புநிலை' + features: + editor: 'Editor' + assistant: 'உதவியாளர்' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/th.yml b/config/locales/th.yml index 3131e5918..6521aac20 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -33,8 +33,33 @@ th: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ th: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ th: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ th: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ th: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -433,7 +476,10 @@ th: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -469,6 +515,7 @@ th: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -539,6 +586,29 @@ th: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'ผู้ช่วย' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/tl.yml b/config/locales/tl.yml index e95be4794..4dda6a87a 100644 --- a/config/locales/tl.yml +++ b/config/locales/tl.yml @@ -33,8 +33,33 @@ tl: login_saml_user: Gumagamit ang account na ito ng SAML na pagpapatotoo. Mangyaring mag-sign in sa pamamagitan ng SAML provider ng iyong organisasyon. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ tl: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: Hindi naka-enable ang tampok na SAML para sa account na ito sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Hindi wastong uri ng datos @@ -92,6 +122,15 @@ tl: unique: dapat ay natatangi sa kategorya at portal dyte: invalid_message_type: 'Hindi wastong uri ng mensahe. Hindi pinapayagan ang aksyon' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ tl: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ tl: invalid_token: Hindi wastong o paso na ang MFA token invalid_credentials: Hindi wastong kredensyal o code ng beripikasyon feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ tl: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ tl: light: Maliwanag dark: Madilim featured_articles: Mga Tampok na Artikulo + recommended: Recommended articles uncategorized: Walang kategorya 404: title: Hindi makita ang pahina @@ -544,6 +591,29 @@ tl: ssl_status: custom_domain_not_configured: 'Hindi nakaayos ang custom domain' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Katulong' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/tr.yml b/config/locales/tr.yml index fdeb50341..60072f613 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -33,8 +33,33 @@ tr: login_saml_user: Bu hesap SAML kimlik doğrulaması kullanmaktadır. Lütfen kuruluşunuzun SAML sağlayıcısı aracılığıyla oturum açın. saml_not_available: SAML kimlik doğrulaması bu kurulumda mevcut değildir. inbox_deletetion_response: Gelen kutusu silme isteğiniz bir süre sonra işleme alınacaktır. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: geçerli bir saat dilimi değil support_email: @@ -64,9 +89,14 @@ tr: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: Bu hesap için SAML özelliği etkinleştirilmemiş sso_not_enabled: SAML SSO bu kurulum için etkinleştirilmemiş + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Hatalı veri türü @@ -92,6 +122,15 @@ tr: unique: kategori ve portalde tekil olmalı dyte: invalid_message_type: 'Geçersiz mesaj türü. İşlem izin verilmiyor' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Geçersiz Slack kanalı. Lütfen tekrar deneyin' whatsapp: @@ -104,6 +143,7 @@ tr: not_supported: 'Bu tür WhatsApp kanalları için yeniden yetkilendirme desteklenmemektedir.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ tr: invalid_token: Geçersiz veya süresi dolmuş MFA jetonu invalid_credentials: Geçersiz kimlik bilgileri veya doğrulama kodu feature_unavailable: MFA özelliği kullanılamıyor. Lütfen şifreleme anahtarlarını yapılandırın. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ tr: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ tr: light: Açık Mod dark: Koyu Mod featured_articles: Öne Çıkan Makaleler + recommended: Recommended articles uncategorized: Kategorize Edilmemiş 404: title: Sayfa bulunamadı @@ -544,6 +591,29 @@ tr: ssl_status: custom_domain_not_configured: 'Özel alan adı yapılandırılmamış' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Varsayılan' + features: + editor: 'Editor' + assistant: 'Asistan' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 7cef7561a..e520ff6ea 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -33,8 +33,33 @@ uk: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Ваш запит на видалення буде оброблений протягом деякого часу. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ uk: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Некоректний тип даних @@ -92,6 +122,15 @@ uk: unique: має бути унікальним на категорії і порталі dyte: invalid_message_type: 'Невірний тип повідомлення. Дію не дозволено' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Недійсний канал slack. Будь ласка, спробуйте ще раз' whatsapp: @@ -104,6 +143,7 @@ uk: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ uk: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -436,7 +479,10 @@ uk: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -472,6 +518,7 @@ uk: light: Світла dark: Темна featured_articles: Вибрані статті + recommended: Recommended articles uncategorized: Без категорії 404: title: Сторінку не знайдено @@ -554,6 +601,29 @@ uk: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'За замовчуванням' + features: + editor: 'Editor' + assistant: 'Асистент' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ur.yml b/config/locales/ur.yml index 0a3d9c705..b4e89414a 100644 --- a/config/locales/ur.yml +++ b/config/locales/ur.yml @@ -33,8 +33,33 @@ ur: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ur: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ ur: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ ur: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ur: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ ur: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ ur: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ ur: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'اسسٹنٹ' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/ur_IN.yml b/config/locales/ur_IN.yml index f3cfab8b1..b5c864971 100644 --- a/config/locales/ur_IN.yml +++ b/config/locales/ur_IN.yml @@ -33,8 +33,33 @@ ur: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ ur: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Invalid data type @@ -92,6 +122,15 @@ ur: unique: should be unique in the category and portal dyte: invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ ur: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ ur: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -434,7 +477,10 @@ ur: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -470,6 +516,7 @@ ur: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Uncategorized 404: title: Page not found @@ -544,6 +591,29 @@ ur: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'ڈیفالٹ' + features: + editor: 'Editor' + assistant: 'اسسٹنٹ' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/uz.yml b/config/locales/uz.yml new file mode 100644 index 000000000..689032af1 --- /dev/null +++ b/config/locales/uz.yml @@ -0,0 +1,621 @@ +#Files in the config/locales directory are used for internationalization +#and are automatically loaded by Rails. If you want to use locales other +#than English, add the necessary files in this directory. +#To use the locales, use `I18n.t`: +#I18n.t 'hello' +#In views, this is aliased to just `t`: +#<%= t('hello') %> +#To use a different locale, set it with `I18n.locale`: +#I18n.locale = :es +#This would use the information in config/locales/es.yml. +#The following keys must be escaped otherwise they will not be retrieved by +#the default I18n backend: +#true, false, on, off, yes, no +#Instead, surround them with single quotes. +#en: +#'true': 'foo' +#To learn more, please read the Rails Internationalization guide +#available at https://guides.rubyonrails.org/i18n.html. +uz: + hello: 'Hello world' + inbox: + reauthorization: + success: 'Channel reauthorized successfully' + not_required: 'Reauthorization is not required for this inbox' + invalid_channel: 'Invalid channel type for reauthorization' + auth: + saml: + invalid_email: 'Please enter a valid email address' + authentication_failed: 'Authentication failed. Please check your credentials and try again.' + messages: + reset_password: Request for password reset is successful. A email with instructions will be sent to your email if it exists. + reset_password_saml_user: This account uses SAML authentication. Password reset is not available. Please contact your administrator. + login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. + saml_not_available: SAML authentication is not available in this installation. + inbox_deletetion_response: Your inbox deletion request will be processed in some time. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. + errors: + account: + not_authorized: You are not authorized to access this account + reporting_timezone: + invalid: is not a valid timezone + support_email: + invalid: is not a valid email address + validations: + presence: must not be blank + webhook: + invalid: Invalid events + signup: + disposable_email: We do not allow disposable emails + blocked_domain: This domain is not allowed. If you believe this is a mistake, please contact support. + invalid_email: You have entered an invalid email + email_already_exists: 'You have already signed up for an account with %{email}' + invalid_params: 'Invalid, please check the signup paramters and try again' + failed: Signup failed + voice: + call_already_accepted: '%{agent_name} is already handling the call.' + assignment_policy: + not_found: Assignment policy not found + attachments: + invalid: Invalid attachment + upload: + missing_input: 'No file or URL provided' + invalid_url: 'Invalid URL provided' + fetch_failed: 'Failed to fetch file from URL' + fetch_failed_with_message: 'Failed to fetch file from URL: %{message}' + file_too_large: 'File exceeds the maximum allowed size' + unsupported_content_type: 'File type not supported (only images and videos are allowed)' + unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' + saml: + feature_not_enabled: SAML feature not enabled for this account + sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account + data_import: + data_type: + invalid: Invalid data type + contacts: + import: + failed: File is blank + export: + success: We will notify you once contacts export file is ready to view. + email: + invalid: Invalid email + phone_number: + invalid: should be in e164 format + companies: + domain: + invalid: must be a valid domain name + search: + query_missing: Specify search string with parameter q + messages: + search: + time_range_limit_exceeded: 'Search is limited to the last %{days} days' + categories: + locale: + unique: should be unique in the category and portal + dyte: + invalid_message_type: 'Invalid message type. Action not permitted' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' + slack: + invalid_channel_id: 'Invalid slack channel. Please try again' + whatsapp: + token_exchange_failed: 'Failed to exchange code for access token. Please try again.' + invalid_token_permissions: 'The access token does not have the required permissions for WhatsApp.' + phone_info_fetch_failed: 'Failed to fetch phone number information. Please try again.' + phone_number_already_exists: 'Channel already exists for this phone number: %{phone_number}, please contact support if the error persists' + reauthorization: + generic: 'Failed to reauthorize WhatsApp. Please try again.' + not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' + calls: + not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' + no_recording: 'No recording file provided' + no_message: 'Call has no associated message' + sdp_offer_required: 'sdp_offer is required' + contact_phone_required: 'Contact phone number is required' + permission_request_failed: 'Failed to send call permission request' + openai: + invalid_api_key: 'OpenAI API key is invalid or revoked. Please check your key in your OpenAI dashboard.' + inboxes: + imap: + socket_error: Please check the network connection, IMAP address and try again. + no_response_error: Please check the IMAP credentials and try again. + host_unreachable_error: Host unreachable, Please check the IMAP address, IMAP port and try again. + connection_timed_out_error: Connection timed out for %{address}:%{port} + connection_closed_error: Connection closed. + smtp: + authentication_error: SMTP authentication failed. Please verify your login credentials. + connection_error: Could not connect to SMTP server. Please check the server address and port. + ssl_error: SSL/TLS error. Please verify your encryption settings. + smtp_error: SMTP server error. Please check your configuration and try again. + validations: + name: should not start or end with symbols, and it should not have < > / \ @ characters. + custom_filters: + number_of_records: Limit reached. The maximum number of allowed custom filters for a user per account is 1000. + invalid_attribute: Invalid attribute key - [%{key}]. The key should be one of [%{allowed_keys}] or a custom attribute defined in the account. + invalid_operator: Invalid operator. The allowed operators for %{attribute_name} are [%{allowed_keys}]. + invalid_query_operator: Query operator must be either "AND" or "OR". + invalid_value: Invalid value. The values provided for %{attribute_name} are invalid + custom_attribute_definition: + attribute_key_format: must only contain letters, numbers, underscores, hyphens, and dots + key_conflict: The provided key is not allowed as it might conflict with default attributes. + mfa: + already_enabled: MFA is already enabled + not_enabled: MFA is not enabled + invalid_code: Invalid verification code + invalid_backup_code: Invalid backup code + invalid_token: Invalid or expired MFA token + invalid_credentials: Invalid credentials or verification code + feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up + topup: + credits_required: Credits amount is required + invalid_credits: Invalid credits amount + invalid_option: Invalid topup option + plan_not_eligible: Top-ups are only available for paid plans. Please upgrade your plan first. + stripe_customer_not_configured: Stripe customer not configured + no_payment_method: No payment methods found. Please add a payment method before making a purchase. + reports: + date_range_too_long: Date range cannot exceed 6 months + profile: + mfa: + enabled: MFA enabled successfully + disabled: MFA disabled successfully + account_saml_settings: + invalid_certificate: must be a valid X.509 certificate in PEM format + reports: + period: Reporting period %{since} to %{until} + utc_warning: The report generated is in UTC timezone + agent_csv: + agent_name: Agent name + conversations_count: Assigned conversations + avg_first_response_time: Avg first response time + avg_resolution_time: Avg resolution time + resolution_count: Resolution Count + avg_customer_waiting_time: Avg customer waiting time + inbox_csv: + inbox_name: Inbox name + inbox_type: Inbox type + conversations_count: No. of conversations + avg_first_response_time: Avg first response time + avg_resolution_time: Avg resolution time + label_csv: + label_title: Label + conversations_count: No. of conversations + avg_first_response_time: Avg first response time + avg_resolution_time: Avg resolution time + avg_reply_time: Avg reply time + resolution_count: Resolution Count + team_csv: + team_name: Team name + conversations_count: Conversations count + avg_first_response_time: Avg first response time + avg_resolution_time: Avg resolution time + resolution_count: Resolution Count + avg_customer_waiting_time: Avg customer waiting time + conversation_csv: + conversations_count: Conversations + incoming_messages_count: Messages received + outgoing_messages_count: Messages sent + avg_first_response_time: Avg first response time + avg_resolution_time: Avg resolution time + resolution_count: Resolution count + avg_customer_waiting_time: Avg customer waiting time + conversation_traffic_csv: + timezone: Timezone + sla_csv: + conversation_id: Conversation ID + sla_policy_breached: SLA Policy + assignee: Assignee + team: Team + inbox: Inbox + labels: Labels + conversation_link: Link to the Conversation + breached_events: Breached Events + default_group_by: day + csat: + headers: + contact_name: Contact Name + contact_email_address: Contact Email Address + contact_phone_number: Contact Phone Number + link_to_the_conversation: Link to the conversation + agent_name: Agent Name + rating: Rating + feedback: Feedback Comment + recorded_at: Recorded date + review_notes: Review Notes + notifications: + notification_title: + conversation_creation: 'A conversation (#%{display_id}) has been created in %{inbox_name}' + conversation_assignment: 'A conversation (#%{display_id}) has been assigned to you' + assigned_conversation_new_message: 'A new message is created in conversation (#%{display_id})' + conversation_mention: 'You have been mentioned in conversation (#%{display_id})' + sla_missed_first_response: 'SLA target first response missed for conversation (#%{display_id})' + sla_missed_next_response: 'SLA target next response missed for conversation (#%{display_id})' + sla_missed_resolution: 'SLA target resolution missed for conversation (#%{display_id})' + attachment: 'Attachment' + no_content: 'No content' + conversations: + captain: + handoff: 'Transferring to another agent for further assistance.' + messages: + instagram_story_content: '%{story_sender} mentioned you in the story: ' + instagram_deleted_story_content: This story is no longer available. + instagram_shared_story_content: 'Shared story' + instagram_shared_post_content: 'Shared post' + deleted: This message was deleted + whatsapp: + list_button_label: 'Choose an item' + call_permission_request_body: 'We would like to call you regarding your conversation.' + unsupported_message: 'This message is unavailable.' + voice_call: + twilio: 'Voice Call' + whatsapp: 'WhatsApp Call' + delivery_status: + error_code: 'Error code: %{error_code}' + activity: + captain: + resolved: 'Conversation was marked resolved by %{user_name} due to inactivity' + resolved_with_reason: 'Conversation was marked resolved by %{user_name} (%{reason})' + resolved_by_tool: 'Conversation was marked resolved by %{user_name}: %{reason}' + open: 'Conversation was marked open by %{user_name}' + open_with_reason: 'Conversation was marked open by %{user_name} (%{reason})' + auto_opened_after_agent_reply: 'Conversation was marked open automatically after an agent reply' + agent_bot: + error_moved_to_open: 'Conversation was marked open by system due to an error with the agent bot.' + status: + resolved: 'Conversation was marked resolved by %{user_name}' + contact_resolved: 'Conversation was resolved by %{contact_name}' + open: 'Conversation was reopened by %{user_name}' + pending: 'Conversation was marked as pending by %{user_name}' + snoozed: 'Conversation was snoozed by %{user_name}' + auto_resolved_days: 'Conversation was marked resolved by system due to %{count} days of inactivity' + auto_resolved_hours: 'Conversation was marked resolved by system due to %{count} hours of inactivity' + auto_resolved_minutes: 'Conversation was marked resolved by system due to %{count} minutes of inactivity' + system_auto_open: System reopened the conversation due to a new incoming message. + priority: + added: '%{user_name} set the priority to %{new_priority}' + updated: '%{user_name} changed the priority from %{old_priority} to %{new_priority}' + removed: '%{user_name} removed the priority' + assignee: + self_assigned: '%{user_name} self-assigned this conversation' + assigned: 'Assigned to %{assignee_name} by %{user_name}' + removed: 'Conversation unassigned by %{user_name}' + team: + assigned: 'Assigned to %{team_name} by %{user_name}' + assigned_with_assignee: 'Assigned to %{assignee_name} via %{team_name} by %{user_name}' + removed: 'Unassigned from %{team_name} by %{user_name}' + labels: + added: '%{user_name} added %{labels}' + removed: '%{user_name} removed %{labels}' + sla: + added: '%{user_name} added SLA policy %{sla_name}' + removed: '%{user_name} removed SLA policy %{sla_name}' + linear: + issue_created: 'Linear issue %{issue_id} was created by %{user_name}' + issue_linked: 'Linear issue %{issue_id} was linked by %{user_name}' + issue_unlinked: 'Linear issue %{issue_id} was unlinked by %{user_name}' + whatsapp_call: + permission_requested: 'Sent a call permission request to %{contact_name}.' + permission_granted: '%{contact_name} accepted the call permission request.' + csat: + not_sent_due_to_messaging_window: 'CSAT survey not sent due to outgoing message restrictions' + auto_resolve: + not_sent_due_to_messaging_window: 'Auto-resolve message not sent due to outgoing message restrictions' + muted: '%{user_name} has muted the conversation' + unmuted: '%{user_name} has unmuted the conversation' + auto_resolution_message: 'Resolving the conversation as it has been inactive for a while. Please start a new conversation if you need further assistance.' + templates: + greeting_message_body: '%{account_name} typically replies in a few hours.' + ways_to_reach_you_message_body: 'Give the team a way to reach you.' + email_input_box_message_body: 'Get notified by email' + csat_input_message_body: 'Please rate the conversation' + reply: + email: + header: + notifications: 'Notifications' + from_with_name: '%{assignee_name} from %{inbox_name} <%{from_email}>' + reply_with_name: '%{assignee_name} from %{inbox_name} ' + friendly_name: '%{sender_name} from %{business_name} <%{from_email}>' + professional_name: '%{business_name} <%{from_email}>' + channel_email: + header: + reply_with_name: '%{assignee_name} from %{inbox_name} <%{from_email}>' + reply_with_inbox_name: '%{inbox_name} <%{from_email}>' + email_subject: 'New messages on this conversation' + transcript_subject: 'Conversation Transcript' + survey: + response: 'Please rate this conversation, %{link}' + contacts: + online: + delete: '%{contact_name} is Online, please try again later' + integration_apps: + #Note: webhooks and dashboard_apps don't need short_description as they use different modal components + dashboard_apps: + name: 'Dashboard Apps' + description: 'Dashboard Apps allow you to create and embed applications that display user information, orders, or payment history, providing more context to your customer support agents.' + dyte: + name: 'Cloudflare RealtimeKit' + short_description: 'Start video/voice calls with customers directly from Chatwoot.' + description: 'Cloudflare RealtimeKit lets your agents start video/voice calls with your customers directly from Chatwoot.' + meeting_name: '%{agent_name} has started a meeting' + slack: + name: 'Slack' + short_description: 'Receive notifications and respond to conversations directly in Slack.' + description: "Integrate Chatwoot with Slack to keep your team in sync. This integration allows you to receive notifications for new conversations and respond to them directly within Slack's interface." + webhooks: + name: 'Webhooks' + description: 'Webhook events provide real-time updates about activities in your Chatwoot account. You can subscribe to your preferred events, and Chatwoot will send you HTTP callbacks with the updates.' + dialogflow: + name: 'Dialogflow' + short_description: 'Build chatbots to handle initial queries before transferring to agents.' + description: 'Build chatbots with Dialogflow and easily integrate them into your inbox. These bots can handle initial queries before transferring them to a customer service agent.' + google_translate: + name: 'Google Translate' + short_description: 'Automatically translate customer messages for agents.' + description: "Integrate Google Translate to help agents easily translate customer messages. This integration automatically detects the language and converts it to the agent's or admin's preferred language." + openai: + name: 'OpenAI' + short_description: 'AI-powered reply suggestions, summarization, and message enhancement.' + description: 'Leverage the power of large language models from OpenAI with the features such as reply suggestions, summarization, message rephrasing, spell-checking, and label classification.' + linear: + name: 'Linear' + short_description: 'Create and link Linear issues directly from conversations.' + description: 'Create issues in Linear directly from your conversation window. Alternatively, link existing Linear issues for a more streamlined and efficient issue tracking process.' + attachment_link_title: 'Conversation (#%{conversation_id}) with %{name}' + notion: + name: 'Notion' + short_description: 'Integrate databases, documents and pages directly with Captain.' + description: 'Connect your Notion workspace to enable Captain to access and generate intelligent responses using content from your databases, documents, and pages to provide more contextual customer support.' + shopify: + name: 'Shopify' + short_description: 'Access order details and customer data from your Shopify store.' + description: 'Connect your Shopify store to access order details, customer information, and product data directly within your conversations and helps your support team provide faster, more contextual assistance to your customers.' + leadsquared: + name: 'LeadSquared' + short_description: 'Sync your contacts and conversations with LeadSquared CRM.' + description: 'Sync your contacts and conversations with LeadSquared CRM. This integration automatically creates leads in LeadSquared when new contacts are added, and logs conversation activity to provide your sales team with complete context.' + captain: + copilot_message_required: Message is required + copilot_error: 'Please connect an assistant to this inbox to use Copilot' + copilot_limit: 'You are out of Copilot credits. You can buy more credits from the billing section.' + upgrade: 'Upgrade your plan to enable Captain AI' + disabled: 'Captain AI is disabled for this account.' + api_key_missing: 'Captain AI API key is not configured.' + copilot: + using_tool: 'Using tool %{function_name}' + completed_tool_call: 'Completed %{function_name} tool call' + invalid_tool_call: 'Invalid tool call' + tool_not_available: 'Tool not available' + documents: + limit_exceeded: 'Document limit exceeded' + pdf_format_error: 'must be a PDF file' + pdf_size_error: 'must be less than 10MB' + sync_not_supported_for_pdf: 'Sync is not supported for PDF documents' + sync_only_available_documents: 'Sync is only available for processed documents' + sync_already_in_progress: 'Document sync is already in progress' + pdf_upload_failed: 'Failed to upload PDF to OpenAI' + pdf_upload_success: 'PDF uploaded successfully with file_id: %{file_id}' + pdf_processing_failed: 'Failed to process PDF document %{document_id}: %{error}' + pdf_processing_success: 'Successfully processed PDF document %{document_id}' + faq_generation_complete: 'FAQ generation complete. Total FAQs created: %{count}' + using_paginated_faq: 'Using paginated FAQ generation for document %{document_id}' + using_standard_faq: 'Using standard FAQ generation for document %{document_id}' + response_creation_error: 'Error in creating response document: %{error}' + missing_openai_file_id: 'Document must have openai_file_id for paginated processing' + openai_api_error: 'OpenAI API Error: %{error}' + starting_paginated_faq: 'Starting paginated FAQ generation (%{pages_per_chunk} pages per chunk)' + stopping_faq_generation: 'Stopping processing. Reason: %{reason}' + paginated_faq_complete: 'Paginated generation complete. Total FAQs: %{total_faqs}, Pages processed: %{pages_processed}' + processing_pages: 'Processing pages %{start}-%{end} (iteration %{iteration})' + chunk_generated: 'Chunk generated %{chunk_faqs} FAQs. Total so far: %{total_faqs}' + page_processing_error: 'Error processing pages %{start}-%{end}: %{error}' + custom_tool: + slug_generation_failed: 'Unable to generate unique slug after 5 attempts' + limit_exceeded: 'You can create a maximum of %{limit} custom tools per account' + public_portal: + search: + search_placeholder: Search for article by title or body... + empty_placeholder: No results found. + loading_placeholder: Searching... + results_title: Search results + results: Search Results + results_for: "Search Results for '%{query}'" + no_results: "No results found for '%{query}'" + found_results: + one: Found 1 result + other: 'Found %{count} results' + submit: Search + toc_header: 'On this page' + sidebar: + help_center: Help Center + categories: Categories + language: Language + theme: Theme + open_sidebar: Open sidebar + close_sidebar: Close sidebar + browse: Browse + back_to_category: Back to %{name} + browse_by_topic: Browse by topic + browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. + popular_articles: Popular articles + popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. + popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' + authors_others: "%{names} and %{count} others" + primary_nav: Primary + hero: + sub_title: Search for the articles here or browse the categories below. + common: + home: Home + last_updated_on: Last updated on %{last_updated_on} + view_all_articles: View all + article: article + articles: articles + author: author + authors: authors + other: other + others: others + by: By + no_articles: There are no articles here + previous: Previous + next: Next + article_actions: + label: Open in + view_markdown: View as Markdown + open_in_chatgpt: Open in ChatGPT + open_in_claude: Open in Claude + llm_prompt: "Read the following article and help me understand it: %{url}" + footer: + made_with: Made with + header: + go_to_homepage: Website + visit_website: Visit website + appearance: + title: Appearance + system: System + light: Light + dark: Dark + featured_articles: Featured Articles + recommended: Recommended articles + uncategorized: Uncategorized + 404: + title: Page not found + description: We couldn't find the page you were looking for. + back_to_home: Go to home page + not_active: + title: Help Center Unavailable + description: Please contact the site administrator for more information. + action: If you are the administrator, please upgrade your plan to restore access. + slack_unfurl: + fields: + name: Name + email: Email + phone_number: Phone + company_name: Company + inbox_name: Inbox + inbox_type: Inbox Type + button: Open conversation + time_units: + days: + one: '%{count} day' + other: '%{count} days' + hours: + one: '%{count} hour' + other: '%{count} hours' + minutes: + one: '%{count} minute' + other: '%{count} minutes' + seconds: + one: '%{count} second' + other: '%{count} seconds' + auto_assignment: + default_policy_name: 'Default Policy' + policy_actor: 'Automation System via %{policy_name}' + automation: + system_name: 'Automation System' + crm: + no_message: 'No messages in conversation' + attachment: '[Attachment: %{type}]' + no_content: '[No content]' + created_activity: | + New conversation started on %{brand_name} + + Channel: %{channel_info} + Created: %{formatted_creation_time} + Conversation ID: %{display_id} + View in %{brand_name}: %{url} + transcript_activity: | + Conversation Transcript from %{brand_name} + + Channel: %{channel_info} + Conversation ID: %{display_id} + View in %{brand_name}: %{url} + + Transcript: + %{format_messages} + agent_capacity_policy: + inbox_already_assigned: 'Inbox has already been assigned to this policy' + portals: + articles: + captain_not_available: 'Translation requires Captain to be enabled for this account' + locale_not_available: 'Locale not available in this portal' + category_not_found: 'Category not found in this portal' + no_articles_found: 'No articles found to process' + invalid_status: 'Invalid status value' + send_instructions: + email_required: 'Email is required' + invalid_email_format: 'Invalid email format' + custom_domain_not_configured: 'Custom domain is not configured' + instructions_sent_successfully: 'Instructions sent successfully' + subject: 'Finish setting up %{custom_domain}' + ssl_status: + custom_domain_not_configured: 'Custom domain is not configured' + super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Default' + features: + editor: 'Editor' + assistant: 'Assistant' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' + push_diagnostics: + user_not_found: 'User not found.' + no_subscriptions_to_test: 'Select at least one subscription to test.' + no_subscriptions_to_delete: 'Select at least one subscription to delete.' + subscriptions_deleted: "Deleted %{count} subscription(s). The user's device(s) will re-register on next app launch." diff --git a/config/locales/vi.yml b/config/locales/vi.yml index b6430287e..ab8fcdc4b 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -33,8 +33,33 @@ vi: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: Yêu cầu xoá hộp thư của bạn sẽ được xử lý. + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ vi: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: Kiểu dữ liệu không hợp lệ @@ -92,6 +122,15 @@ vi: unique: phải là duy nhất trong danh mục và cổng thông tin dyte: invalid_message_type: 'Loại tin nhắn không hợp lệ. Hành động không được phép' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: 'Invalid slack channel. Please try again' whatsapp: @@ -104,6 +143,7 @@ vi: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ vi: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -433,7 +476,10 @@ vi: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -469,6 +515,7 @@ vi: light: Light dark: Dark featured_articles: Featured Articles + recommended: Recommended articles uncategorized: Chưa được phân loại 404: title: Page not found @@ -539,6 +586,29 @@ vi: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: 'Mặc định' + features: + editor: 'Editor' + assistant: 'Trợ lý' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/zh_CN.yml b/config/locales/zh_CN.yml index 5d1bdef9f..4d585f1df 100644 --- a/config/locales/zh_CN.yml +++ b/config/locales/zh_CN.yml @@ -33,8 +33,33 @@ zh_CN: login_saml_user: This account uses SAML authentication. Please sign in through your organization's SAML provider. saml_not_available: SAML authentication is not available in this installation. inbox_deletetion_response: 您的收件箱删除请求将在一段时间内处理。 + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: is not a valid timezone support_email: @@ -64,9 +89,14 @@ zh_CN: file_too_large: 'File exceeds the maximum allowed size' unsupported_content_type: 'File type not supported (only images and videos are allowed)' unexpected: 'An unexpected error occurred' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: SAML feature not enabled for this account sso_not_enabled: SAML SSO is not enabled for this installation + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: 错误的数据类型 @@ -92,6 +122,15 @@ zh_CN: unique: 在类别和门户中应该是唯一的 dyte: invalid_message_type: '无效的消息类型。不允许操作' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: '无效的Slack频道。请重试' whatsapp: @@ -104,6 +143,7 @@ zh_CN: not_supported: 'Reauthorization is not supported for this type of WhatsApp channel.' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ zh_CN: invalid_token: Invalid or expired MFA token invalid_credentials: Invalid credentials or verification code feature_unavailable: MFA feature is not available. Please configure encryption keys. + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: Credits amount is required invalid_credits: Invalid credits amount @@ -433,7 +476,10 @@ zh_CN: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -469,6 +515,7 @@ zh_CN: light: 浅色 dark: 暗色 featured_articles: 精选文章 + recommended: Recommended articles uncategorized: 未分类 404: title: 页面不存在 @@ -539,6 +586,29 @@ zh_CN: ssl_status: custom_domain_not_configured: 'Custom domain is not configured' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: '默认' + features: + editor: 'Editor' + assistant: '助手' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.' diff --git a/config/locales/zh_TW.yml b/config/locales/zh_TW.yml index d51d86f29..df97573e5 100644 --- a/config/locales/zh_TW.yml +++ b/config/locales/zh_TW.yml @@ -33,8 +33,33 @@ zh_TW: login_saml_user: 此帳號使用 SAML 驗證,請透過您組織的 SAML 提供者登入。 saml_not_available: 此安裝尚未啟用 SAML 驗證。 inbox_deletetion_response: 您的收件匣刪除請求將在一段時間後處理。 + data_imports: + intercom: + activities: + assignment: '%{actor} assigned the conversation' + assignment_with_target: '%{actor} assigned the conversation to %{target}' + assign_and_reopen: '%{actor} assigned and reopened the conversation' + assign_and_reopen_with_target: '%{actor} assigned the conversation to %{target} and reopened it' + open: '%{actor} opened the conversation' + close: '%{actor} closed the conversation' + snoozed: '%{actor} snoozed the conversation' + participant_added: '%{actor} added a participant' + participant_added_with_target: '%{actor} added %{target} as a participant' + participant_removed: '%{actor} removed a participant' + participant_removed_with_target: '%{actor} removed %{target} as a participant' + conversation_attribute_updated: '%{actor} updated conversation attributes' + ticket_attribute_updated: '%{actor} updated ticket attributes' + ticket_state_updated: '%{actor} updated the ticket state' + custom_action_started: '%{actor} started a custom action' + custom_action_finished: '%{actor} finished a custom action' + quick_reply: '%{actor} used a quick reply' + generic: '%{actor} recorded %{event}' + profile_settings: + sessions: + cannot_revoke_current: You cannot revoke the current session. errors: account: + not_authorized: You are not authorized to access this account reporting_timezone: invalid: 不是有效的時區 support_email: @@ -64,9 +89,14 @@ zh_TW: file_too_large: '檔案超過允許的最大大小' unsupported_content_type: '不支援的檔案類型(僅允許圖片和影片)' unexpected: '發生未預期的錯誤' + database: + query_canceled: 'The request took too long to complete. Please try again.' saml: feature_not_enabled: 此帳號尚未啟用 SAML 功能 sso_not_enabled: 此安裝尚未啟用 SAML SSO + conversations: + unread_counts: + feature_not_enabled: Conversation unread counts feature not enabled for this account data_import: data_type: invalid: 無效的資料類型 @@ -92,6 +122,15 @@ zh_TW: unique: 在該分類與入口網站中應為唯一 dyte: invalid_message_type: '無效的訊息類型,不允許此操作' + realtimekit_credentials_required: 'Cloudflare RealtimeKit credentials are required. Delete the existing Dyte integration and create it again with Cloudflare RealtimeKit credentials.' + cloudflare: + realtimekit: + invalid_credentials: 'Cloudflare RealtimeKit credentials are invalid. Please check the Account ID, RealtimeKit App ID, and API token permissions.' + missing_credentials: 'Cloudflare Account ID, RealtimeKit App ID, and API token are required.' + invalid_api_token: 'Cloudflare API token is invalid or inactive. Please create a new token with Realtime Admin permissions.' + invalid_account_or_permissions: 'Cloudflare Account ID is invalid, or the API token does not have Realtime Admin access to this account.' + app_not_found: 'RealtimeKit App ID was not found in this Cloudflare account. Please check the app you selected.' + verification_failed: 'Could not verify Cloudflare RealtimeKit credentials right now. Please try again.' slack: invalid_channel_id: '無效的 Slack 頻道,請再試一次' whatsapp: @@ -104,6 +143,7 @@ zh_TW: not_supported: '此類型的 WhatsApp 頻道不支援重新授權。' calls: not_enabled: 'Calling is not enabled for this inbox' + already_ended: 'This call has already ended' no_recording: 'No recording file provided' no_message: 'Call has no associated message' sdp_offer_required: 'sdp_offer is required' @@ -142,6 +182,9 @@ zh_TW: invalid_token: 無效或已過期的 MFA 權杖 invalid_credentials: 無效的憑證或驗證碼 feature_unavailable: MFA 功能無法使用,請設定加密金鑰。 + billing: + invalid_currency: Invalid billing currency + currency_locked: Billing currency cannot be changed after billing has been set up topup: credits_required: 需填入儲值點數金額 invalid_credits: 無效的儲值點數金額 @@ -433,7 +476,10 @@ zh_TW: browse_by_topic_subtitle: Find guides, tutorials, and answers organised by category. popular_articles: Popular articles popular_articles_subtitle: What other people are reading right now. + recommended: Recommended articles + recommended_subtitle: Hand-picked articles to get you started. popular_label: 'Popular topics:' + recommended_label: 'Recommended topics:' authors_others: "%{names} and %{count} others" primary_nav: Primary hero: @@ -469,6 +515,7 @@ zh_TW: light: 淺色 dark: 深色 featured_articles: 精選文章 + recommended: Recommended articles uncategorized: 未分類 404: title: 找不到頁面 @@ -539,6 +586,29 @@ zh_TW: ssl_status: custom_domain_not_configured: '尚未設定自訂網域' super_admin: + captain_model_overrides: + form: + helper_text: 'Leave a model blank to use the YAML default for that AI feature.' + use_default: 'Use default: %{model} (%{model_id})' + show: + summary: 'View model routing' + provider: 'Provider' + model: 'Model' + sources: + account_override: 'Account override' + default: '預設' + features: + editor: 'Editor' + assistant: '助理' + copilot: 'Copilot' + label_suggestion: 'Label suggestion' + document_faq_generation: 'Document FAQ generation' + conversation_faq_generation: 'Conversation FAQ generation' + help_center_article_generation: 'Help center article generation' + onboarding_content_generation: 'Onboarding content generation' + help_center_query_translation: 'Help center query translation' + audio_transcription: 'Audio transcription' + help_center_search: 'Help center search' push_diagnostics: user_not_found: 'User not found.' no_subscriptions_to_test: 'Select at least one subscription to test.'