gt-react@10.15.0
Обзор
В этом релизе продолжается переход 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>;
}Это создаёт две записи перевода:
- "Мальчик играет."
- "Девочка играет."