@thinking-home/i18n
v0.4.0
Published
    , amount: count({ one: "one message", other: "{count} messages", }), } );
Вы получаете контекст, содержащий тексты для заданного языка.
import { Context } from "@thinking-home/i18n"; const ctx = new Context({ locale: "ru", messages: { hello: "Привет, {name}!", amount_one: "{count} сообщение", amount_two: "{count} сообщения", amount_many: "{count} сообщений", }, });
Когда нужно получить текст сообщения на заданном языке, вы используете функцию
translate
набора ключей и передаете в нее контекст.const title = keyset.translate(ctx, "hello", { name: "Вася" }); // Привет, Вася! const hint = keyset.translate(ctx, "amount", { count: 21 }); // 21 сообщение
Если вам нужно вставить внутрь текста сложные объекты, вы можете использовать функцию
translateRaw
набора ключей. Набор параметров функцииtranslateRaw
совпадает с функциейtranslate
.const content = keyset.translateRaw(ctx, "hello", { name: <a href="/user/1235487">Вася</a> }); expect(content).toBe([ "Привет, ", <a href="/user/1235487">Вася</a>, "!" ]);