Назад

gt-react@10.15.0

Ernest McCarter avatarErnest McCarter
gt-reactderivetagged-templatei18n

Обзор

В этом релизе продолжается переход gt-react от контекста React, а также развитие макроса тегированного шаблона t. derive() теперь работает внутри тегированного шаблонного литерала t. Ранее derive() можно было использовать только внутри вызовов функции t():

t("The {subject} is playing.", { subject: derive(getSubject(gender)) })

Теперь вы можете записать это прямо в шаблонном литерале:

t`The ${derive(getSubject(gender))} is playing.`

Как это работает

derive() указывает утилите CLI проанализировать все возможные возвращаемые значения функции и создать отдельную запись перевода для каждого из них. Это позволяет сохранить грамматическое согласование в разных языках — например, в испанском языке «Мальчик играет.» и «Девочка играет.» требуют разных артиклей (El niño vs La niña).

Пример

import { t } from "gt-react/browser";
import { derive } from "gt-react";

function getSubject(gender) {
  return gender === "male" ? "boy" : "girl";
}

function Component({ gender }) {
  return <p>{t`The ${derive(getSubject(gender))} is playing.`}</p>;
}

Это создаёт две записи перевода:

  • "Мальчик играет."
  • "Девочка играет."

Ссылки