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-инструменту проанализировать все возможные значения, которые может возвращать функция, и создать отдельную запись перевода для каждого из них. Это позволяет сохранить грамматическое согласование в разных языках — например, в испанском для фраз «The boy is playing» и «The girl is playing» нужны разные артикли (El niño и 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>;
}Это создаст две записи перевода:
- "Мальчик играет."
- "Девочка играет."