mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 09:14:58 +03:00
Онбординг из восьми шагов: приветствие, визард с точным путём и превью результата на каждом шаге, тур «Показать где» с подсветкой реального элемента и финальный экран. Точки возврата — ссылка внизу субменю «Настроек» и пилюля в углу рабочей области. Вёрстка по макету design/baseline/Онбординг. Признак «закрыл» и «прошёл» живёт на членстве человека в организации, а не в localStorage: требование — показать визард всем, кто его ещё не закрывал, включая тех, кто работает в установке давно. У каждого он свой, поэтому один администратор не прячет визард команде. Прогресс шагов считается по факту настройки, ручное «Далее» его не подменяет. Заодно все селекты приложения переведены на общее меню: SelectMenu в shared/ui-controls, поверх него FilterDropdown (фильтры списков) и SelectField (поля форм). Нативных <select> не осталось, вместе с ними ушли пять копий скина селекта. Изменения переплетены с онбордингом через общие файлы (словари, e2e-сценарии), поэтому одним коммитом. Устаревший design/design-system удалён: источник истины по интерфейсу — макеты design/baseline/<фича>/*.dc.html. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1648 lines
102 KiB
TypeScript
1648 lines
102 KiB
TypeScript
// English catalogue.
|
||
//
|
||
// Typed against the Russian one: a missing key fails `tsc`, so a screen cannot
|
||
// quietly fall back to Russian for an English-speaking operator.
|
||
|
||
import type { Message } from "@chatballs/shared";
|
||
|
||
import type { MessageKey } from "./ru";
|
||
|
||
export const en: Record<MessageKey, Message> = {
|
||
"admin.30_days": "30 days",
|
||
"admin.7_days": "7 days",
|
||
"admin.90_days": "90 days",
|
||
"admin.access": "Access",
|
||
"admin.access_block": "Access block",
|
||
"admin.access_recovery": "Access recovery",
|
||
"admin.account": "Account",
|
||
"admin.action_code": "Action code",
|
||
"admin.action_recorded_audit_log": "The action is recorded in the audit log",
|
||
"admin.activate": "Activate",
|
||
"admin.active_devices": "{count} devices",
|
||
"admin.active_sessions_ended": "Active sessions ended",
|
||
"admin.add_operator": "Add an operator",
|
||
"admin.all_operators": "All operators",
|
||
"admin.all_time": "All time",
|
||
"admin.atomic_operation_organization_keeps_exactly": "An atomic operation · the organization keeps exactly one owner",
|
||
"admin.audit_log_with_total": "Log of actions in the organization · {total}",
|
||
"admin.block": "Block",
|
||
"admin.block_operator": "Block the operator",
|
||
"admin.can_now_sign_with_new": "You can now sign in with the new password.",
|
||
"admin.cannot_scan_enter_key_manually": "Cannot scan it? Enter the key manually:",
|
||
"admin.change_address": "Change the address",
|
||
"admin.change_temporary_password": "Change the temporary password",
|
||
"admin.chat_only": "Chat only",
|
||
"admin.chatballs_mark_will_shown_menu": "The Chatballs mark will be shown in the menu again instead.",
|
||
"admin.check_email": "Check your email",
|
||
"admin.checking_link": "Checking the link",
|
||
"admin.checking_password_reset_link": "Checking the password reset link…",
|
||
"admin.close_form": "Close the form",
|
||
"admin.close_panel": "Close the panel",
|
||
"admin.code_did_not_match_try": "The code did not match. Try again",
|
||
"admin.code_from_authenticator_app": "Code from your authenticator app",
|
||
"admin.code_refreshes": "The code refreshes in",
|
||
"admin.confirm": "Confirm",
|
||
"admin.contact_support": "Contact support",
|
||
"admin.copied_close": "Copied, close",
|
||
"admin.could_not_create_organization": "Could not create the organization",
|
||
"admin.could_not_load_candidates": "Could not load the candidates",
|
||
"admin.could_not_load_data": "Could not load the data",
|
||
"admin.could_not_load_log": "Could not load the log",
|
||
"admin.could_not_load_operator_card": "Could not load the operator card",
|
||
"admin.could_not_load_operators": "Could not load the operators",
|
||
"admin.could_not_save_changes": "Could not save the changes",
|
||
"admin.could_not_save_password": "Could not save the password",
|
||
"admin.could_not_send_email": "Could not send the email",
|
||
"admin.create_operator": "Create the operator",
|
||
"admin.created": "Created",
|
||
"admin.creating": "Creating",
|
||
"admin.creation_failed": "Creation failed",
|
||
"admin.credentials": "Credentials",
|
||
"admin.credentials_role_groups": "Credentials · role · groups",
|
||
"admin.currency": "Currency",
|
||
"admin.danger_zone": "Danger zone",
|
||
"admin.e_g_operator": "e.g. Operator",
|
||
"admin.earlier": "Earlier",
|
||
"admin.elena_kuznetsova": "Elena Kuznetsova",
|
||
"admin.email_sent": "Email sent",
|
||
"admin.end_all": "End all",
|
||
"admin.end_sessions": "End the sessions",
|
||
"admin.ends_every_session_immediately_stops": "Ends every session immediately and stops HTTP and realtime actions. Audit records and authorship are kept. Requires confirmation.",
|
||
"admin.enter_6_digit_code_from": "Enter the 6-digit code from the authenticator app for",
|
||
"admin.enter_code_from_app": "Enter the code from the app",
|
||
"admin.enter_new_password": "Enter a new password",
|
||
"admin.enter_work_email_we_will": "Enter your work email and we will send a link to create a new password.",
|
||
"admin.fair_password": "Fair password",
|
||
"admin.first_access_password": "First-access password",
|
||
"admin.first_last_name": "First and last name",
|
||
"admin.first_password_goes_to": "The first-access password will be sent to {email}",
|
||
"admin.first_run_create_organization_owner": "First run: create the organization and the owner account",
|
||
"admin.follow_link_email_set_new": "Follow the link in the email to set a new password.",
|
||
"admin.former_owner_s_new_role": "The former owner's new role",
|
||
"admin.full_access_exactly_one_per": "Full access. Exactly one per organization. Changed only by transferring ownership.",
|
||
"admin.full_access_identical_owner_owner": "Full access, identical to the owner. The owner differs in one way only: they cannot be deleted.",
|
||
"admin.generate_show_me": "Generate and show it to me",
|
||
"admin.good_password": "Good password",
|
||
"admin.good_see": "Good to see you!",
|
||
"admin.group_decides_which_conversations_visible": "A group decides which conversations are visible and grants no rights.",
|
||
"admin.group_decides_which_conversations_visible_2": "A group decides which conversations are visible and grants no rights",
|
||
"admin.group_will_be_deleted": "“{name}” will be deleted; its conversations become “No group”.",
|
||
"admin.hide_password": "Hide the password",
|
||
"admin.i_understand_consequences_confirm_transfer": "I understand the consequences and confirm the transfer of organization ownership.",
|
||
"admin.if": "If",
|
||
"admin.if_address_registered_we_will": "If the address is registered, we will send a password reset link. The link is valid for 30 minutes.",
|
||
"admin.install_demo_data": "Install demo data",
|
||
"admin.last_password_change": "Last change: {date} · a new one can be emailed, or shown and copied",
|
||
"admin.last_sign": "Last sign-in",
|
||
"admin.link_does_not_work": "The link does not work",
|
||
"admin.link_has_expired_or_has": "The link has expired or has already been used.",
|
||
"admin.link_not_valid": "The link is not valid",
|
||
"admin.link_valid_30_minutes_one": "A link is valid for 30 minutes and for one use only. Request access recovery again.",
|
||
"admin.list_holds_active_administrators_only": "The list holds active administrators only. To transfer ownership to an operator, make them an administrator first.",
|
||
"admin.log_actions_organization": "Log of actions in the organization",
|
||
"admin.logo": "Logo",
|
||
"admin.logo_removed": "Logo removed",
|
||
"admin.logo_updated": "Logo updated",
|
||
"admin.main_details": "Main details",
|
||
"admin.mark_all_as_read": "Mark all as read",
|
||
"admin.member_count": "{count} staff",
|
||
"admin.name": "Your name",
|
||
"admin.name_email_or_position": "Name, email or position",
|
||
"admin.never_signed": "never signed in",
|
||
"admin.new_operator": "New operator",
|
||
"admin.new_owner_administrators_only": "New owner · administrators only",
|
||
"admin.new_owner_gains_full_access": "The new owner gains full access. You lose the owner's rights, including ownership transfer and administrator management. The operation is audited and can be undone only by another transfer.",
|
||
"admin.no_access_code": "No access to the code?",
|
||
"admin.no_email_after_couple_minutes": "No email after a couple of minutes? Check the spam folder or request again — the link is valid for 30 minutes.",
|
||
"admin.no_events_yet": "No events yet",
|
||
"admin.no_events_yet_2": "No events yet.",
|
||
"admin.no_notifications": "No notifications",
|
||
"admin.no_operators_found": "No operators found",
|
||
"admin.nord_atelier": "Nord Atelier",
|
||
"admin.nothing_matched_filters": "Nothing matched the filters",
|
||
"admin.notifications": "Notifications",
|
||
"admin.off_operator": "Off for this operator",
|
||
"admin.one_moment": "One moment.",
|
||
"admin.open_card": "Open the card",
|
||
"admin.resend_invitation": "Resend the invitation",
|
||
"admin.revoke_invitation": "Revoke the invitation",
|
||
"admin.invitation_valid_until": "Invited until {date}",
|
||
"admin.operator_blocked": "Operator blocked",
|
||
"admin.operator_blocked_cannot_sign_unblocking": "The operator is blocked and cannot sign in. Unblocking restores access according to their active assignments.",
|
||
"admin.operator_created": "Operator created",
|
||
"admin.operator_details_changed": "Operator details changed",
|
||
"admin.operator_gets_email_with_first": "The operator gets an email with a first sign-in link. Use this when the organization's email is configured and working.",
|
||
"admin.operator_groups_changed": "Operator groups changed",
|
||
"admin.operator_password_reset": "Operator password reset",
|
||
"admin.operator_s_active_sessions_were": "The operator's active sessions were ended; they will set their own password at the next sign-in.",
|
||
"admin.operator_unblocked": "Operator unblocked",
|
||
"admin.operators_agents_conversations_knowledge_fictional": "Operators, agents, conversations and knowledge of a fictional atelier — to see the system at work. Removed under Settings with one button.",
|
||
"admin.organization_details_saved": "Organization details saved",
|
||
"admin.organization_logo_alt": "{name} logo",
|
||
"admin.organization_name": "Organization name",
|
||
"admin.organization_ownership_transferred": "Organization ownership transferred",
|
||
"admin.owner": "→ Owner",
|
||
"admin.owner_admin_have_identical_rights": "OWNER and ADMIN have identical rights; EMPLOYEE works in chat only.",
|
||
"admin.owner_cannot_blocked_or_deleted": "The owner cannot be blocked or deleted, so their card carries no other dangerous actions.",
|
||
"admin.owner_cannot_deleted_blocked_or": "The owner cannot be deleted, blocked or given another role — the only way to change the owner's role is to transfer ownership.",
|
||
"admin.owner_s_role_changes_only": "The owner's role changes only by transferring ownership.",
|
||
"admin.ownership_passes_administrator_only_they": "Ownership passes to an administrator only: they already have full access, and after the transfer they gain the owner's protected actions. The operation is atomic, audited and requires confirmation.",
|
||
"admin.ownership_transfer": "Ownership transfer",
|
||
"admin.ownership_transfer_failed": "Ownership transfer failed",
|
||
"admin.password_appears_right_after_creation": "The password appears right after creation — copy it",
|
||
"admin.password_reset": "Password reset",
|
||
"admin.password_shown_once_after_creation": "The password is shown once after creation — copy it and hand it over in person. Use this when email does not arrive or the mailbox is not working yet.",
|
||
"admin.password_shown_once_not_stored": "The password is shown once and is not stored in the clear on the server. Copy it and hand it over in person — the operator changes it at the first sign-in. Once this window is closed, the only way back is another reset.",
|
||
"admin.password_was_changed_sign_chatballs": "The password was changed. Sign in to Chatballs with the new one.",
|
||
"admin.password_was_generated_shown_once": "The password was generated and is shown once — copy it now.",
|
||
"admin.people_count": "{count} people",
|
||
"admin.period": "Period",
|
||
"admin.png_jpeg_or_webp_up": "PNG, JPEG, WebP or SVG · up to 2 MB. Shown in the sidebar, the widget and emails.",
|
||
"admin.position_groups": "Position and groups",
|
||
"admin.qr_code_setting_up_totp": "QR code for setting up TOTP",
|
||
"admin.recover_access": "Recover access",
|
||
"admin.registered_with_chatballs_email_with": "is registered with Chatballs, an email with a password reset link has been sent to it.",
|
||
"admin.rejected": "Rejected",
|
||
"admin.remove_logo": "Remove the logo?",
|
||
"admin.repeat_password": "Repeat the password",
|
||
"admin.required_at_every_sign": "On · required at every sign-in",
|
||
"admin.reset_password": "Reset the password",
|
||
"admin.result": "Result",
|
||
"admin.roles_groups_showing": "Roles and groups · showing",
|
||
"admin.roles_groups_shown": "Roles and groups · showing {shown} of {total}",
|
||
"admin.russian_rouble_rub": "Russian rouble (RUB)",
|
||
"admin.save_sign": "Save and sign in",
|
||
"admin.scan_qr_code": "Scan the QR code",
|
||
"admin.scan_qr_code_authenticator_app": "Scan the QR code in your authenticator app, then confirm with a code",
|
||
"admin.search_by_action_object_or": "Search by action, object or operator…",
|
||
"admin.search_by_name_email_or": "Search by name, email or position…",
|
||
"admin.section": "Section",
|
||
"admin.secure_connection": "Secure connection",
|
||
"admin.see_every_conversation_organization_operators": "You see every conversation in the organization. Operators see only conversations of their groups, those without a group and those they are assigned to.",
|
||
"admin.send_by_email_instead": "Send by email instead",
|
||
"admin.send_email_again": "Send the email again",
|
||
"admin.send_link": "Send the link",
|
||
"admin.send_work_email": "Send to the work email",
|
||
"admin.set_new_password_sign_chatballs": "Set a new password to sign in to Chatballs.",
|
||
"admin.setting_up_two_factor_authentication": "Setting up two-factor authentication",
|
||
"admin.show_password": "Show the password",
|
||
"admin.sign": "Sign in",
|
||
"admin.sign_confirmation": "Sign-in confirmation",
|
||
"admin.signed_with_temporary_password_set": "You signed in with a temporary password. Set a permanent one to continue.",
|
||
"admin.start": "Start",
|
||
"admin.status_security": "Status and security",
|
||
"admin.strong_password": "Strong password",
|
||
"admin.succeeded": "Succeeded",
|
||
"admin.system_role": "System role",
|
||
"admin.system_role_changed": "System role changed",
|
||
"admin.there_no_active_administrators_transfer": "There are no active administrators. To transfer ownership to an operator, make them an administrator first.",
|
||
"admin.there_no_groups_yet_so": "There are no groups yet, so the operator will see every conversation. Groups are created under Settings.",
|
||
"admin.there_no_groups_yet_so_2": "There are no groups yet, so every operator sees every conversation.",
|
||
"admin.time": "Time",
|
||
"admin.time_zone": "Time zone",
|
||
"admin.toggle_totp": "Toggle TOTP",
|
||
"admin.transfer_ownership": "Transfer ownership",
|
||
"admin.transferring": "Transferring…",
|
||
"admin.two_factor_authentication_totp": "Two-factor authentication (TOTP)",
|
||
"admin.unblock": "Unblock",
|
||
"admin.unblock_operator": "Unblock the operator",
|
||
"admin.view_only": "View only",
|
||
"admin.weak_password": "Weak password",
|
||
"admin.with_no_groups_operator_sees": "With no groups the operator sees only conversations without a group. Groups can be changed later.",
|
||
"admin.work_email": "the work email",
|
||
"admin.work_email_2": "Work email",
|
||
"admin.work_email_used_sign": "Work email · used to sign in",
|
||
"admin.works_chat_sees_conversations_their": "Works in chat. Sees conversations of their groups, conversations without a group and those assigned to them.",
|
||
"admin.wrong_code_attempts_left_2": "Wrong code. Attempts left: 2",
|
||
"admin.wrong_email_or_password_check": "Wrong email or password. Check the details and try again.",
|
||
"admin.yesterday": "Yesterday",
|
||
"ai.action": "ACTION",
|
||
"ai.active": "active",
|
||
"ai.add_category": "Add a category",
|
||
"ai.add_key_under_settings_ai": "Add a key under Settings → AI provider and pick a provider in the Model block. Until then the agent's conversations wait for a person.",
|
||
"ai.add_knowledge_item": "Add a knowledge item",
|
||
"ai.add_material_by_hand_or": "Add material by hand or load a batch from YAML. An empty category with nothing nested can be deleted under Manage.",
|
||
"ai.add_nested_one": "Add a nested one",
|
||
"ai.agent": "AGENT",
|
||
"ai.agent_2": "Agent:",
|
||
"ai.agent_actions": "Agent actions",
|
||
"ai.agent_answers_customers_first_collects": "The agent answers customers first and collects the conversations into a group",
|
||
"ai.agent_answers_customers_first_create": "The agent answers customers first. Create your first one",
|
||
"ai.agent_answers_only_from_selected": "The agent answers only from the selected material: library knowledge and published portal articles.",
|
||
"ai.agent_cannot_deleted_has_conversations": "This agent cannot be deleted: it has conversations or connections. Detach the connections and close the conversations.",
|
||
"ai.agent_not_found": "Agent not found",
|
||
"ai.agent_quotes_title_its_reply": "The agent quotes the title in its reply to the customer — write it as an answer, not as a folder name.",
|
||
"ai.agent_s_replies": "In the agent's replies",
|
||
"ai.agent_will_be_deleted": "The agent “{name}” will be deleted for good. Conversations and connections block deletion.",
|
||
"ai.ai_cannot_reply_no_provider": "AI cannot reply: no provider is selected",
|
||
"ai.ai_off_agent": "AI is off for this agent",
|
||
"ai.ai_replies_attached": "AI replies · {count} attached",
|
||
"ai.all_categories_shown": "all categories are shown",
|
||
"ai.all_knowledge": "All knowledge",
|
||
"ai.already_attached_agent": "is already attached to this agent",
|
||
"ai.any": "Any",
|
||
"ai.article_meta": "article",
|
||
"ai.assignment": "Assignment",
|
||
"ai.attach_agent": "Attach to an agent",
|
||
"ai.attach_detach_note": "Attaching and detaching happen only through “Attach to an agent”: the operation is atomic and written to the log.",
|
||
"ai.attachment_agent_hands_link_customer": "attachment · the agent hands the link to the customer",
|
||
"ai.attachments": "ATTACHMENTS",
|
||
"ai.attachments_2": "Attachments",
|
||
"ai.available": "available",
|
||
"ai.bind": "Bind",
|
||
"ai.bold": "Bold",
|
||
"ai.can_switched_off_without_deleting": "can be switched off without deleting",
|
||
"ai.cannot_delete_because": "Cannot be deleted: {reason}",
|
||
"ai.cannot_delete_named": "“{name}” cannot be deleted: {reason}. Move its contents out first.",
|
||
"ai.categories": "CATEGORIES",
|
||
"ai.categories_do_not_nest_deeper": "Categories do not nest deeper than three levels",
|
||
"ai.category": "Category",
|
||
"ai.category_cannot_moved_inside_itself": "A category cannot be moved inside itself.",
|
||
"ai.category_empty_will_delete": "The category “{name}” is empty and will be deleted.",
|
||
"ai.category_file_matches_current_one": "the category in the file matches the current one",
|
||
"ai.category_has_no_items": "The category “{name}” has no knowledge yet",
|
||
"ai.category_named": "category “{name}”",
|
||
"ai.category_not_empty": "the category is not empty",
|
||
"ai.changed_by_bulk_action": "changed by a bulk action",
|
||
"ai.characters_and_chunks": "{characters} characters · ≈{chunks}",
|
||
"ai.characters_count": "{count} characters",
|
||
"ai.chunks": "CHUNKS",
|
||
"ai.chunks_and_characters": "chunks · {characters} characters",
|
||
"ai.chunks_rebuilt_at": "{chunks} · rebuilt {date}",
|
||
"ai.chunks_rebuilt_save_while_rebuild": "Chunks are rebuilt on save. While the rebuild runs, the agent answers from the previous version.",
|
||
"ai.clear_filters_or_change_query": "Clear the filters or change the query — the material may sit in other categories.",
|
||
"ai.clear_selection": "Clear the selection",
|
||
"ai.code": "Code",
|
||
"ai.connection_already_bound_another_agent": "The connection is already bound to another agent",
|
||
"ai.copy_as_markdown": "Copy as Markdown",
|
||
"ai.copy_snippet": "Copy the snippet",
|
||
"ai.could_not_bind_connection": "Could not bind the connection",
|
||
"ai.could_not_change_agent_s": "Could not change the agent's knowledge",
|
||
"ai.could_not_change_ai_status": "Could not change the AI status",
|
||
"ai.could_not_change_participation_replies": "Could not change participation in replies",
|
||
"ai.could_not_create_agent": "Could not create the agent",
|
||
"ai.could_not_delete_agent": "Could not delete the agent",
|
||
"ai.could_not_delete_attachment": "Could not delete the attachment",
|
||
"ai.could_not_delete_knowledge_item": "Could not delete the knowledge item",
|
||
"ai.could_not_detach_connection": "Could not detach the connection",
|
||
"ai.could_not_import": "Could not import",
|
||
"ai.could_not_load_agents": "Could not load the agents",
|
||
"ai.could_not_load_categories": "Could not load the categories",
|
||
"ai.could_not_load_categories_knowledge": "Could not load the categories and knowledge",
|
||
"ai.could_not_load_knowledge": "Could not load the knowledge",
|
||
"ai.could_not_load_knowledge_item": "Could not load the knowledge item",
|
||
"ai.could_not_load_material_list": "Could not load the material list",
|
||
"ai.could_not_move_knowledge_item": "Could not move the knowledge item",
|
||
"ai.could_not_move_knowledge_items": "Could not move the knowledge items",
|
||
"ai.could_not_read_file": "Could not read the file",
|
||
"ai.could_not_reindex_knowledge_item": "Could not reindex the knowledge item",
|
||
"ai.could_not_save_knowledge_item": "Could not save the knowledge item",
|
||
"ai.could_not_save_selection": "Could not save the selection",
|
||
"ai.could_not_upload_file": "Could not upload {name}",
|
||
"ai.count_create": "create {count}",
|
||
"ai.count_error": "error {count}",
|
||
"ai.count_update": "update {count}",
|
||
"ai.create": "create",
|
||
"ai.create_2": "Create",
|
||
"ai.created": "Created:",
|
||
"ai.created_on": "created {date}",
|
||
"ai.creating": "Creating…",
|
||
"ai.customers_reach_agent_through_these": "Customers reach the agent through these. One connection, one agent.",
|
||
"ai.daily_limit": "Daily limit",
|
||
"ai.delete_agent": "Delete the agent",
|
||
"ai.delete_agent_2": "Delete the agent?",
|
||
"ai.delete_attachment": "Delete the attachment",
|
||
"ai.delete_category": "Delete the category",
|
||
"ai.delete_knowledge_item": "Delete the knowledge item",
|
||
"ai.delete_knowledge_item_2": "Delete the knowledge item?",
|
||
"ai.delete_selected_knowledge_items": "Delete the selected knowledge items?",
|
||
"ai.detach_from_agent": "Detach from the agent",
|
||
"ai.discard_edits": "Discard the edits",
|
||
"ai.document": "DOCUMENT",
|
||
"ai.document_category_path_empty_level": "Document #{index}: “categoryPath” has an empty level",
|
||
"ai.document_category_path_list": "Document #{index}: “categoryPath” must be a non-empty list",
|
||
"ai.document_content_empty": "Document #{index}: the required field “content” is empty",
|
||
"ai.document_must_be_object": "Document #{index}: must be an object",
|
||
"ai.document_title_empty": "Document #{index}: the required field “title” is empty",
|
||
"ai.documents_must_non_empty_list": "documents must be a non-empty list",
|
||
"ai.drag": "Drag",
|
||
"ai.drag_files_here": "Drag files here",
|
||
"ai.drop_attach_item": "Drop it to attach it to the item",
|
||
"ai.editor_only": "Editor only",
|
||
"ai.edits_not_saved_chunks_rebuilt": "The edits are not saved — chunks are rebuilt after you press Save",
|
||
"ai.empty": "empty",
|
||
"ai.empty_item_never_reaches_replies": "An empty item never reaches replies.",
|
||
"ai.error": "error",
|
||
"ai.everything_saved": "Everything is saved",
|
||
"ai.example_calmly_politely_formal_address": "For example: calmly and politely, formal address",
|
||
"ai.example_do_not_quote_prices": "For example: do not quote prices, refer to a consultant",
|
||
"ai.example_front_desk": "For example: Front desk",
|
||
"ai.file_becomes_attachment_link_text": "The file becomes an attachment and a link in the text, which the agent hands to the customer. PNG, JPG, PDF, DOCX, XLSX · up to 25 MB",
|
||
"ai.file_not_parsed": "{size} · the file was not parsed",
|
||
"ai.file_parsed_before_anything_applied": "The file is parsed before anything is applied: you see what will be created, what updated and where the error is.",
|
||
"ai.file_parsed_ok": "{size} · {count} · parsed with no format errors",
|
||
"ai.fragment_number": "Chunk {number}",
|
||
"ai.fragments_note": "The agent answers with matching chunks rather than the whole text. On save this item will be split into {chunks}.",
|
||
"ai.free": "Free",
|
||
"ai.free_connection": "Free connection",
|
||
"ai.give_title_category": "Give it a title and a category",
|
||
"ai.group_decides_which_operators_see": "The group decides which operators see the agent's conversations; without a group they are visible to everyone.",
|
||
"ai.has_nested_categories": "it has nested categories",
|
||
"ai.heading_1": "Heading 1",
|
||
"ai.heading_2": "Heading 2",
|
||
"ai.helps_search_agent": "· helps search and the agent",
|
||
"ai.how_agent_quotes": "How the agent quotes it",
|
||
"ai.how_agent_will_answer": "HOW THE AGENT WILL ANSWER",
|
||
"ai.how_agent_will_answer_2": "How the agent will answer",
|
||
"ai.how_should_speak": "How it should speak",
|
||
"ai.import_documents": "Import {count}",
|
||
"ai.import_finished": "Import finished",
|
||
"ai.import_never_creates_categories_implicitly": "Import never creates categories implicitly: a document with a non-existent",
|
||
"ai.import_path_tail": "is rejected on its own, the rest are applied. Without a path a document lands in “No category”.",
|
||
"ai.index_up_date": "The index is up to date",
|
||
"ai.indexing": "INDEXING",
|
||
"ai.insert_link_into_text": "Insert a link into the text",
|
||
"ai.instructions": "instructions",
|
||
"ai.instructions_2": "Instructions",
|
||
"ai.internal_material": "INTERNAL MATERIAL",
|
||
"ai.invalid_yaml": "Invalid YAML",
|
||
"ai.invalid_yaml_reason": "Invalid YAML: {reason}",
|
||
"ai.italic": "Italic",
|
||
"ai.item_and_files_deleted": "“{title}” and its attachments will be deleted. Agents it is attached to will stop using it in replies.",
|
||
"ai.item_attached_no_agent_so": "This item is attached to no agent, so it is never used in replies.",
|
||
"ai.items_and_files_deleted": "{count} and their attachments will be deleted. Agents they are attached to will stop using them in replies.",
|
||
"ai.knowledge": "Knowledge",
|
||
"ai.knowledge_item": "KNOWLEDGE ITEM",
|
||
"ai.knowledge_item_title": "Knowledge item title",
|
||
"ai.knowledge_item_title_2": "Knowledge item title",
|
||
"ai.knowledge_item_title_without_description": "Knowledge item title without a description",
|
||
"ai.library_lead": "Material for AI agents: policies, price lists, scripts. An agent answers only from switched-on knowledge attached to it. Customers never see it — public material lives in portals.",
|
||
"ai.library_note": "{count} · {shown} shown · the agent answers only from switched-on, attached ones",
|
||
"ai.link": "Link",
|
||
"ai.link_text": "· link in the text",
|
||
"ai.links_go_out_agent_s": "links go out in the agent's reply",
|
||
"ai.list": "List",
|
||
"ai.manage": "Manage",
|
||
"ai.material_import": "Material import",
|
||
"ai.missing_category_path": "there is no category “{name}” — import never creates categories. Create it or drop the last level of the path.",
|
||
"ai.move": "Move",
|
||
"ai.move_category": "Move to a category",
|
||
"ai.name_group_all_takes_start": "A name and a group are all it takes to start. Instructions, knowledge and connections are set later on the card.",
|
||
"ai.name_unique_within_its_parent": "The name is unique within its parent.",
|
||
"ai.no_agents_yet": "No agents yet.",
|
||
"ai.no_ai": "no AI",
|
||
"ai.no_ai_2": "No AI",
|
||
"ai.no_ai_knowledge_not_used": "No AI — knowledge is not used",
|
||
"ai.no_attachments": "No attachments.",
|
||
"ai.no_category_system_one_cannot": "“No category” is a system one: it cannot be renamed or deleted.",
|
||
"ai.no_conversations": "no conversations",
|
||
"ai.no_file_selected": "No file selected",
|
||
"ai.no_knowledge_attached_so_agent": "No knowledge is attached, so the agent answers from instructions alone. Pick articles from the library or a support portal.",
|
||
"ai.no_knowledge_item_selected": "No knowledge item selected",
|
||
"ai.no_knowledge_yet": "No knowledge yet",
|
||
"ai.not_attached": "not attached",
|
||
"ai.not_attached_agent": "is not attached to this agent",
|
||
"ai.not_checked": "Not checked",
|
||
"ai.not_given": "not given",
|
||
"ai.not_replies": "not in replies",
|
||
"ai.not_selected": "Not selected",
|
||
"ai.not_used_replies": "Not used in replies",
|
||
"ai.note": "NOTE",
|
||
"ai.nothing_selected": "nothing selected",
|
||
"ai.numbered_list": "Numbered list",
|
||
"ai.off": "Off",
|
||
"ai.one_step_instructions_model_knowledge": "One step. Instructions, model, knowledge and connections come later, on the agent card.",
|
||
"ai.only_empty_category_with_nothing": "Only an empty category with nothing nested can be deleted.",
|
||
"ai.open": "Open",
|
||
"ai.open_knowledge_item": "Open the knowledge item",
|
||
"ai.open_settings": "Open the settings",
|
||
"ai.operation_atomic_if_any_identifier": "The operation is atomic: if any identifier is unavailable, nothing changes. Requires the right",
|
||
"ai.or": "or",
|
||
"ai.paste_before_lt_body_gt": "Paste it before </body> on your site",
|
||
"ai.persona": "persona",
|
||
"ai.pick_another_file": "Pick another file",
|
||
"ai.pick_file": "Pick a file",
|
||
"ai.pick_provider": "pick a provider",
|
||
"ai.pick_them_from_disk": "pick them from disk",
|
||
"ai.portal_named": "Portal · {name}",
|
||
"ai.preview": "Preview",
|
||
"ai.preview_of": "PREVIEW · {what}",
|
||
"ai.preview_only": "Preview only",
|
||
"ai.provider": "Provider",
|
||
"ai.provider_key_lives_under_settings": "The provider key lives under Settings → AI provider. The model is chosen from the provider's catalogue.",
|
||
"ai.quote": "Quote",
|
||
"ai.reindex": "Reindex",
|
||
"ai.rename": "Rename",
|
||
"ai.replies": "In replies:",
|
||
"ai.replies_2": "IN REPLIES",
|
||
"ai.rules": "Rules",
|
||
"ai.save_reindex": "Save and reindex",
|
||
"ai.saving": "Saving…",
|
||
"ai.search_by_title": "Search by title",
|
||
"ai.search_by_title_description": "Search by title and description",
|
||
"ai.select": "Select",
|
||
"ai.select_every_knowledge_item_page": "Select every knowledge item on the page",
|
||
"ai.select_item": "Select “{title}”",
|
||
"ai.select_knowledge": "Select knowledge",
|
||
"ai.selected": "selected",
|
||
"ai.selected_category_note": "{count} selected. A category decides placement in the tree and does not affect the agent's replies.",
|
||
"ai.selected_one_agent_note": "{count} selected. One agent per operation, so it is clear what actually changed.",
|
||
"ai.short_description": "Short description",
|
||
"ai.short_description_optional": "Short description (optional)",
|
||
"ai.side_by_side": "Side by side",
|
||
"ai.skips_summary": "{skipped} of {total} will be skipped:",
|
||
"ai.skips_tail": "The agent's knowledge will not change for those.",
|
||
"ai.start_ai": "Start AI",
|
||
"ai.stop_ai": "Stop AI",
|
||
"ai.switch_off_replies": "Switch off in replies",
|
||
"ai.switch_replies": "Switch on in replies",
|
||
"ai.switched_off_item_never_reaches": "a switched-off item never reaches retrieval",
|
||
"ai.switched_off_replies": "is switched off in replies",
|
||
"ai.system": "system",
|
||
"ai.system_category": "system category",
|
||
"ai.system_category_cannot_renamed": "A system category cannot be renamed",
|
||
"ai.system_prompt_assembled_from_three": "The system prompt is assembled from three parts in this order",
|
||
"ai.table": "Table",
|
||
"ai.template": "Template",
|
||
"ai.template_content": "The main text of the knowledge item.",
|
||
"ai.template_description": "Short description (optional)",
|
||
"ai.template_title": "Knowledge item title",
|
||
"ai.template_title_no_description": "Knowledge item title without a description",
|
||
"ai.text": "Text",
|
||
"ai.text_preview": "Text and preview",
|
||
"ai.there_no_agents_yet_create": "There are no agents yet — create one to attach knowledge to it.",
|
||
"ai.there_unsaved_changes_they_take": "There are unsaved changes — they take effect in the runtime at once",
|
||
"ai.there_unsaved_edits": "There are unsaved edits",
|
||
"ai.title_matched_text_will_replaced": "the title matched — the text will be replaced and the chunks rebuilt",
|
||
"ai.today": "today",
|
||
"ai.tone": "tone",
|
||
"ai.top_level_category": "Top-level category",
|
||
"ai.top_level_object_with_documents": "A top-level object with a documents key is expected",
|
||
"ai.tree_up_three_levels_deep": "A tree up to three levels deep. Drag a row to change its parent or its order.",
|
||
"ai.turn": "Turn on",
|
||
"ai.turn_agent": "Turn the agent on",
|
||
"ai.turn_agent_off": "Turn the agent off",
|
||
"ai.turn_off": "Turn off",
|
||
"ai.unbind": "Unbind",
|
||
"ai.unchanged": "· Unchanged:",
|
||
"ai.undo": "Undo",
|
||
"ai.untitled": "Untitled",
|
||
"ai.up_25_mb": "· up to 25 MB",
|
||
"ai.update": "update",
|
||
"ai.updated": "· Updated:",
|
||
"ai.updated_2": "UPDATED",
|
||
"ai.updated_by_at": "updated by {name} · {date}",
|
||
"ai.updated_on": "updated {date}",
|
||
"ai.used_replies": "Used in replies",
|
||
"ai.what_will_happen": "What will happen",
|
||
"ai.who_what_does": "Who it is and what it does",
|
||
"ai.widget_embed_snippet": "Widget embed snippet",
|
||
"ai.will_attached_after_saving": "will be attached after saving",
|
||
"ai.will_land_no_category": "will land in “No category”",
|
||
"ai.without_group_conversations_visible_everyone": "Without a group the conversations are visible to everyone",
|
||
"ai.working_rules": "Working rules",
|
||
"ai.yaml_import": "YAML import",
|
||
"ai.yaml_shaped_as_documents_title": "YAML shaped as documents: [{ title, description?, content, categoryPath? }]",
|
||
"common.action": "Action",
|
||
"common.actions": "Actions",
|
||
"common.actions_for": "Actions: {name}",
|
||
"common.active_sessions": "Active sessions",
|
||
"common.administrator": "Administrator",
|
||
"common.agent": "Agent",
|
||
"common.agents": "Agents",
|
||
"common.agents_2": "AGENTS",
|
||
"common.all": "All",
|
||
"common.appearance": "Appearance",
|
||
"common.archive": "Archive",
|
||
"common.assignee": "Assignee",
|
||
"common.at_least_10_characters": "At least 10 characters",
|
||
"common.at_least_10_characters_long": "At least 10 characters long",
|
||
"common.attach": "Attach",
|
||
"common.attach_file": "Attach a file",
|
||
"common.audit": "Audit",
|
||
"common.back_sign": "Back to sign-in",
|
||
"common.cancel": "Cancel",
|
||
"common.categories": "Categories",
|
||
"common.category": "CATEGORY",
|
||
"common.channels": "Channels",
|
||
"common.chat": "Chat",
|
||
"common.city": "City",
|
||
"common.close": "Close",
|
||
"common.company": "Company",
|
||
"common.connected": "Connected",
|
||
"common.connections": "Connections",
|
||
"common.contact": "Contact",
|
||
"common.contacts": "Contacts",
|
||
"common.contains_digit": "Contains a digit",
|
||
"common.conversations": "Conversations",
|
||
"common.copied": "Copied",
|
||
"common.copy": "Copy",
|
||
"common.copy_clipboard": "Copy to clipboard",
|
||
"common.could_not_complete_action": "Could not complete the action",
|
||
"common.could_not_save": "Could not save",
|
||
"common.delete": "Delete",
|
||
"common.description": "Description",
|
||
"common.detach": "Detach",
|
||
"common.done": "Done",
|
||
"common.download": "Download",
|
||
"common.draft": "Draft",
|
||
"common.edit": "Edit",
|
||
"common.edit_item": "Edit item",
|
||
"common.emoji": "Emoji",
|
||
"common.error": "Error",
|
||
"common.full_access": "Full access",
|
||
"common.group": "Group",
|
||
"common.groups": "Groups",
|
||
"common.hide": "Hide",
|
||
"common.history": "History",
|
||
"common.integrations": "Integrations",
|
||
"common.just_now": "just now",
|
||
"common.knowledge_base": "Knowledge base",
|
||
"common.letters_special_character": "Letters and a special character",
|
||
"common.model": "Model",
|
||
"common.more": "More",
|
||
"common.move_archive": "Move to archive",
|
||
"common.n_of_m": "{selected} of {total}",
|
||
"common.name": "Name",
|
||
"common.never_saved_yet": "Never saved yet",
|
||
"common.new_password": "New password",
|
||
"common.no_group": "No group",
|
||
"common.nothing_found": "Nothing found",
|
||
"common.notifications": "Notifications",
|
||
"common.object": "Object",
|
||
"common.off": "Off",
|
||
"common.off_2": "Off",
|
||
"common.on": "On",
|
||
"common.on_2": "On",
|
||
"common.operator": "Operator",
|
||
"common.operators": "Operators",
|
||
"common.owner": "Owner",
|
||
"common.password": "Password",
|
||
"common.password_requirements": "PASSWORD REQUIREMENTS",
|
||
"common.passwords_do_not_match": "The passwords do not match",
|
||
"common.phone": "Phone",
|
||
"common.photo": "Photo",
|
||
"common.portals": "Portals",
|
||
"common.position": "Position",
|
||
"common.profile": "Profile",
|
||
"common.publish": "Publish",
|
||
"common.range_of": "{from}–{to} of {total}",
|
||
"common.remove": "Remove",
|
||
"common.remove_file": "Remove the file",
|
||
"common.repeat_new_password": "Repeat the new password",
|
||
"common.reply": "Reply",
|
||
"common.request_failed": "Request failed",
|
||
"common.reset": "Reset",
|
||
"common.role": "Role",
|
||
"common.save": "Save",
|
||
"common.saving": "Saving",
|
||
"common.selected_count": "{count} selected",
|
||
"common.selected_of": "{selected} of {total} selected",
|
||
"common.sending": "Sending…",
|
||
"common.settings": "Settings",
|
||
"common.show": "Show",
|
||
"common.shown_of": "Showing {shown} of {total}",
|
||
"common.shown_of_page": "Showing {shown} of {total} · {size} per page",
|
||
"common.sign_out": "Sign out",
|
||
"common.status": "Status",
|
||
"common.status_2": "STATUS",
|
||
"common.title": "Title",
|
||
"common.today": "Today",
|
||
"common.try_again": "Try again",
|
||
"common.upload": "Upload",
|
||
"common.uploading_percent": "uploading… {percent} %",
|
||
"common.web_widget": "Web widget",
|
||
"common.web_widget_2": "Web widget",
|
||
"common.yesterday": "yesterday",
|
||
"common.you": "· you",
|
||
"common.you_suffix": " · you",
|
||
"conversations.active_call": "Active call",
|
||
"conversations.add": "Add",
|
||
"conversations.ai_handling_conversation_message_takes": "AI is handling this conversation. Your message takes it over and AI stops replying",
|
||
"conversations.ai_replying": "AI is replying",
|
||
"conversations.ai_transcript": "AI transcript ·",
|
||
"conversations.allow_device_access_browser_settings": "Allow device access in the browser settings and try again.",
|
||
"conversations.another_operator_handling": "Another operator is handling it",
|
||
"conversations.another_operator_handling_conversation": "Another operator is handling this conversation",
|
||
"conversations.audio_call": "Audio call",
|
||
"conversations.audio_call_2": "audio call",
|
||
"conversations.back_conversation_list": "Back to the conversation list",
|
||
"conversations.by_last_message": "By last message",
|
||
"conversations.by_waiting_time": "By waiting time",
|
||
"conversations.call_again": "Call again",
|
||
"conversations.call_back": "Call back",
|
||
"conversations.call_cancelled": "Call cancelled",
|
||
"conversations.call_declined": "Call declined",
|
||
"conversations.call_declined_by": "{name} declined the call.",
|
||
"conversations.call_ended": "Call ended",
|
||
"conversations.call_unanswered_by": "{name} did not answer the call.",
|
||
"conversations.camera_off": "The camera is off",
|
||
"conversations.camera_unavailable": "The camera is unavailable",
|
||
"conversations.cancel_recording": "Cancel the recording",
|
||
"conversations.caption_file_optional": "Caption for the file (optional)…",
|
||
"conversations.check_again": "Check again",
|
||
"conversations.check_camera_microphone": "Check the camera and microphone",
|
||
"conversations.check_internet_connection_try_again": "Check your internet connection and try again.",
|
||
"conversations.close_conversation": "Close the conversation",
|
||
"conversations.close_esc": "Close · Esc",
|
||
"conversations.closed_by": "Closed · {name}",
|
||
"conversations.collapse": "Collapse",
|
||
"conversations.connecting": "Connecting",
|
||
"conversations.connecting_call": "Connecting the call",
|
||
"conversations.conversation": "Conversation",
|
||
"conversations.conversation_actions": "Conversation actions",
|
||
"conversations.conversation_closed": "The conversation is closed",
|
||
"conversations.conversation_context": "Conversation context",
|
||
"conversations.conversation_has_ended": "The conversation has ended.",
|
||
"conversations.conversation_list_width": "Conversation list width",
|
||
"conversations.conversation_moves_archive_leaves_lists": "The conversation moves to the archive and leaves the lists. Only administrators see the archive.",
|
||
"conversations.conversation_will_closed_replies_stay": "The conversation will be closed for replies and stay in history marked “Spam”.",
|
||
"conversations.conversation_without_group_visible_every": "A conversation without a group is visible to every operator.",
|
||
"conversations.conversations_appear_once_customers_write": "Conversations appear once customers write to your agent",
|
||
"conversations.could_not_add_label": "Could not add the label",
|
||
"conversations.could_not_cancel_call": "Could not cancel the call",
|
||
"conversations.could_not_connect": "Could not connect",
|
||
"conversations.could_not_delete_conversation": "Could not delete the conversation",
|
||
"conversations.could_not_load_conversation": "Could not load the conversation",
|
||
"conversations.could_not_load_conversation_history": "Could not load the conversation history",
|
||
"conversations.could_not_load_conversation_list": "Could not load the conversation list",
|
||
"conversations.could_not_load_earlier_messages": "Could not load the earlier messages",
|
||
"conversations.could_not_load_more_conversations": "Could not load more conversations",
|
||
"conversations.could_not_play": "Could not play it",
|
||
"conversations.could_not_refresh_conversation_history": "Could not refresh the conversation history",
|
||
"conversations.could_not_refresh_conversation_list": "Could not refresh the conversation list",
|
||
"conversations.could_not_request_call": "Could not request the call",
|
||
"conversations.could_not_send_message": "Could not send the message",
|
||
"conversations.could_not_send_voice_message": "Could not send the voice message",
|
||
"conversations.could_not_transcribe": "Could not transcribe it",
|
||
"conversations.customer": "Customer",
|
||
"conversations.customer_waiting_message_assigns_conversation": "The customer is waiting. Your message assigns the conversation to you",
|
||
"conversations.delete_conversation": "Delete the conversation",
|
||
"conversations.delete_conversation_2": "Delete the conversation?",
|
||
"conversations.edit_note": "Edit the note",
|
||
"conversations.email_content": "Email content",
|
||
"conversations.establishing_secure_connection": "Establishing a secure connection…",
|
||
"conversations.file": "File",
|
||
"conversations.file_named": "File · {name}",
|
||
"conversations.file_over_20_mb": "The file is over 20 MB",
|
||
"conversations.file_unavailable": "The file “{name}” is unavailable",
|
||
"conversations.finish_current_call_first": "End the current {kind} first",
|
||
"conversations.g": "G",
|
||
"conversations.go_ahead": "Go ahead",
|
||
"conversations.guest": "Guest",
|
||
"conversations.guest_number": "Guest {id}",
|
||
"conversations.hand_back_ai": "Hand back to AI",
|
||
"conversations.handled_by": "{name} is handling the conversation",
|
||
"conversations.handled_by_short": "{name} is handling it",
|
||
"conversations.handling": "You are handling it",
|
||
"conversations.hide_list": "Hide the list",
|
||
"conversations.high": "High",
|
||
"conversations.history_kept_next_time_customer": "The history is kept. The next time the customer writes, a new conversation starts.",
|
||
"conversations.incoming_call": "Incoming call",
|
||
"conversations.internal_note_customer_does_not": "An internal note — the customer does not see it",
|
||
"conversations.invitation_was_cancelled": "The invitation was cancelled.",
|
||
"conversations.labels": "Labels",
|
||
"conversations.low": "Low",
|
||
"conversations.mark_as_spam": "Mark as spam",
|
||
"conversations.mark_conversation_as_spam": "Mark the conversation as spam?",
|
||
"conversations.medium": "Medium",
|
||
"conversations.message": "Message…",
|
||
"conversations.microphone_off": "Your microphone is off",
|
||
"conversations.mine": "Mine",
|
||
"conversations.missed_call": "Missed call",
|
||
"conversations.mode": "Mode",
|
||
"conversations.move_group": "Move to a group",
|
||
"conversations.name_cannot_empty": "The name cannot be empty",
|
||
"conversations.name_or_email": "Name or email",
|
||
"conversations.new_label": "New label",
|
||
"conversations.no_access_camera_microphone": "No access to the camera and microphone",
|
||
"conversations.no_access_microphone": "No access to the microphone",
|
||
"conversations.no_conversations_found": "No conversations found",
|
||
"conversations.no_matching_templates": "No matching templates",
|
||
"conversations.no_messages_yet": "No messages yet",
|
||
"conversations.no_notes": "No notes",
|
||
"conversations.nobody_answered_time_try_calling": "Nobody answered in time. Try calling again.",
|
||
"conversations.not_set": "Not set",
|
||
"conversations.note": "Note",
|
||
"conversations.only_assignee_can_reply_take": "Only the assignee can reply. Take the conversation to carry on yourself.",
|
||
"conversations.outgoing_call": "Outgoing call",
|
||
"conversations.pause": "Pause",
|
||
"conversations.pick_conversation": "Pick a conversation",
|
||
"conversations.play": "Play",
|
||
"conversations.priority": "Priority",
|
||
"conversations.reconnecting": "Reconnecting",
|
||
"conversations.record_voice_message": "Record a voice message",
|
||
"conversations.recording_esc_cancels_enter_sends": "Recording. Esc cancels, Enter sends",
|
||
"conversations.remove_label": "Remove the “{name}” label",
|
||
"conversations.reply_templates": "Reply templates · /",
|
||
"conversations.return_queue": "Return to the queue",
|
||
"conversations.search_by_contact_or_message": "Search by contact or message…",
|
||
"conversations.send": "Send",
|
||
"conversations.sending_invitation": "Sending the invitation",
|
||
"conversations.show_earlier_messages": "Show earlier messages",
|
||
"conversations.show_list": "Show the list",
|
||
"conversations.sorting": "Sorting",
|
||
"conversations.sorting_by_last_message": "Sorting: by last message",
|
||
"conversations.sorting_by_waiting_time": "Sorting: by waiting time",
|
||
"conversations.started": "Started",
|
||
"conversations.take_conversation": "Take the conversation",
|
||
"conversations.templates": "Templates",
|
||
"conversations.transcribe": "Transcribe",
|
||
"conversations.transcribing": "Transcribing…",
|
||
"conversations.type_message_shift_enter_line": "Type a message… Shift+Enter for a line break, “/” for a reply template",
|
||
"conversations.unassigned": "Unassigned",
|
||
"conversations.update_browser_or_open_link": "Update your browser or open the link in Chrome, Safari or Edge.",
|
||
"conversations.video_call": "video call",
|
||
"conversations.video_calls_not_supported": "Video calls are not supported",
|
||
"conversations.voice_message_duration": "Voice message · {duration}",
|
||
"conversations.wait_timed_out": "The wait timed out",
|
||
"conversations.waiting_answer": "Waiting for an answer",
|
||
"conversations.waiting_for_operator": "Waiting for an operator",
|
||
"conversations.waiting_for_person_since": "Waiting for a person · {waited}",
|
||
"conversations.waiting_person": "Waiting for a person",
|
||
"conversations.without_video": "Without video",
|
||
"plural.agents": { one: "{count} agent", other: "{count} agents" },
|
||
"plural.articles": { one: "{count} article", other: "{count} articles" },
|
||
"plural.categories": { one: "{count} category", other: "{count} categories" },
|
||
"plural.chunks": { one: "{count} chunk", other: "{count} chunks" },
|
||
"plural.conversations": { one: "{count} conversation", other: "{count} conversations" },
|
||
"plural.devices": { one: "{count} device", other: "{count} devices" },
|
||
"plural.documents": { one: "{count} document", other: "{count} documents" },
|
||
"plural.events": { one: "{count} event", other: "{count} events" },
|
||
"plural.knowledge": { one: "{count} knowledge item", other: "{count} knowledge items" },
|
||
"plural.knowledge_noun": { one: "knowledge item", other: "knowledge items" },
|
||
"plural.nested": { one: "{count} nested", other: "{count} nested" },
|
||
"plural.open_conversations": { one: "{count} open conversation", other: "{count} open conversations" },
|
||
"plural.paragraphs": { one: "{count} paragraph", other: "{count} paragraphs" },
|
||
"plural.portals": { one: "{count} portal", other: "{count} portals" },
|
||
"plural.sections": { one: "{count} section", other: "{count} sections" },
|
||
"plural.sessions_ended": { one: "{count} session ended", other: "{count} sessions ended" },
|
||
"portals.add_section": "Add a section",
|
||
"portals.address": "Address:",
|
||
"portals.address_domain": "Address and domain",
|
||
"portals.address_installation": "Address on this installation",
|
||
"portals.address_installation_2": "address on this installation",
|
||
"portals.administrator_has_not_set_installation": "The administrator has not set this installation's IP",
|
||
"portals.all_material": "All material",
|
||
"portals.all_sections": "All sections",
|
||
"portals.archive_note": "An archived portal stops opening at its public address and its material disappears from the agent's replies. Nothing is deleted: the portal can be restored.",
|
||
"portals.archived": "Archived",
|
||
"portals.article": "ARTICLE",
|
||
"portals.article_2": "In this article",
|
||
"portals.article_attachment": "· article attachment",
|
||
"portals.article_category_path_required": "Article #{index}: the required field “categoryPath” is a non-empty list of sections",
|
||
"portals.article_content_empty": "Article #{index}: the required field “content” is empty",
|
||
"portals.article_contents": "Article contents",
|
||
"portals.article_files": "ARTICLE FILES",
|
||
"portals.article_import": "Article import",
|
||
"portals.article_must_be_object": "Article #{index}: must be an object",
|
||
"portals.article_not_found": "Article not found",
|
||
"portals.article_section_empty": "Article #{index}: section #{segment} is empty",
|
||
"portals.article_slug_empty": "Article #{index}: the required field “slug” is empty",
|
||
"portals.article_title": "Article title",
|
||
"portals.article_title_empty": "Article #{index}: the required field “title” is empty",
|
||
"portals.article_will_disappear_from_public": "The article will disappear from the public portal.",
|
||
"portals.articles_match_address_creates_new": "articles. A match on the address creates a new version.",
|
||
"portals.articles_must_non_empty_list": "articles must be a non-empty list",
|
||
"portals.back_knowledge_base": "Back to the knowledge base",
|
||
"portals.base_domain_hint": "is set by the administrator at install time and is the same for every portal of this installation. The address is part of article links, so old links stop working once it changes.",
|
||
"portals.base_help_center_look_light": "The base Help Center look: a light ground and an ink accent.",
|
||
"portals.basics": "Basics",
|
||
"portals.change": "change",
|
||
"portals.change_conflicts_with_current_data": "The change conflicts with the current data",
|
||
"portals.changes_reach_public_pages_as": "Changes reach the public pages as soon as they are saved.",
|
||
"portals.check_address_or_ask_organization": "Check the address or ask your organization's administrator.",
|
||
"portals.check_dns": "Check DNS",
|
||
"portals.check_portal_name_address": "Check the portal name and address.",
|
||
"portals.check_value": "Check the value",
|
||
"portals.classic": "Classic",
|
||
"portals.colour_scheme": "Colour scheme",
|
||
"portals.copy_public_link": "Copy the public link",
|
||
"portals.could_not_change_agent_s": "Could not change the agent's articles",
|
||
"portals.could_not_change_article": "Could not change the article",
|
||
"portals.could_not_change_portal_status": "Could not change the portal status",
|
||
"portals.could_not_change_sections": "Could not change the sections",
|
||
"portals.could_not_check_domain": "Could not check the domain",
|
||
"portals.could_not_create_portal_try": "Could not create the portal. Try again later.",
|
||
"portals.could_not_delete_file": "Could not delete the file",
|
||
"portals.could_not_import_articles": "Could not import the articles",
|
||
"portals.could_not_load_article": "Could not load the article",
|
||
"portals.could_not_load_articles": "Could not load the articles",
|
||
"portals.could_not_load_portals": "Could not load the portals",
|
||
"portals.could_not_move_portal_archive": "Could not move the portal to the archive",
|
||
"portals.could_not_publish_article": "Could not publish the article",
|
||
"portals.could_not_save_appearance": "Could not save the appearance",
|
||
"portals.could_not_save_article": "Could not save the article",
|
||
"portals.could_not_save_domain": "Could not save the domain",
|
||
"portals.could_not_save_settings": "Could not save the settings",
|
||
"portals.could_not_save_web_widget": "Could not save the web widget",
|
||
"portals.could_not_send_feedback_try": "Could not send the feedback. Try again.",
|
||
"portals.could_not_turn_domain_off": "Could not turn the domain off",
|
||
"portals.could_not_upload_file": "Could not upload {name}",
|
||
"portals.create_article_first_files_attach": "Create the article first — files attach to an existing article",
|
||
"portals.create_first_support_portal": "Create your first support portal",
|
||
"portals.create_portal": "Create the portal",
|
||
"portals.create_section": "Create a section",
|
||
"portals.creating": "Creating…",
|
||
"portals.current_state": "Current state",
|
||
"portals.custom_domain": "Custom domain",
|
||
"portals.custom_domain_2": "custom domain",
|
||
"portals.custom_domain_off": "The custom domain is off",
|
||
"portals.custom_domain_state": "custom domain · {state}",
|
||
"portals.delete_file": "Delete the file",
|
||
"portals.did_not_help": "did not help",
|
||
"portals.dns_update_takes_up_24": "a DNS update takes up to 24 hours",
|
||
"portals.do_not_show": "Do not show it",
|
||
"portals.domain": "Domain",
|
||
"portals.domain_has_not_been_checked": "The domain has not been checked yet",
|
||
"portals.domain_no_extra_setup": "Nothing else is needed: the domain is yours and so is the installation — the check only looks at whether the record points to this server, and issues a certificate.",
|
||
"portals.domain_points_here": "The domain points here",
|
||
"portals.domain_points_here_checked": "The domain points here · checked {date}",
|
||
"portals.domain_saved_add_record_check": "Domain saved. Add an A record and check DNS.",
|
||
"portals.download_template": "Download the template",
|
||
"portals.draft": "draft ·",
|
||
"portals.draft_autosaved_at": "Draft autosaved at {time}",
|
||
"portals.draft_prefix": "draft · ",
|
||
"portals.draft_revision": "draft {revision}",
|
||
"portals.drop_add_article": "Drop it to add it to the article",
|
||
"portals.english": "English",
|
||
"portals.example_help_centre": "For example, Help centre",
|
||
"portals.file": "FILE",
|
||
"portals.files_article": "Files in the article",
|
||
"portals.files_article_2": "Files for the article",
|
||
"portals.help": "Help",
|
||
"portals.helpful": "helpful",
|
||
"portals.helps_make_knowledge_base_more": "It helps make the knowledge base more useful.",
|
||
"portals.how_looks_customer": "How it looks to a customer",
|
||
"portals.image_goes_into_text_other": "An image goes into the text; other files attach to the article. PNG, JPG, WebP, PDF, DOCX · up to 25 MB",
|
||
"portals.immutable": "immutable",
|
||
"portals.import": "To import:",
|
||
"portals.import_2": "Import",
|
||
"portals.import_articles_from_yaml": "Import articles from YAML",
|
||
"portals.importing": "Importing…",
|
||
"portals.insert_image": "Insert an image",
|
||
"portals.insert_into_text": "Insert into the text",
|
||
"portals.inserted_into_text": "· inserted into the text",
|
||
"portals.invalid_yaml": "Invalid YAML",
|
||
"portals.ip_of_installation": "{value} · this installation's IP",
|
||
"portals.knowledge_base_support": "Knowledge base and support",
|
||
"portals.language": "Language",
|
||
"portals.language_2": "Language:",
|
||
"portals.language_3": "LANGUAGE",
|
||
"portals.language_filled_new_articles_articles": "The language filled in for new articles. Articles in other languages stay as they are.",
|
||
"portals.library_note": "{count} · {shown} shown · the agent answers only from published ones",
|
||
"portals.locale_created": "{locale} · created {date}",
|
||
"portals.lowercase_latin_letters_digits_hyphens": "Lowercase Latin letters, digits and hyphens. The base domain",
|
||
"portals.manage_sections": "Manage sections",
|
||
"portals.material": "Material",
|
||
"portals.material_2": "MATERIAL",
|
||
"portals.move_article_archive": "Move the article to the archive?",
|
||
"portals.move_portal_archive": "Move the portal to the archive?",
|
||
"portals.name": "NAME",
|
||
"portals.navigation": "Navigation",
|
||
"portals.new_article": "New article",
|
||
"portals.new_article_not_saved": "New article · not saved",
|
||
"portals.new_support_portal": "New support portal",
|
||
"portals.no_article_did_not_help": "No, the article did not help",
|
||
"portals.no_reader_ratings_yet": "No reader ratings yet",
|
||
"portals.not_checked": "not checked",
|
||
"portals.not_enough_rights_action": "Not enough rights for this action",
|
||
"portals.not_published": "not published",
|
||
"portals.open": "Open",
|
||
"portals.open_as_visitor": "Open as a visitor",
|
||
"portals.open_material": "Open the material",
|
||
"portals.open_portal": "Open the portal",
|
||
"portals.open_portal_new_tab": "Open the portal in a new tab",
|
||
"portals.portal": "PORTAL",
|
||
"portals.portal_address": "Portal address",
|
||
"portals.portal_its_material_become_unavailable": "The portal and its material become unavailable to visitors until it is restored.",
|
||
"portals.portal_name": "Portal name",
|
||
"portals.portal_preview": "Portal preview",
|
||
"portals.portal_public_help_centre_with": "A portal is a public help centre with instructions and answers for customers.",
|
||
"portals.portal_public_page_with_instructions": "A portal is a public page with instructions and answers to common questions. A customer reads an article and, if the answer is not there, writes into the chat right from the page.",
|
||
"portals.portal_s_name_public_address": "The portal's name, public address and material language.",
|
||
"portals.portal_will_open_at_company": "The portal will open at your company's address. The installation address keeps working.",
|
||
"portals.portals_note": "{count} · archived ones are listed last",
|
||
"portals.preview_theme": "PREVIEW · PORTAL THEME {theme}",
|
||
"portals.primary_language": "Primary language",
|
||
"portals.public_address": "PUBLIC ADDRESS",
|
||
"portals.public_chat_appears_every_portal": "The public chat appears on every portal page.",
|
||
"portals.public_knowledge_bases_customers": "Public knowledge bases for customers.",
|
||
"portals.public_knowledge_bases_customers_every": "Public knowledge bases for customers. Every portal has its own address, appearance and material.",
|
||
"portals.publish_portal": "Publish the portal",
|
||
"portals.publish_portal_2": "Publish the portal?",
|
||
"portals.publish_selected_version": "Publish the selected version?",
|
||
"portals.published": "Published",
|
||
"portals.published_2": "published",
|
||
"portals.published_articles_will_become_available": "Published articles will become available at the public address.",
|
||
"portals.published_at_lower": "published {date}",
|
||
"portals.publishing_archive": "Publishing and archive",
|
||
"portals.publishing_opens_material_visitors_archive": "Publishing opens the material to visitors; the archive hides the portal entirely.",
|
||
"portals.publishing_picks_one_revision_visitors": "Publishing picks one revision. Visitors see only the published one.",
|
||
"portals.ratings": "RATINGS",
|
||
"portals.reader_ratings": "READER RATINGS",
|
||
"portals.record_at_domain_registrar": "The record at your domain registrar",
|
||
"portals.record_not_found": "Record not found",
|
||
"portals.restore_from_archive": "Restore from the archive",
|
||
"portals.resulting_link": "Resulting link",
|
||
"portals.revision": "REVISION",
|
||
"portals.revision_draft": "Revision {revision} · draft",
|
||
"portals.revision_number": "Revision {revision}",
|
||
"portals.revision_published": "Revision {revision} · published",
|
||
"portals.russian": "Russian",
|
||
"portals.russian_2": "Russian",
|
||
"portals.save_appearance": "Save the appearance",
|
||
"portals.save_domain": "Save the domain",
|
||
"portals.save_draft": "Save the draft",
|
||
"portals.save_settings": "Save the settings",
|
||
"portals.save_widget": "Save the widget",
|
||
"portals.saved_at_lower": "saved {date}",
|
||
"portals.search_articles": "Search the articles",
|
||
"portals.search_articles_2": "Search the articles...",
|
||
"portals.search_by_name_address": "Search by name and address",
|
||
"portals.search_knowledge_base": "Search the knowledge base",
|
||
"portals.search_query": "Search: “{query}”",
|
||
"portals.search_results": "Search results",
|
||
"portals.section": "SECTION",
|
||
"portals.section_can_only_deleted_once": "A section can only be deleted once the sections and articles inside it have been moved out.",
|
||
"portals.section_decides_where_articles_sit": "A section decides where articles sit on the public portal",
|
||
"portals.sections": "SECTIONS",
|
||
"portals.selected": "selected",
|
||
"portals.settings_saved": "Settings saved",
|
||
"portals.show_more": "Show more",
|
||
"portals.shown_header_public_pages_browser": "Shown in the header of public pages and in the browser title.",
|
||
"portals.shown_list_search": "· shown in the list and in search",
|
||
"portals.soft_oceanic_look_blue_accent": "A soft oceanic look: a blue accent and generous rounding.",
|
||
"portals.status": "Status:",
|
||
"portals.support_agent_articles": "Support agent articles",
|
||
"portals.support_portal_not_found": "Support portal not found",
|
||
"portals.template_content": "The article text in Markdown.",
|
||
"portals.template_content_no_summary": "The article text without a summary.",
|
||
"portals.template_section_returns": "Returns",
|
||
"portals.template_title_return": "How to arrange a return",
|
||
"portals.template_title_warranty": "Warranty",
|
||
"portals.thank_feedback": "Thank you for the feedback",
|
||
"portals.theme_colour_scheme_public_pages": "The theme and colour scheme of the public pages. Applied before the first frame, so a visitor never sees the appearance change. The theme list comes from the installation build.",
|
||
"portals.theme_not_installation_build_pick": "This theme is not in the installation build. Pick another one to save the appearance.",
|
||
"portals.there_unsaved_edits_they_not": "There are unsaved edits — they are not on the portal yet",
|
||
"portals.too_many_requests_try_again": "Too many requests. Try again later",
|
||
"portals.top_level_object_with_articles": "A top-level object with an articles key is expected",
|
||
"portals.try_changing_query_or_opening": "Try changing the query or opening another section.",
|
||
"portals.try_reloading_page": "Try reloading the page.",
|
||
"portals.turn_domain_off": "Turn the domain off",
|
||
"portals.type": "TYPE",
|
||
"portals.unavailable": "unavailable",
|
||
"portals.unpublish": "Unpublish",
|
||
"portals.unpublish_2": "Unpublish it",
|
||
"portals.unpublish_portal": "Unpublish the portal?",
|
||
"portals.updated": "UPDATED",
|
||
"portals.updated_on": "Updated {date}",
|
||
"portals.use_lowercase_latin_letters_digits": "Use lowercase Latin letters, digits and hyphens.",
|
||
"portals.value": "VALUE",
|
||
"portals.version_will_become_available_portal": "This version will become available to portal visitors.",
|
||
"portals.versions": "VERSIONS",
|
||
"portals.visitor_s_view": "Visitor's view",
|
||
"portals.visitors_will_stop_seeing_material": "Visitors will stop seeing the material; the address stays with the portal.",
|
||
"portals.votes_summary": "Helpful {helpful} · did not help {unhelpful}",
|
||
"portals.was_article_helpful": "Was this article helpful?",
|
||
"portals.web_widget_updated": "Web widget updated",
|
||
"portals.widget_available_anonymous_portal_visitors": "The widget is available to anonymous portal visitors only.",
|
||
"portals.working": "working",
|
||
"portals.yaml_format_note": "A YAML file · format: articles: [{format}]",
|
||
"portals.yes_article_helped": "Yes, the article helped",
|
||
"onboarding.title": "Getting started",
|
||
"onboarding.eyebrow": "Your installation is ready to configure",
|
||
"onboarding.welcome_title_7": "Seven steps to your first customer reply",
|
||
"onboarding.welcome_title_8": "Eight steps to your first customer reply",
|
||
"onboarding.welcome_lead": "We'll go through what to set up and where: the model key, the agent, the knowledge, the entry point and the team. Every step gives the exact path in the interface and highlights the element on screen.",
|
||
"onboarding.fact_time": "≈ 25 minutes",
|
||
"onboarding.fact_time_note": "You can stop and come back",
|
||
"onboarding.fact_key": "Your own model key",
|
||
"onboarding.fact_key_note": "Or the demo provider, no key needed",
|
||
"onboarding.fact_data": "Your data stays with you",
|
||
"onboarding.fact_data_note": "Everything runs on your server",
|
||
"onboarding.later": "I'll do it later",
|
||
"onboarding.start": "Start setup",
|
||
"onboarding.progress": "{done} of {total} done",
|
||
"onboarding.progress_short": "{done}/{total}",
|
||
"onboarding.step_of": "Step {index} of {total} · {time}",
|
||
"onboarding.close_and_self": "Close and set up on my own",
|
||
"onboarding.back": "Back",
|
||
"onboarding.show_where": "Show me where",
|
||
"onboarding.open_section": "Open the section",
|
||
"onboarding.next": "Next",
|
||
"onboarding.finish": "Finish",
|
||
"onboarding.tour_eyebrow": "Step {index} · where to find it",
|
||
"onboarding.tour_ok": "Got it, back to the steps",
|
||
"onboarding.done_title": "All set — you can take customers now",
|
||
"onboarding.done_lead": "The agent answers from your knowledge and hands the hard cases to the team. You can come back to the steps in Settings → Getting started.",
|
||
"onboarding.restart": "Start over",
|
||
"onboarding.go_chat": "Go to chat",
|
||
"onboarding.settings_hint": "Step-by-step setup of your installation. Opens whenever you need it.",
|
||
"onboarding.steps_list": "Setup steps",
|
||
"onboarding.s1.name": "AI provider",
|
||
"onboarding.s1.time": "3 min",
|
||
"onboarding.s1.title": "Connect an AI provider",
|
||
"onboarding.s1.lead": "Without a provider the agent cannot answer anyone. The key is yours: spend, limits and tokens are all counted in the system.",
|
||
"onboarding.s1.path": "Settings → AI provider → Add provider",
|
||
"onboarding.s1.do_1": "Open Settings in the sidebar and pick the AI provider section.",
|
||
"onboarding.s1.do_2": "Click Add provider: OpenRouter, Custom (OpenAI-compatible) or a local model.",
|
||
"onboarding.s1.do_3": "Paste the API key and set a default model — openai/gpt-4o-mini, for example.",
|
||
"onboarding.s1.do_4": "Click Check: the status should turn to Connected.",
|
||
"onboarding.s1.warning": "No key yet? Take the demo provider without a key — it answers from the agent's knowledge so you can look around, and you can swap it for a real one at any time.",
|
||
"onboarding.s1.preview": "Settings → AI provider",
|
||
"onboarding.s1.row1_label": "Provider",
|
||
"onboarding.s1.row1_value": "OpenRouter",
|
||
"onboarding.s1.row2_label": "Secret",
|
||
"onboarding.s1.row2_value": "sk-or-••••••••",
|
||
"onboarding.s1.row3_label": "Model",
|
||
"onboarding.s1.row3_value": "openai/gpt-4o-mini",
|
||
"onboarding.s1.chip": "Connected",
|
||
"onboarding.s1.tour_title": "Settings → AI provider",
|
||
"onboarding.s1.tour_text": "A section in the Settings submenu. This is where the organization's keys live: adding a provider, checking it and its status.",
|
||
"onboarding.s2.name": "AI agent",
|
||
"onboarding.s2.time": "4 min",
|
||
"onboarding.s2.title": "Create an AI agent",
|
||
"onboarding.s2.lead": "The agent is who talks to the customer: who they are, how they answer, what rules they follow and how much they may spend per day.",
|
||
"onboarding.s2.path": "Agents → Create agent",
|
||
"onboarding.s2.do_1": "Open Agents in the sidebar and click Create agent.",
|
||
"onboarding.s2.do_2": "Describe the role and tone: who they are to the customer, what they may promise, what they must not do.",
|
||
"onboarding.s2.do_3": "Pick a model from the connected provider and a daily budget in dollars.",
|
||
"onboarding.s2.do_4": "Attach knowledge base articles — the agent answers only from those.",
|
||
"onboarding.s2.do_5": "Switch the status from Draft to Active, otherwise the agent stays silent.",
|
||
"onboarding.s2.warning": "If there is nothing to answer from, the agent says so honestly and offers to call a human — it will not make things up.",
|
||
"onboarding.s2.preview": "Agents → Consultant",
|
||
"onboarding.s2.row1_label": "Model",
|
||
"onboarding.s2.row1_value": "openai/gpt-4o-mini",
|
||
"onboarding.s2.row2_label": "Daily budget",
|
||
"onboarding.s2.row2_value": "$5.00",
|
||
"onboarding.s2.row3_label": "Knowledge",
|
||
"onboarding.s2.row3_value": "12 articles",
|
||
"onboarding.s2.chip": "Active",
|
||
"onboarding.s2.tour_title": "The Agents section",
|
||
"onboarding.s2.tour_text": "The organization's agents. An agent card is its role, its model, its budget and the knowledge attached to it.",
|
||
"onboarding.s3.name": "Knowledge base",
|
||
"onboarding.s3.time": "from 10 min",
|
||
"onboarding.s3.title": "Fill the knowledge base",
|
||
"onboarding.s3.lead": "This is the only source the agent answers from. Search goes by meaning, so write the way your customers ask.",
|
||
"onboarding.s3.path": "Knowledge base → Create article",
|
||
"onboarding.s3.do_1": "Open the Knowledge base and create categories for the topics people write about.",
|
||
"onboarding.s3.do_2": "Add articles: the question in the title, a short unambiguous answer in the body.",
|
||
"onboarding.s3.do_3": "Load existing material through Import — as files, with no manual copying.",
|
||
"onboarding.s3.do_4": "Check on the agent card that the articles are attached to it.",
|
||
"onboarding.s3.warning": "Editing an article changes the bot's answers right away, and the public support portal reads the same article — there is no need to keep two texts.",
|
||
"onboarding.s3.preview": "Knowledge base",
|
||
"onboarding.s3.row1_label": "Categories",
|
||
"onboarding.s3.row1_value": "Delivery · Payment · Returns",
|
||
"onboarding.s3.row2_label": "Articles",
|
||
"onboarding.s3.row2_value": "12",
|
||
"onboarding.s3.row3_label": "Search",
|
||
"onboarding.s3.row3_value": "Semantic",
|
||
"onboarding.s3.chip": "Attached to the agent",
|
||
"onboarding.s3.tour_title": "The Knowledge base section",
|
||
"onboarding.s3.tour_text": "Articles, categories and import. This is where the agent takes its answers from, and where the support portal reads them.",
|
||
"onboarding.s4.name": "Entry point",
|
||
"onboarding.s4.time": "5 min",
|
||
"onboarding.s4.title": "Connect an entry point",
|
||
"onboarding.s4.lead": "An entry point is the channel a customer arrives through: Telegram, MAX, email or the chat on your site. Without one there is nowhere to write.",
|
||
"onboarding.s4.path": "Settings → Integrations → Add connection",
|
||
"onboarding.s4.do_1": "Settings → Integrations → Add connection.",
|
||
"onboarding.s4.do_2": "For a bot, paste the token: Telegram from BotFather, MAX from the developer console.",
|
||
"onboarding.s4.do_3": "For email, give the mailbox IMAP and SMTP settings and an app password.",
|
||
"onboarding.s4.do_4": "Bind the connection to the agent you created — otherwise there is nobody to handle the messages.",
|
||
"onboarding.s4.do_5": "Click Check and make sure the status is Connected.",
|
||
"onboarding.s4.warning": "Messages from Telegram and MAX are picked up by a background worker. If it is stopped the status stays Connected, but no conversations appear.",
|
||
"onboarding.s4.preview": "Settings → Integrations",
|
||
"onboarding.s4.row1_label": "Connection",
|
||
"onboarding.s4.row1_value": "Telegram · @romashka_bot",
|
||
"onboarding.s4.row2_label": "Agent",
|
||
"onboarding.s4.row2_value": "Consultant",
|
||
"onboarding.s4.row3_label": "Secret",
|
||
"onboarding.s4.row3_value": "78••••••••",
|
||
"onboarding.s4.chip": "Connected",
|
||
"onboarding.s4.tour_title": "Settings → Integrations",
|
||
"onboarding.s4.tour_text": "Bots, email and the web widget. A red dot on the item means some connection has dropped.",
|
||
"onboarding.s5.name": "Site widget",
|
||
"onboarding.s5.time": "3 min",
|
||
"onboarding.s5.title": "Put the chat on your site",
|
||
"onboarding.s5.lead": "The web widget is a single tag in your template. The chat opens in an isolated window on top of the site.",
|
||
"onboarding.s5.path": "Settings → Integrations → Web widget",
|
||
"onboarding.s5.do_1": "Create a Web widget connection and style it: title, accent, greeting.",
|
||
"onboarding.s5.do_2": "Fill in the allowed domains — an empty list blocks every site.",
|
||
"onboarding.s5.do_3": "Copy the snippet and paste it before the closing body tag on your site.",
|
||
"onboarding.s5.do_4": "Set the widget to Published and reload your site.",
|
||
"onboarding.s5.warning": "The key in data-widget-key must match the key in the widget settings — if they differ the chat simply will not appear.",
|
||
"onboarding.s5.preview": "Snippet for your site",
|
||
"onboarding.s5.row1_label": "Allowed domains",
|
||
"onboarding.s5.row1_value": "romashka.ru, *.romashka.ru",
|
||
"onboarding.s5.chip": "Published",
|
||
"onboarding.s5.tour_title": "Settings → Integrations",
|
||
"onboarding.s5.tour_text": "The widget lives among the connections: its key, its allowed domains and the ready-made tag to paste.",
|
||
"onboarding.s6.name": "Team",
|
||
"onboarding.s6.time": "4 min",
|
||
"onboarding.s6.title": "Invite your team",
|
||
"onboarding.s6.lead": "The agent hands hard questions to people. Add the people it will hand them to, and decide who sees what.",
|
||
"onboarding.s6.path": "Team → Invite",
|
||
"onboarding.s6.do_1": "Open Team and send invitations by email.",
|
||
"onboarding.s6.do_2": "Assign roles: the owner and the administrator see everything, an employee works only in the chat.",
|
||
"onboarding.s6.do_3": "In Settings → Groups, split conversations into visibility groups.",
|
||
"onboarding.s6.do_4": "Ask the team to turn on code-based sign-in (TOTP) in their profile.",
|
||
"onboarding.s6.warning": "Invitations go out by email. Until SMTP is configured (the Domain and email step) the letters will not arrive, and passwords have to be set by hand.",
|
||
"onboarding.s6.preview": "Team",
|
||
"onboarding.s6.row1_label": "Invited",
|
||
"onboarding.s6.row1_value": "3 people",
|
||
"onboarding.s6.row2_label": "Groups",
|
||
"onboarding.s6.row2_value": "First line · Billing",
|
||
"onboarding.s6.row3_label": "Roles",
|
||
"onboarding.s6.row3_value": "Admin · Employee",
|
||
"onboarding.s6.chip": "Waiting to sign in",
|
||
"onboarding.s6.tour_title": "The Team section",
|
||
"onboarding.s6.tour_text": "Invitations, roles and groups. An employee sees the conversations of their groups and the ones they are responsible for.",
|
||
"onboarding.s7.name": "Domain and email",
|
||
"onboarding.s7.time": "5 min",
|
||
"onboarding.s7.title": "Set the domain and email",
|
||
"onboarding.s7.lead": "For now the installation opens by IP — no HTTPS and no email. A domain and SMTP turn it into a working service.",
|
||
"onboarding.s7.path": "Settings → Platform",
|
||
"onboarding.s7.do_1": "Settings → Platform: enter the installation domain and switch to https.",
|
||
"onboarding.s7.do_2": "Make sure the domain's DNS points at the server and ports 80 and 443 are open from outside.",
|
||
"onboarding.s7.do_3": "Fill in outgoing email: host, port, encryption, login and app password.",
|
||
"onboarding.s7.do_4": "Click Send a test message and check that it arrives.",
|
||
"onboarding.s7.warning": "The certificate is issued on the first request to the domain: open it in a browser and wait a few seconds.",
|
||
"onboarding.s7.preview": "Settings → Platform",
|
||
"onboarding.s7.row1_label": "Address",
|
||
"onboarding.s7.row1_value": "https://support.romashka.ru",
|
||
"onboarding.s7.row2_label": "SMTP",
|
||
"onboarding.s7.row2_value": "smtp.yandex.ru : 465",
|
||
"onboarding.s7.row3_label": "Certificate",
|
||
"onboarding.s7.row3_value": "Let's Encrypt",
|
||
"onboarding.s7.chip": "HTTPS is on",
|
||
"onboarding.s7.tour_title": "Settings → Platform",
|
||
"onboarding.s7.tour_text": "Properties of the installation itself: address, outgoing email, updates. The section is visible to the installation administrator.",
|
||
"onboarding.s8.name": "Check",
|
||
"onboarding.s8.time": "2 min",
|
||
"onboarding.s8.title": "Message the bot as a customer",
|
||
"onboarding.s8.lead": "The last step is to walk the customer's path end to end: a message, the agent's answer and the handover to a human.",
|
||
"onboarding.s8.path": "Chat → All conversations",
|
||
"onboarding.s8.do_1": "Ask your bot, or the widget on your site, a question from the knowledge base.",
|
||
"onboarding.s8.do_2": "Open Chat: the conversation appears in the list with its channel, agent and waiting timer.",
|
||
"onboarding.s8.do_3": "Check the agent's answer — it should rest on your article.",
|
||
"onboarding.s8.do_4": "Click Take the conversation and answer yourself: that is how the handover to an operator works.",
|
||
"onboarding.s8.warning": "The three conversation modes — AI answers, an employee answers, paused — switch in the conversation header at any time.",
|
||
"onboarding.s8.preview": "Chat → All conversations",
|
||
"onboarding.s8.row1_label": "Conversation",
|
||
"onboarding.s8.row1_value": "Anna Smirnova · Telegram",
|
||
"onboarding.s8.row2_label": "Agent",
|
||
"onboarding.s8.row2_value": "Consultant",
|
||
"onboarding.s8.row3_label": "Mode",
|
||
"onboarding.s8.row3_value": "AI answers",
|
||
"onboarding.s8.chip": "Answered in 4s",
|
||
"onboarding.s8.tour_title": "The conversation list",
|
||
"onboarding.s8.tour_text": "Every request to the organization in one window: channel, agent, waiting time, labels and group.",
|
||
"organizations.add": "Add organization",
|
||
"organizations.create_title": "New organization",
|
||
"organizations.create_lead": "You will own the new organization and switch to it right away. The name, time zone and language can be changed later in Settings.",
|
||
"organizations.create_submit": "Create organization",
|
||
"organizations.creating": "Creating…",
|
||
"organizations.create_failed": "Could not create the organization",
|
||
"organizations.logo_failed": "The organization was created, but the logo failed to upload — add it in Settings.",
|
||
"organizations.name_placeholder": "For example, “Nord Atelier”",
|
||
"profile.accent_colour": "Accent colour",
|
||
"profile.address_unknown": "address unknown",
|
||
"profile.all_conversations": "All conversations",
|
||
"profile.appearance": "Appearance",
|
||
"profile.apply": "Apply",
|
||
"profile.authenticator_connected": "Authenticator connected",
|
||
"profile.authenticator_last_used": "Authenticator connected · last code {date}",
|
||
"profile.back": "Back",
|
||
"profile.change_password": "Change password",
|
||
"profile.code_from_authenticator_app_required": "On. A code from your authenticator app is required at every sign-in.",
|
||
"profile.collapse_menu": "Collapse the menu",
|
||
"profile.colleagues_will_see_initials_again": "Colleagues will see your initials again instead of the photo.",
|
||
"profile.connect": "Connect",
|
||
"profile.connect_entry_point": "Connect an entry point",
|
||
"profile.could_not_change_totp": "Could not change TOTP",
|
||
"profile.could_not_end_sessions": "Could not end the sessions",
|
||
"profile.could_not_remove_photo": "Could not remove the photo",
|
||
"profile.could_not_save_profile": "Could not save the profile",
|
||
"profile.could_not_update_password": "Could not update the password",
|
||
"profile.could_not_upload_photo": "Could not upload the photo",
|
||
"profile.create_agent": "Create an agent",
|
||
"profile.current": "current",
|
||
"profile.current_password": "Current password",
|
||
"profile.custom_colour_hex_value_like": "A custom colour is a HEX value like #1677ff",
|
||
"profile.dark": "Dark",
|
||
"profile.disconnect": "Disconnect",
|
||
"profile.drag_resize_double_click_reset": "Drag to resize, double-click to reset",
|
||
"profile.email_used_sign": "Email · used to sign in",
|
||
"profile.end_others": "End the others",
|
||
"profile.ending": "Ending",
|
||
"profile.enter_current_password_change_password": "Enter your current password in the change-password block to turn TOTP off",
|
||
"profile.expand": "Expand",
|
||
"profile.getting_started": "Getting started",
|
||
"profile.getting_started_progress": "{done} of {total}",
|
||
"profile.go_start_page": "Go to the start page",
|
||
"profile.switch_organization": "Switch organization",
|
||
"auth.choose_organization_title": "Choose an organization",
|
||
"auth.choose_organization_subtitle": "{name}, you belong to several organizations. Which one to start with?",
|
||
"auth.choose_organization_logout": "Sign out",
|
||
"auth.invitation_title": "Organization invitation",
|
||
"auth.invitation_accepting": "Accepting the invitation…",
|
||
"auth.invitation_not_accepted": "The invitation was not accepted",
|
||
"auth.invitation_invalid": "The invitation is invalid or has expired",
|
||
"auth.join_subtitle": "You are invited to \u201c{organization}\u201d as {email}. Enter your name and set a password to sign in.",
|
||
"auth.join_accept": "Accept the invitation",
|
||
"updates.available_title": "Version {version} is available",
|
||
"updates.whats_new": "What's new",
|
||
"updates.install": "Update",
|
||
"updates.install_version": "Update to {version}",
|
||
"updates.installing": "Updating to {version}:",
|
||
"updates.stage_starting": "starting",
|
||
"updates.stage_downloading": "downloading the release file",
|
||
"updates.stage_pulling": "pulling images",
|
||
"updates.stage_restarting": "restarting services",
|
||
"updates.done": "Version {version} is installed. Reload the page.",
|
||
"updates.failed": "Update to {version} failed",
|
||
"updates.confirm_title": "Update to {version}?",
|
||
"updates.confirm_text": "Services will restart and the application will be unavailable for about a minute. Conversations and data are kept.",
|
||
"updates.updater_offline": "The update service is not running, so updating from the interface is unavailable",
|
||
"updates.card_title": "Updates",
|
||
"updates.card_hint": "Installation version and updates from the release channel",
|
||
"updates.current_version": "Current version",
|
||
"updates.latest_version": "Latest version",
|
||
"updates.checked": "Check",
|
||
"updates.check": "Check now",
|
||
"updates.checked_at": "{time}",
|
||
"updates.never_checked": "Not checked yet",
|
||
"updates.up_to_date": "The latest version is installed",
|
||
"updates.check_error": "Could not check: {error}",
|
||
"profile.groups_list": "· groups: {groups}",
|
||
"profile.in_organization_since": "· in the organization since {date}",
|
||
"profile.interface_language": "Interface language",
|
||
"profile.invite": "Invite",
|
||
"profile.invite_operators": "Invite operators",
|
||
"profile.language": "Language",
|
||
"profile.language_as_organization": "Match the organization",
|
||
"profile.language_lead": "A personal setting stored in your account. The page reloads once it is saved.",
|
||
"profile.light": "Light",
|
||
"profile.link_bot": "Link a bot",
|
||
"profile.match_system": "Match the system",
|
||
"profile.menu": "Menu",
|
||
"profile.messenger_notifications": "Messenger notifications",
|
||
"profile.min_10_characters": "min. 10 characters",
|
||
"profile.no_notification_bots_configured_owner": "No notification bots are configured. The owner can add one under Settings → Integrations (the “Notification bot for operators” checkbox).",
|
||
"profile.off_strongly_recommended_owner_administrators": "Off. Strongly recommended for the owner and administrators.",
|
||
"profile.password_updated": "Password updated",
|
||
"profile.password_updated_sessions": "Password updated, {count} sessions ended",
|
||
"profile.personal_details": "Personal details",
|
||
"profile.personal_details_saved": "Personal details saved",
|
||
"profile.personal_setting_stored_account_applies": "This is a personal setting stored in your account: it applies on every device you use, with no reload.",
|
||
"profile.png_jpeg_or_webp_up": "PNG, JPEG or WebP · up to 2 MB. Visible to colleagues in chat.",
|
||
"profile.png_jpeg_or_webp_up_2": "PNG, JPEG or WebP · up to 2 MB. Visible to colleagues in chat, on message signatures and when picking an assignee.",
|
||
"profile.preparing_link": "Preparing the link…",
|
||
"profile.press_link_bot_then_start": "Press “Link a bot”, then “Start” in the chat that opens: the link confirms itself.",
|
||
"profile.remove_photo": "Remove the photo?",
|
||
"profile.replace": "Replace",
|
||
"profile.service_notification_bot": "@{username} · service notification bot",
|
||
"profile.sessions_ended_count": "{count} sessions ended",
|
||
"profile.sidebar_width": "Sidebar width",
|
||
"profile.specialist": "Specialist",
|
||
"profile.theme": "Theme",
|
||
"profile.there_no_other_active_sessions": "There are no other active sessions",
|
||
"profile.toggle_two_factor_authentication": "Toggle two-factor authentication",
|
||
"profile.totp_off_sessions": "TOTP turned off, {count} sessions ended",
|
||
"profile.totp_turned_off": "TOTP turned off",
|
||
"profile.two_factor_authentication": "Two-factor authentication",
|
||
"profile.update_password": "Update password",
|
||
"profile.updating": "Updating",
|
||
"profile.user_menu": "User menu",
|
||
"profile.without_second_factor_access_organization": "Without a second factor, access to the organization rests on the password alone",
|
||
"profile.work_events_reach_even_with": "Work events reach you even with the browser closed. One messenger at a time: linking a new one replaces the current.",
|
||
"sales.all_agents": "All agents",
|
||
"sales.all_channels": "All channels",
|
||
"sales.anonymous_session": "{channel} · {connection}, anonymous session",
|
||
"sales.anonymous_widget_session": "anonymous widget session",
|
||
"sales.call": "Call",
|
||
"sales.change_filter_conditions_or_clear": "Change the filter conditions or clear them.",
|
||
"sales.city_country": "{city}, {country}",
|
||
"sales.closed": "Closed",
|
||
"sales.closed_2": "closed",
|
||
"sales.compare_merge": "Compare and merge",
|
||
"sales.confirmed_by_connection": ", confirmed by the connection",
|
||
"sales.confirmed_by_phone": "Confirmed by phone",
|
||
"sales.contact_actions": "Contact actions",
|
||
"sales.contact_conversations": "Contact conversations",
|
||
"sales.contact_details_requested": "Contact details requested",
|
||
"sales.contact_has_no_conversations_yet": "This contact has no conversations yet",
|
||
"sales.contacts_appear_once_customers_write": "Contacts appear once customers write to your agent",
|
||
"sales.conversations": "Conversations",
|
||
"sales.copy_cid": "Copy the CID",
|
||
"sales.could_not_complete_operation": "Could not complete the operation",
|
||
"sales.could_not_load_contact": "Could not load the contact",
|
||
"sales.could_not_load_contacts": "Could not load the contacts",
|
||
"sales.could_not_send_request_try": "Could not send the request — try again",
|
||
"sales.country_russia": "Russia",
|
||
"sales.current_conversation": "Current conversation",
|
||
"sales.current_conversation_2": "for the current conversation",
|
||
"sales.duplicate_dialogs": "{count} conv.",
|
||
"sales.edit_contact": "Edit the contact",
|
||
"sales.everyone_who_writes_through_telegram": "Everyone who writes through Telegram, MAX, email or the widget becomes a contact with a conversation history.",
|
||
"sales.example_same_customer_confirmed_phone": "For example: the same customer, the confirmed phone number matched",
|
||
"sales.export_csv": "Export CSV",
|
||
"sales.first_contact": "First contact",
|
||
"sales.first_enquiry": "First enquiry",
|
||
"sales.handled_by_f": "handled by {name}",
|
||
"sales.handled_by_m": "handled by {name}",
|
||
"sales.handled_by_operator": "handled by {name}",
|
||
"sales.how_reach_them": "How to reach them",
|
||
"sales.identities": "Identities",
|
||
"sales.identities_and_dialogs": "{identities} identities · {dialogs} conv.",
|
||
"sales.identities_conversations_move_contact_stays": "Identities and conversations move to the contact that stays. The operation is written to the action log and can be undone.",
|
||
"sales.identities_from_different_connections_not": "Identities from different connections are not merged automatically. Only one the connection handed over with a verified phone number counts as confirmed.",
|
||
"sales.identity_since": "since {date}",
|
||
"sales.last_activity": "Last activity",
|
||
"sales.last_conversation": "Last conversation",
|
||
"sales.merge": "Merge",
|
||
"sales.merge_contacts": "Merge the contacts",
|
||
"sales.merged": "Merged in",
|
||
"sales.merging": "Merging",
|
||
"sales.name_email_phone_or_username": "Name, email, phone or username…",
|
||
"sales.no_connection_identities": "No connection identities",
|
||
"sales.no_contacts_found": "No contacts found",
|
||
"sales.no_description": "No description",
|
||
"sales.no_events": "No events",
|
||
"sales.no_events_yet": "No events yet",
|
||
"sales.no_group": "no group",
|
||
"sales.no_phone_number": "no phone number",
|
||
"sales.not_confirmed": "Not confirmed",
|
||
"sales.not_confirmed_by_connection": "(not confirmed by the connection)",
|
||
"sales.not_match": "Not a match",
|
||
"sales.only_owner_can_merge_contacts": "Only the owner can merge contacts.",
|
||
"sales.open": "Open",
|
||
"sales.open_2": "open",
|
||
"sales.open_column": "Open",
|
||
"sales.open_compare": "Open and compare",
|
||
"sales.open_conversation": "Open the conversation",
|
||
"sales.open_conversations": "Open conversations",
|
||
"sales.operator_handling": "An operator is handling it",
|
||
"sales.overview": "Overview",
|
||
"sales.person_handling": "A person is handling it",
|
||
"sales.phone_matches": "The phone number matches{confirmed}",
|
||
"sales.possible_duplicate": "Possible duplicate",
|
||
"sales.reason_merging": "Reason for merging",
|
||
"sales.request_contact_details": "Request contact details",
|
||
"sales.set_up_connections": "Set up connections",
|
||
"sales.spam": "spam",
|
||
"sales.stays": "Stays",
|
||
"sales.suggestion": "suggestion",
|
||
"sales.there_no_other_conversations_with": "There are no other conversations with this contact",
|
||
"sales.username": "Username",
|
||
"sales.video_call": "Video call",
|
||
"sales.waiting": "Waiting",
|
||
"sales.when": "When",
|
||
"sales.widget": "widget",
|
||
"sales.with_open_conversation": "With an open conversation",
|
||
"settings.access_checked_at": "Access checked {date}",
|
||
"settings.access_lifetime_seconds": "Access lifetime, seconds",
|
||
"settings.action_audit": "Action audit",
|
||
"settings.add_connection": "Add a connection",
|
||
"settings.add_provider": "Add a provider",
|
||
"settings.address_hint": "Until you have a domain, this holds the server address — the one you ran the first-start wizard on. Once you have a domain and put TLS in front of the installation, enter it here and switch to https. Links will look like",
|
||
"settings.address_placeholder": "address",
|
||
"settings.addressing": "Addressing",
|
||
"settings.ai_provider": "AI provider",
|
||
"settings.allowed_domains": "Allowed domains",
|
||
"settings.answers_from_agent_s_knowledge": "Answers from the agent's knowledge with no external requests or keys. Answer quality is limited — for real work connect OpenRouter or a compatible provider.",
|
||
"settings.api_key": "API key",
|
||
"settings.attachments_voice_messages_photos_logos": "Attachments, voice messages, photos and logos — on the installation disk or in external S3-compatible storage.",
|
||
"settings.audio_calls": "Audio calls",
|
||
"settings.back_section_list": "Back to the section list",
|
||
"settings.bot": "Bot",
|
||
"settings.bot_token": "Bot token",
|
||
"settings.bots_email_web_widget_entry": "Bots, email and the web widget are the entry points for conversations. Each is bound to the agent that answers first.",
|
||
"settings.bucket": "Bucket",
|
||
"settings.check": "Check",
|
||
"settings.check_access": "Check access",
|
||
"settings.checking": "Checking…",
|
||
"settings.checking_2": "Checking…",
|
||
"settings.config": "CONFIG",
|
||
"settings.could_not_create_group": "Could not create the group",
|
||
"settings.could_not_delete": "Could not delete it",
|
||
"settings.could_not_delete_group": "Could not delete the group",
|
||
"settings.could_not_load_entry_points": "Could not load the entry points",
|
||
"settings.could_not_load_installation_settings": "Could not load the installation settings",
|
||
"settings.could_not_load_integrations": "Could not load the integrations",
|
||
"settings.could_not_load_relay_settings": "Could not load the relay settings",
|
||
"settings.could_not_load_settings": "Could not load the settings",
|
||
"settings.could_not_load_storage_settings": "Could not load the storage settings",
|
||
"settings.could_not_read_demo_data": "Could not read the demo data status",
|
||
"settings.could_not_rename": "Could not rename it",
|
||
"settings.could_not_start_installation": "Could not start the installation",
|
||
"settings.could_not_start_removal": "Could not start the removal",
|
||
"settings.default_model": "Default model",
|
||
"settings.delete_group": "Delete the group?",
|
||
"settings.delete_integration": "Delete the integration?",
|
||
"settings.demo_contents": "Operators and groups, agents with connections, knowledge, conversations in every state, voice messages, reply templates, a support portal, calls and notifications. Removed as a whole — your own data is untouched.",
|
||
"settings.demo_data": "Demo data",
|
||
"settings.demo_data_being_installed_sections": "The demo data is being installed — the sections fill up in a few seconds.",
|
||
"settings.demo_data_ready": "The demo data is ready.",
|
||
"settings.demo_provider_no_key": "Demo provider (no key)",
|
||
"settings.demo_records_count": "{count} records",
|
||
"settings.disabled": "Disabled",
|
||
"settings.domain_or_ip": "Domain or IP",
|
||
"settings.e_g_openrouter_primary": "e.g. OpenRouter · primary",
|
||
"settings.e_g_support_mailbox": "e.g. Support mailbox",
|
||
"settings.edit_integration": "Edit the integration",
|
||
"settings.email_address": "Email address",
|
||
"settings.email_not_configured_nothing_sent": "Email is not configured: nothing is sent, and inviting an operator will not work.",
|
||
"settings.email_sent_to": "An email was sent to {email}. If it does not arrive, check the spam folder.",
|
||
"settings.embed_snippet_site": "Embed snippet for the site",
|
||
"settings.endpoint_non_aws_providers": "Endpoint (for non-AWS providers)",
|
||
"settings.entry_point": "Entry point",
|
||
"settings.entry_point_off": " · switched off",
|
||
"settings.every_record_demo_set_will": "Every record of the demo set will be deleted: operators, agents, conversations, knowledge and files. Anything you created stays.",
|
||
"settings.example_com_example_com_comma": "example.com, *.example.com — comma-separated",
|
||
"settings.external_s3": "External S3",
|
||
"settings.file_storage": "File storage",
|
||
"settings.files_live_installation_s_data": "Files live in the installation's data/media directory. Fine for a single server; for several instances or for redundancy, switch on S3.",
|
||
"settings.gmail_yandex_use_app_password": "For Gmail and Yandex use an app password, not the main account password",
|
||
"settings.green": "Green",
|
||
"settings.group_membership_edited_operator_card": "Group membership is edited on the operator card. Conversations without a group are visible to every operator.",
|
||
"settings.host": "Host",
|
||
"settings.http_host_port_or_socks5": "http://host:port or socks5://user:pass@host:port — empty for no proxy",
|
||
"settings.incoming_mail_imap": "Incoming mail · IMAP",
|
||
"settings.install": "Install",
|
||
"settings.install_again": "Install again",
|
||
"settings.installation_address": "Installation address",
|
||
"settings.installation_disk": "On the installation disk",
|
||
"settings.installation_failed": "Installation failed",
|
||
"settings.installed": "Installed",
|
||
"settings.installing": "Installing",
|
||
"settings.installing_2": "Installing…",
|
||
"settings.integration_actions": "Integration actions",
|
||
"settings.knowledge_attachments_voice_messages_photos": "Knowledge attachments, voice messages, photos and logos",
|
||
"settings.knowledge_attachments_voice_messages_photos_2": "Knowledge attachments, voice messages, photos and logos will be written to the bucket under per-organization prefixes. Files already uploaded stay available from disk until they are migrated.",
|
||
"settings.language": "Interface language",
|
||
"settings.language_as_installation": "Match the installation",
|
||
"settings.language_instance": "Installation language",
|
||
"settings.language_instance_hint": "The language of screens where there is no organization yet: sign-in, password reset, the first-run wizard. It is also the default for organizations that have not picked their own.",
|
||
"settings.language_org_hint": "The language the workspace opens in for this organization's operators. Anyone can pick their own in their profile.",
|
||
"settings.leave_empty_keep_unchanged": "leave empty to keep it unchanged",
|
||
"settings.lime": "Lime",
|
||
"settings.migrate_files_from_disk": "Migrate the files from disk",
|
||
"settings.migration_done": "Migration finished: {done} files",
|
||
"settings.migration_failed": "Migration stopped: {error}",
|
||
"settings.migration_has_started_runs_background": "The migration has started and runs in the background.",
|
||
"settings.migration_progress": "Migration: {done} of {total}",
|
||
"settings.name_logo_regional_settings_visible": "Name, logo and regional settings. Visible to operators, in the widget and in emails.",
|
||
"settings.new_group_name": "New group name",
|
||
"settings.new_integration": "New integration",
|
||
"settings.no_agent": "no agent",
|
||
"settings.no_connections_yet_add_bot": "No connections yet. Add a bot, a mailbox or the web widget.",
|
||
"settings.no_groups": "no groups",
|
||
"settings.no_providers_yet_add_openrouter": "No providers yet. Add OpenRouter or a custom endpoint.",
|
||
"settings.nord_atelier": "Nord Atelier",
|
||
"settings.not_checked_yet": "not checked yet",
|
||
"settings.not_installed": "Not installed",
|
||
"settings.not_linked": "— not linked —",
|
||
"settings.notification_bot_operators_service_bot": "Notification bot for operators (a service bot; it does not answer customers, and is linked in the profile)",
|
||
"settings.operator_invitations_password_resets": "Operator invitations and password resets",
|
||
"settings.organization": "Organization",
|
||
"settings.organization_s_keys_agent_replies": "Your organization's keys for agent replies and voice transcription. The model is chosen on the agent card.",
|
||
"settings.outgoing_email": "Outgoing email",
|
||
"settings.outgoing_mail_smtp": "Outgoing mail · SMTP",
|
||
"settings.path_bucket_path": "path (bucket in the path)",
|
||
"settings.pink": "Pink",
|
||
"settings.platform": "Platform",
|
||
"settings.port": "Port",
|
||
"settings.properties_installation_itself_address_opened": "Properties of the installation itself: the address it is opened at and that file links are built from, and the mail server for invitations and password resets.",
|
||
"settings.providers": "Providers",
|
||
"settings.proxy": "Proxy",
|
||
"settings.proxy_password_never_returned_dots": "The proxy password is never returned: dots stand in for it. Leave them as they are to keep the old password; to change it, type the new one in full",
|
||
"settings.purple": "Purple",
|
||
"settings.receiving_sending_messages_stopped": "Receiving and sending messages is stopped",
|
||
"settings.red": "Red",
|
||
"settings.region": "Region",
|
||
"settings.relay_when_direct_connection_does": "A relay for when a direct connection does not get through",
|
||
"settings.remove_demo_data": "Remove the demo data",
|
||
"settings.remove_demo_data_2": "Remove the demo data?",
|
||
"settings.removing": "Removing",
|
||
"settings.removing_2": "Removing…",
|
||
"settings.saved": "•••••••• (saved)",
|
||
"settings.saved_calls_will_use_these": "Saved. Calls will use these relay addresses.",
|
||
"settings.saved_email_will_go_through": "Saved. Email will go through this server.",
|
||
"settings.saved_file_links_will_use": "Saved. File links will use this address.",
|
||
"settings.saved_files_kept_installation_disk": "Saved. Files are kept on the installation disk.",
|
||
"settings.saved_new_files_go_s3": "Saved. New files go to S3, access verified.",
|
||
"settings.secret": "SECRET",
|
||
"settings.see_system_at_work_fictional": "See the system at work on a fictional organization.",
|
||
"settings.send_test_email": "Send a test email",
|
||
"settings.sender": "Sender",
|
||
"settings.sending": "Sending…",
|
||
"settings.separate_screens": "Separate screens",
|
||
"settings.service_notification_bot_named": "{name} · service notification bot",
|
||
"settings.settings_available_owner_administrators": "Settings are available to the owner and administrators",
|
||
"settings.sign_as_demo_operator_private": "Sign in as a demo operator in a private window to see the system through their eyes:",
|
||
"settings.sites_where_widget_may_open": "Sites where the widget may open: a domain, subdomains via “*.” or a full origin with a port. Everywhere else the chat answers “Chat is temporarily unavailable”",
|
||
"settings.smtp_server": "SMTP server",
|
||
"settings.storage_reachable_test_object_was": "The storage is reachable: a test object was written and deleted.",
|
||
"settings.switched_off": "· switched off",
|
||
"settings.system_opened_at_file_links": "The system is opened at it, and file links are built from it",
|
||
"settings.there_error": "There is an error",
|
||
"settings.there_no_entry_points_yet": "There are no entry points yet — connect a bot, a mailbox or the web widget under Integrations.",
|
||
"settings.they_split_conversations_between_operators": "They split conversations between operators: an operator sees conversations of their groups, those without a group and those they are assigned to.",
|
||
"settings.title": "TITLE",
|
||
"settings.tls_encryption_smtp_server": "TLS encryption to the SMTP server",
|
||
"settings.turn_addresses_one_per_line": "TURN addresses — one per line",
|
||
"settings.turn_calls": "TURN for calls",
|
||
"settings.turn_note": "Needed only when calls cross networks with strict NAT. The shared secret with the relay server {secret}",
|
||
"settings.turn_note_prefix": "Needed only when calls cross networks with strict NAT. The shared secret with the relay server",
|
||
"settings.type": "Type",
|
||
"settings.unavailable": "unavailable",
|
||
"settings.unclear_domain": "Unclear domain: {domain}",
|
||
"settings.user": "User",
|
||
"settings.video_calls": "Video calls",
|
||
"settings.virtual_host_bucket_domain": "virtual-host (bucket in the domain)",
|
||
"settings.voice_calls": "Voice and calls",
|
||
"settings.voice_messages": "Voice messages",
|
||
"settings.voice_messages_sent_by_customer": "Voice messages sent by a customer from a messenger are always accepted. Email does not support calls. Changes take effect at once.",
|
||
"settings.voice_transcription_model": "Voice transcription model",
|
||
"settings.was_already_created_by_installation": "was already created by the installation — there is nothing to enter.",
|
||
"settings.web_widget_embed_snippet_copied": "The web widget embed snippet is copied from its agent's card.",
|
||
"settings.where_customer_operator_can_record": "Where a customer and an operator can record voice messages and start audio and video calls.",
|
||
"settings.where_keep_files": "Where to keep files",
|
||
"settings.will_be_deleted_irreversible": "“{name}” will be deleted. This cannot be undone.",
|
||
"settings.will_created_next_time_stack": "will be created the next time the stack starts.",
|
||
"shared.403_access_denied": "403 · Access denied",
|
||
"shared.active": "Active",
|
||
"shared.agent_card": "Agent card",
|
||
"shared.ai_usage": "AI usage",
|
||
"shared.archived": "Archived",
|
||
"shared.attached": "Attached",
|
||
"shared.blocked": "Blocked",
|
||
"shared.blue": "Blue",
|
||
"shared.category_can_only_deleted_once": "A category can only be deleted once the categories and material inside it have been moved out.",
|
||
"shared.category_decides_placement_only_not": "A category decides placement only, not access",
|
||
"shared.category_name": "Category name",
|
||
"shared.characters_and_paragraphs": "{characters} characters · {paragraphs}",
|
||
"shared.checking": "Checking",
|
||
"shared.could_not_change_categories": "Could not change the categories",
|
||
"shared.could_not_load_list": "Could not load the list",
|
||
"shared.create_category": "Create a category",
|
||
"shared.create_subcategory_in": "Create a subcategory in {name}",
|
||
"shared.delete_category": "Delete the category?",
|
||
"shared.delete_named": "Delete {name}",
|
||
"shared.detached": "Detached",
|
||
"shared.go_back": "Go back",
|
||
"shared.hide_hint": "Hide the hint",
|
||
"shared.inactive": "Inactive",
|
||
"shared.indigo": "Indigo",
|
||
"shared.invited": "Invited",
|
||
"shared.knowledge_categories": "Knowledge categories",
|
||
"shared.knowledge_editor": "Knowledge editor",
|
||
"shared.knowledge_import": "Knowledge import",
|
||
"shared.knowledge_item": "Knowledge item",
|
||
"shared.line_column": "Line {line}, column {column}",
|
||
"shared.link_text": "link text",
|
||
"shared.loading_failed": "Loading failed",
|
||
"shared.manage_categories": "Manage categories",
|
||
"shared.network_error": "Network error",
|
||
"shared.never_checked": "Never checked",
|
||
"shared.new_knowledge_item": "New knowledge item",
|
||
"shared.next_page": "Next page",
|
||
"shared.orange": "Orange",
|
||
"shared.pick_agent": "Pick an agent",
|
||
"shared.portal_settings": "Portal settings",
|
||
"shared.previous_page": "Previous page",
|
||
"shared.published": "Published",
|
||
"shared.role_has_no_access_section": "Your role has no access to this section.",
|
||
"shared.running": "Running",
|
||
"shared.skipped_count": "Skipped: {count}.",
|
||
"shared.support_portal": "Support portal",
|
||
"shared.sys": "SYS.",
|
||
"shared.table_template": "\n| Column | Column |\n| ------ | ------ |\n| Value | Value |\n",
|
||
"shared.teal": "Teal",
|
||
"shared.there_no_agents_attach_material": "There are no agents to attach material to.",
|
||
"time.autosaved_at": "Autosaved at {time}",
|
||
"time.days_ago": "{count} d ago",
|
||
"time.days_ago_short": "{count} d ago",
|
||
"time.days_short": "{count} d",
|
||
"time.duration_is": "Duration {duration}.",
|
||
"time.hours_ago": "{count} h ago",
|
||
"time.hours_minutes": "{hours} h {minutes} min",
|
||
"time.hours_short": "{count} h",
|
||
"time.minutes_ago": "{count} min ago",
|
||
"time.minutes_short": "{count} min",
|
||
"time.resend_in": "Send again in {seconds} s",
|
||
"time.saved_at": "Saved {time}",
|
||
"time.today_at": "{time} · today",
|
||
"time.today_comma": "today, {time}",
|
||
"time.yesterday_comma": "yesterday, {time}",
|
||
"unit.b": "{value} B",
|
||
"unit.kb": "{value} KB",
|
||
"unit.mb": "{value} MB",
|
||
"ai.answer_language": "Answer language",
|
||
"ai.answer_language_hint": "The language the agent writes to the client in",
|
||
"ai.answer_language_mirror": "Same as the client",
|
||
"ai.answer_language_organization": "The organization's language",
|
||
};
|