Привет Томаш,

Сначала я думаю, что ваша библиотека интересна, мне нравится литеральный синтаксис шаблона. Но у меня есть веская причина использовать message.id.

  • message.id позволит вам переводить пространства имен в приложения и компоненты (id=”Description.contact.link”)
  • Вы можете указать дополнительную информацию для переводчика в описании
  • вы можете использовать message.id для целей управления контентом (я расскажу об этом в следующей статье)
  • добавление текста в ваши компоненты, который ведет себя как ключ, может усложнить обслуживание в больших проектах.
  • у вас могут быть конфликты имен, а рефакторинг кода также потребует изменения переводов.
  • большая проблема заключается в тестировании поверхностного компонента рендеринга с использованием моментальных снимков Enzyme и Jest с переводом, что даст вам следующий результат.
it("shallow", () => {
  const wrapper = shallow(
    <Link href="#">
      <FormattedMessage {...messages.contactLink} />
    </Link>
  );
  expect(wrapper).toMatchSnapshot();
});
/* 
<a href="#">
  <FormattedMessage
    defaultMessage="Leave a phone number"
    description="follow contact link text"
    id="Description.contact.link"
    values={Object {}}
  />
<a/>
*/