Pull to refresh

Comments 5

Насколько я понял, описан подход "сделать проект на русском, потом добавить переводы".

Наверное возможен и другой подход: создать программу на каком-то языке, понятном программисту, а все функции отображения принимают на вход не русский текст, который нужно перевести, а код сообщения, который по базе перевода переводится в юникод строки одинаковым образом для всех языков, включая русский.

Бонусом будет то, что реплики перевода можно сгруппировать по уровням иерархии в структуре типа YAML или JSON, например: i18n('mail.breadcrumbs.main_page_title') даст обращение к конфигу типа

{
  mail: {
    breadcrumbs: {
      main_page_title: 'Корень зла'
    }
  }
}

const interfaceMsg =
  'На почту {bo}{email}{bc} отправлено п...';
// код внутри компонента/view
const msg = i18nLib.formatMessage(interfaceMsg, {
  email: htmlEscape(email),
  bo: '<b>',
  bc: '</b>',
});

Всегда было интересно почему переводчик занимается внешним видом. А если вдруг дизайнер захочет сделать italic? К кому идем? Переводчику, программисту или верстальщику?

И всегда было интересно как делать правильно ;)

Сильная статья, познавательно, я прям проникся 😳

Самое грустное, что буквально пару дней назад один из моих разработчиков писал свой велосипед для плюралисов.

Не раскрыли тему по какому принципу составлять ключи перевода.. интересно было бы узнать.

Частенько встречаю сервисы, в которых некоторые строки (например, текст ошибки) возвращаются с сервера как есть. На мой взгляд, так делать не стоит. Текст интерфейса должен быть зоной ответственности клиентской части приложения. Если это не так, то всю логику работы с интернационализацией придётся дублировать в двух местах: на frontend и backend. Поэтому, возвращаясь к примеру с текстом ошибки, лучше вернуть её код, по которому клиент выдаст нужную строку на нужном языке.

Так обычно возвращается и текст и код ошибки. То что фронт показывает текст как есть - это его залёт. Конечно же он должен завязываться только на код ошибки. Текст - это для разработчиков в основном.

Последнее, о чём стоит поговорить — о месте перевода в процессе разработки.

Можно попробовать делать переводы на этапе проектирования фичи. Чтоб макеты уже были с переводами. Таким образом мы "нашарик" подключим ещё один фильтр в виде пары глаз и головы к аналитикам. Т.е. переводчик должен будет вникнуть в фичу и понять её (как юзер), чтоб максимально качественно и адекватно перевести. Если он её не понимает - значит аналитики что-то переусложнили, и можно подумать над упрощением.

Hidden text

Обидно, что не так много российских сервисов популярны за рубежом. Может быть, причина как раз в том, что многие не задумываются об интернационализации. И если уделить ей внимание, наши сервисы могли бы получить большую популярность на мировом рынке.

и дополнительно перестать быть гопником на мировой арене)

Sign up to leave a comment.