Перейти к основному содержимому
Версия: 5.2.0

Локализация

В СДК по-умолчанию поддерживаются русская и английская локализации.

Для добавления поддержки нового языка или изменения текущего перевода, необходимо:

  • Добавить свой файл с переводом в бандл (приложения/фреймворка)
  • Указать его в ChatLocalizationConfig при инициализации СДК

Пример настройки:

        // Инициализация СДК
let chatCenterSdk = ChatCenterUISDK(providerUid: "providerUid",
chatConfig: chatConfig,
loggerConfig: ChatLoggerConfig(logLevel: .all))

// Настройка локализации
chatCenterSdk.localizationConfig = ChatLocalizationConfig(bundle: Bundle.main, tableName: "Locale.strings")

📋 Ключи локализации

КатегорияКлючЗначение по умолчаниюОписаниеПример использования / Примечания
Кнопкиaction.title_okOKПодтверждение действияИспользуется в диалогах подтверждения (например, “Вы уверены?” → OK/Отмена)
action.title_yesДаПоложительный ответВ вопросах типа “Продолжить? Да/Нет”
action.title_noНетОтрицательный ответ
action.title_cancelОтменаОтмена действияВ модальных окнах, загрузках, отправке сообщений
action.title_repeatПовторитьПовторить действиеПри ошибке отправки: “Повторить отправку”
action.title_connectПодключитьсяПодключение к серверу или операторуНа кнопке “Подключиться к чату”
action.alert_sendОтправитьОтправка сообщенияВ форме отправки сообщения
Чатchat.available_readonly_textДанный чат доступен только для просмотраИнформация о режиме чтенияОтображается, если пользователь не может писать
chat.client_nameВыОбращение к клиенту в цитатах, своих сообщенияхВ истории: “Вы: Привет”, “Оператор: Здравствуйте”
chat.title.waitingПожалуйста, подождите...Ожидание подключения оператораОтображается при ожидании соединения
chat.title.connectingПодключение...Процесс подключения к серверуАнимированный индикатор + текст
chat.title.openedКонтакт центрЗаголовок открытого чатаВ шапке навигации после открытия чата
chat.title.waiting_for_specialistПоиск оператора...Ожидание подключения специалистаПосле нажатия “Начать чат”
chat.title.workingОператорЗаголовок при активном общении с операторомОтображается в шапке во время диалога
chat.title.typingоператор набираетИндикатор набора текста операторомОтображается под заголовком при наборе
Роли оператораoperator.botБотРоль ботаВ шапке: “Бот: Здравствуйте!”
operator.external.botБотВнешний бот
operator.operatorОператорРоль обычного оператора
operator.supervisorОператорРоль супервайзераМожет отличаться в будущем
operator.systemОператорСистемное сообщение (от имени оператора)
operator.integrationОператорИнтеграционный оператор
Загрузкаloading.titleЗагрузкаТекст индикатора загрузкиВ скролле, при загрузке истории
Вводinput.placeholderСообщениеПлейсхолдер в поле ввода сообщенияКогда поле пустое
input.voice_recording_hintУдерживайте, чтобы начать записьПодсказка для записи голосового сообщенияПри долгом нажатии на микрофон
Пустой чатempty_chat.placeholder_titleДобро пожаловать в контакт центрЗаголовок заглушки в пустом чатеОтображается при первом открытии чата
empty_chat.placeholder_descОтправьте ваш вопрос, первый освободившийся оператор на него ответит.Описание заглушки
Ошибки отправкиalert.resend_failed_message.title""Заголовок алерта об ошибке отправкиМожет быть пустым, зависит от реализации
alert.resend_failed_message.descСообщение не было отправлено. Нажмите «повторить отправку», чтобы отправитьОписание ошибки
alert.resend_failed_message.retry_btnПовторить отправкуКнопка повторной отправки
alert.resend_failed_message.delete_btnУдалитьКнопка удаления сообщения
Доступ / Разрешенияalert.access_denied_titleНет доступаЗаголовок при отказе в доступе
alert.file_sending_denied_descОтправка файлов отключена на сервереОшибка при попытке отправить файл
alert.unlock_photos_accessРазблокируйте доступ к фотографиям в настройках приложения, чтобы продолжитьПодсказка при отсутствии доступа к фотоальбому
alert.send_selected_file_to_chatОтправить выбранный файл "%@" в чат?Подтверждение отправки файла%@ — имя файла
alert.picker_files_btnФайлыКнопка выбора файлов
alert.camera_not_foundНа Вашем устройстве не найдена камераОшибка при отсутствии камеры
alert.unlock_camera_accessРазблокируйте доступ к камере в настройках приложения, чтобы продолжитьПодсказка при отсутствии доступа к камере
alert.cant_take_photoНе удалось сделать фотографиюОшибка при съёмке
alert.app_settingsНастройкиКнопка перехода в настройки приложения
alert.voice_recording_deniedДоступ к микрофону запрещен, для записи голосовых сообщений разрешите доступ в настройкахОшибка при отсутствии доступа к микрофону
alert.text_copied_messageТекст скопирован в буфер обменаУведомление о копировании текста
Статусы сообщенийmessage.status.not_deliveredНе доставленоСтатус недоставленного сообщенияОтображается рядом с сообщением
message.status.validation_errorНе доставленоОшибка валидации (например, неверный формат)
Сообщенияmessage.deleted_textСообщение удаленоТекст вместо удалённого сообщения
message.send_file_limit_alert_titleРазмер файлаЗаголовок алерта превышения размера файла
message.send_file_limit_alert_messageПревышен максимально допустимый для отправки размера файла (%.0f Мб)Сообщение об ограничении размера файла%.0f — подставляется число (например, 25 Мб)
message.incorrect_url_for_openingНе удалось открыть ссылкуОшибка при открытии URL
message.photo_titleФОТОЗаголовок для вложенного фото
message.voice_titleГОЛОСОВОЕ СООБЩЕНИЕЗаголовок для голосового сообщения
message.voice_play_errorОшибка при воспроизведенииОшибка при проигрывании голосового сообщения
message.unsupported_file_formatНеподдерживаемый форматОшибка при отправке файла с неподдерживаемым расширением
Системные сообщенияmessage.system.join_chat_unknownподключился(-ась) к диалогу в %@Системное сообщение о подключении (неизвестный пол)%@ — время подключения (например, “в 14:30”)
message.system.join_chat_maleподключился к диалогу в %@Подключение мужского оператора
message.system.join_chat_femaleподключилась к диалогу в %@Подключение женского оператора
message.system.leave_chat_unknownпокинул(а) диалог в %@Покидание диалога (неизвестный пол)
message.system.leave_chat_maleпокинул диалог в %@Покидание мужским оператором
message.system.leave_chat_femaleпокинула диалог в %@Покидание женским оператором
Меню цитированияmenu.response_titleОтветитьКнопка ответа на сообщение
menu.copy_titleКопироватьКнопка копирования текста сообщения
Поискsearch.placeholder_titleПоискПлейсхолдер в строке поиска
search.not_found_titleРезультатов не найденоСообщение при отсутствии результатов
search.more_btnИскать ещеКнопка для дополнительного поиска
search.image_attachment_titleизображениеОписание вложения (изображение) в результатах поиска
search.audio_attachment_titleаудио файлОписание вложения (аудио) в результатах поиска
Опросыsurvey.message_vote_from_titleизЧасть фразы “Оцените от 1 до 5: 3 из 5”
survey.message_thanks.titleСпасибо за вашу оценкуСообщение после отправки отзыва
survey.request_close_thread_messageСпециалист ответил на все ваши вопросы, продолжить консультацию?Запрос завершения диалога
Ошибки SDKerrors.init_failed_titleВозникла проблема во время инициализации чата:Заголовок ошибки инициализации
errors.connection_timeoutИстекло время ожидания подключения к серверуОшибка таймаута соединения
errors.load_configНе удалось загрузить настройки чатаОшибка загрузки конфигурации
errors.voice_messageНе удалось завершить загрузку файлаОшибка при загрузке голосового сообщения
errors.code_from_400_to_500_titleИзвините за неудобства, чат в данный момент недоступен. Пожалуйста, попробуйте позднее.Общая ошибка сервера (HTTP 4xx–5xx)
errors.code_from_400_to_500_desc""Дополнительное описание (может быть пустым)
errors.disallowed_file_loadingЗагрузка файла не выполнена.\nНе удалось проверить файлОшибка проверки файла
errors.timeout_during_load_fileНе удалось завершить загрузку файла, истек таймаут.\nПопробуйте загрузить файл позжеТаймаут при загрузке файла
errors.unexpected_error_during_load_fileНе удалось завершить загрузку файла.\nПопробуйте отправить файл позжеНеожиданная ошибка загрузки
errors.during_load_fileПроизошла ошибка при загрузке или проверке файлаОбщая ошибка загрузки файла
Меню вложенийattachments.menu.my_albumsМои альбомыКнопка выбора файла из фотоальбома
attachments.menu.take_photoСделать снимокКнопка для съёмки фото

Полный файл (.strings) для копирования

// Кнопки
"action.title_ok" = "OK";
"action.title_yes" = "Да";
"action.title_no" = "Нет";
"action.title_cancel" = "Отмена";
"action.title_repeat" = "Повторить";
"action.title_connect" = "Подключиться";
"action.alert_send" = "Отправить";

"chat.available_readonly_text" = "Данный чат доступен только для просмотра";
"chat.client_name" = "Вы"; // Обращение к клиенту (цитаты, собственные сообщения в поиске и т.д)

"chat.title.waiting" = "Пожалуйста, подождите..."; // Ожидание подключения оператора
"chat.title.connecting" = "Подключение..."; // Подключение к серверу
"chat.title.opened" = "Контакт центр"; // Открыт чат
"chat.title.waiting_for_specialist" = "Поиск оператора..."; // Ожидание подключения оператора
"chat.title.working" = "Оператор"; // Оператор подключился к диалогу
"chat.title.typing" = "оператор набирает";

// Заголовок специалиста (Роль)
"operator.bot" = "Бот";
"operator.external.bot" = "Бот";
"operator.operator" = "Оператор";
"operator.supervisor" = "Оператор";
"operator.system" = "Оператор";
"operator.integration" = "Оператор";

"loading.title" = "Загрузка"; // Индикатор загрузки чата

"input.placeholder" = "Сообщение"; // Плэйсхолдер в панели ввода
"input.voice_recording_hint" = "Удерживайте, чтобы начать запись"; // Подсказка о записи голосового

"empty_chat.placeholder_title" = "Добро пожаловать в контакт центр"; // Заглушка в пустом чате
"empty_chat.placeholder_desc" = "Отправьте ваш вопрос, первый освободившийся оператор на него ответит."; // Описание заглушки в пустом чате

"alert.resend_failed_message.title" = "";
"alert.resend_failed_message.desc" = "Сообщение не было отправлено. Нажмите «повторить отправку», чтобы отправить";
"alert.resend_failed_message.retry_btn" = "Повторить отправку";
"alert.resend_failed_message.delete_btn" = "Удалить";
"alert.access_denied_title" = "Нет доступа";
"alert.file_sending_denied_desc" = "Отправка файлов отключена на сервере";
"alert.unlock_photos_access" = "Разблокируйте доступ к фотографиям в настройках приложения, чтобы продолжить";
"alert.send_selected_file_to_chat" = "Отправить выбранный файл \"%@\" в чат?";
"alert.picker_files_btn" = "Файлы";
"alert.camera_not_found" = "На Вашем устройстве не найдена камера";
"alert.unlock_camera_access" = "Разблокируйте доступ к камере в настройках приложения, чтобы продолжить";
"alert.cant_take_photo" = "Не удалось сделать фотографию";
"alert.app_settings" = "Настройки";
"alert.voice_recording_denied" = "Доступ к микрофону запрещен, для записи голосовых сообщений разрешите доступ в настройках";
"alert.text_copied_message" = "Текст скопирован в буфер обмена";

// Статусы сообщений
"message.status.not_delivered" = "Не доставлено";
"message.status.validation_error" = "Не доставлено";

// Сообщения
"message.deleted_text" = "Сообщение удалено";
"message.send_file_limit_alert_title" = "Размер файла";
"message.send_file_limit_alert_message" = "Превышен максимально допустимый для отправки размера файла (%.0f Мб)";
"message.incorrect_url_for_opening" = "Не удалось открыть ссылку";
"message.photo_title" = "ФОТО";
"message.voice_title" = "ГОЛОСОВОЕ СООБЩЕНИЕ";
"message.voice_play_error" = "Ошибка при воспроизведении";
"message.unsupported_file_format" = "Неподдерживаемый формат";

// Системные сообщения
"message.system.join_chat_unknown" = "подключился(-ась) к диалогу в %@";
"message.system.join_chat_male" = "подключился к диалогу в %@";
"message.system.join_chat_female" = "подключилась к диалогу в %@";
"message.system.leave_chat_unknown" = "покинул(а) диалог в %@";
"message.system.leave_chat_male" = "покинул диалог в %@";
"message.system.leave_chat_female" = "покинула диалог в %@";

// Меню цитирования
"menu.response_title" = "Ответить";
"menu.copy_title" = "Копировать";

// Поиск
"search.placeholder_title" = "Поиск"; // Плэйсхолдер в строке поиска
"search.not_found_title" = "Результатов не найдено";
"search.more_btn" = "Искать еще";
"search.image_attachment_title" = "изображение";
"search.audio_attachment_title" = "аудио файл";

// Опросы
"survey.message_vote_from_title" = "из";
"survey.message_thanks.title" = "Спасибо за вашу оценку";
"survey.request_close_thread_message" = "Специалист ответил на все ваши вопросы, продолжить консультацию?";

// Ошибки в СДК
"errors.init_failed_title" = "Возникла проблема во время инициализации чата:";
"errors.connection_timeout" = "Истекло время ожидания подключения к серверу";
"errors.load_config" = "Не удалось загрузить настройки чата";
"errors.voice_message" = "Не удалось завершить загрузку файла"; // Ошибка при загрузке голосового сообщения
"errors.code_from_400_to_500_title" = "Извините за неудобства, чат в данный момент недоступен. Пожалуйста, попробуйте позднее.";
"errors.code_from_400_to_500_desc" = "";
"errors.disallowed_file_loading" = "Загрузка файла не выполнена.\nНе удалось проверить файл";
"errors.timeout_during_load_file" = "Не удалось завершить загрузку файла, истек таймаут.\nПопробуйте загрузить файл позже";
"errors.unexpected_error_during_load_file" = "Не удалось завершить загрузку файла.\nПопробуйте отправить файл позже";
"errors.during_load_file" = "Произошла ошибка при загрузке или проверке файла";

// Меню вложений
"attachments.menu.my_albums" = "Мои альбомы";
"attachments.menu.take_photo" = "Сделать снимок";