Администратор работает по-русски, мастер — по-украински, а напоминание о задаче ставит крон, у которого языка нет вообще. Чей язык должен оказаться в уведомлении? Ответ один и он не про удобство: язык читателя.
Почему это вообще вопрос
Уведомление рождается в момент события. Его создаёт другой человек — тот, кто перенёс запись или назначил задачу, — или вовсе служба по расписанию. Читает его третий. Если текст собрать сразу, он приедет на языке автора: мастер, у которого весь кабинет украинский, получал «Оплата не прошла» посреди украинского интерфейса.
Поэтому в уведомление кладётся не готовая строка, а то, что ей предстоит стать: ключ и подстановки. Перевод происходит в последний момент — когда уже известно, кому именно это читать.
Порядок выбора языка
Язык получателя ищется лесенкой, по убыванию достоверности:
- Выбор человека в профиле. Если он есть — спорить не с чем.
- Язык, на котором человек работает. Интерфейс запоминает его сам: приложение сообщает серверу язык на каждом запросе, и это наблюдение сохраняется. До настроек профиля доходят единицы, а этот язык известен про каждого.
- Язык компании. Для крона это куда более верное умолчание, чем общее для всей системы: уведомление салона логично писать на языке салона.
- Язык приложения. Последняя ступень, и именно из неё когда-то брался русский текст в украинском кабинете.
Уведомление, у которого личного получателя нет — то, что адресовано всей компании, — переводится на язык компании. Это и есть второй случай, для которого нужна третья ступень.
Два поля вместо одного
Выбор человека и наблюдение за тем, на каком языке он работает, хранятся отдельно, и это не дублирование.
Пустое значение в выборе — это тоже ответ: «как по умолчанию». Человек не просил конкретный язык, он согласен с тем, что система решит сама. Если записать туда наблюдение, у этого ответа не останется смысла: отличить «я выбрал русский» от «я в тот вторник зашёл с русского браузера» будет нечем, а первое должно быть сильнее второго навсегда.
Поэтому наблюдение пишется в своё поле и только когда оно изменилось: язык приходит с каждым запросом, и запись «то же самое» означала бы обновление профиля на каждое обращение к приложению.
Как это выглядит на практике
Переключите язык в шапке приложения — и уведомления начнут приходить на нём же. Отдельно ничего настраивать не нужно: язык, на котором вы работаете, и есть ответ на вопрос «на каком языке вам писать».
Явный выбор языка уведомлений поддержан на стороне сервера и пока не вынесен в профиль отдельным переключателем. Когда он там появится, работать он будет так, как описано выше: выбранный язык сильнее наблюдения, а пустое значение означает «как по умолчанию» и возвращает лесенку к языку интерфейса.
Языки, на которых продукт разговаривает, — украинский, русский и английский. Значение вне этого списка игнорируется, то есть лесенка просто идёт на ступень ниже, а не отдаёт текст на незнакомом языке.
Что проверить, если язык всё-таки не тот
- Посмотрите, на каком языке у вас интерфейс. Уведомление идёт за ним, а не за языком того, кто событие создал.
- Проверьте язык компании в её настройках: он решает для уведомлений без личного получателя и для тех случаев, когда о человеке ничего не известно.
- Строки, которые уже лежат в базе, задним числом не переводятся. Названия услуг, созданных стартовым набором, или текст, набранный руками, уведомление покажет так, как он записан. Переводится оболочка уведомления, а не содержимое вашего салона.
Комментарии
Комментариев пока нет. Задайте вопрос — отвечаем в течение суток.