gt-node@0.2.0
Обзор
ВАЖНО Эта библиотека всё ещё экспериментальная и может измениться с нарушением обратной совместимости.
gt-node добавляет поддержку General Translation в серверный JavaScript. Он работает в Node.js, Bun и Deno.
Создавая контекст для каждого запроса через AsyncLocalStorage, gt-node позволяет импортировать функции перевода напрямую из библиотеки:
const gt = await getGT();Это соответствует API наших других библиотек, таких как gt-next, при работе с асинхронными функциями.
Что входит
initializeGT()— Настраивает синглтон i18n. Вызывайте один раз при запуске сервера.withGT(locale, fn)— Оборачивает обработчик запроса и задаёт локаль для него. Все вызовы перевода внутри колбэка используют указанную локаль. Все маршруты должны быть обёрнуты вwithGT.getGT()— Возвращает функцию перевода для строк в коде. Поддерживает подстановку переменных и формат сообщений ICU.
Быстрый старт (Express)
Установка
npm install gt-nodeИнициализация
import express from 'express';
import { initializeGT, withGT, getGT } from 'gt-node';
initializeGT({
defaultLocale: 'en-US',
locales: ['en-US', 'es', 'fr'],
projectId: process.env.GT_PROJECT_ID,
});
const app = express();Добавьте middleware для локали
Извлеките локаль из заголовков запроса (или cookies, query‑параметров — в зависимости от того, как ваше приложение определяет локаль) и оберните обработку каждого запроса в withGT:
app.use((req, res, next) => {
const locale = req.headers['accept-language']?.split(',')[0] || 'en-US';
withGT(locale, () => next());
});Перевод
app.get('/api/greeting', async (req, res) => {
const gt = await getGT();
res.json({ message: gt('Hello, world!') });
});
app.listen(3000);Перевод и развертывание
npx gtx-cli translate --publishВот и всё. Строки подхватываются компилятором GT на этапе сборки, переводятся на этапе CD и обрабатываются для каждого запроса во время выполнения.
Взгляд в будущее
gt-node и gt-tanstack-start — первые две библиотеки, построенные на архитектуре синглтона gt-i18n. Ожидайте появления новых адаптеров для фреймворков, следующих тому же подходу.