@translatehub/core
v1.0.2
Published
TranslateHub JS/TS client — fetch translations from your TranslateHub account
Maintainers
Readme
@translatehub/core
Базовый JS/TS клиент для работы с TranslateHub — платформой управления переводами с AI.
Установка
npm install @translatehub/coreБыстрый старт
import { TranslateHubClient } from '@translatehub/core';
const client = new TranslateHubClient({
apiKey: 'th_xxxxxxxxxxxxxxxx', // API-ключ из настроек проекта
});
const t = await client.getTranslations('ru');
console.log(t['nav.home']); // "Главная"Где взять API-ключ
- Зарегистрируйтесь на translate-hub.ru
- Создайте воркспейс и проект
- Откройте проект → Настройки проекта
- Скопируйте API Key (начинается с
th_...)
Конфигурация
const client = new TranslateHubClient({
apiKey: 'th_...',
cache: {
ttl: 300, // время жизни кэша в секундах (default: 300)
storage: 'memory', // 'memory' | 'localStorage' (default: 'memory')
},
});| Параметр | Тип | По умолчанию | Описание |
|----------|-----|-------------|----------|
| apiKey | string | — | API-ключ проекта |
| cache.ttl | number | 300 | TTL кэша в секундах |
| cache.storage | 'memory' \| 'localStorage' | 'memory' | Хранилище кэша |
API
getTranslations(lang: string)
Возвращает все переводы для указанного языка. Результат кэшируется на ttl секунд.
const translations = await client.getTranslations('en');
// { 'nav.home': 'Home', 'nav.about': 'About', ... }invalidate(lang?: string)
Инвалидирует кэш. Без аргумента очищает весь кэш.
client.invalidate('ru'); // очистить кэш для русского
client.invalidate(); // очистить весь кэшinterpolate(template, params)
Вспомогательная функция для подстановки параметров в строку.
import { interpolate } from '@translatehub/core';
interpolate('Привет, {name}!', { name: 'Артём' }); // "Привет, Артём!"
interpolate('У вас {count} сообщений', { count: 5 }); // "У вас 5 сообщений"Кэширование
Переводы кэшируются автоматически. По умолчанию используется кэш в памяти (memory).
Для браузерных приложений можно использовать localStorage — переводы сохранятся между перезагрузками страницы:
const client = new TranslateHubClient({
apiKey: 'th_...',
cache: {
ttl: 600,
storage: 'localStorage',
},
});Важно: переводы обновляются без пересборки приложения. Изменение перевода в TranslateHub отобразится в продакшне через TTL кэша (по умолчанию 5 минут).
Обработка ошибок
import { TranslateHubClient, TranslateHubError } from '@translatehub/core';
try {
const t = await client.getTranslations('ru');
} catch (e) {
if (e instanceof TranslateHubError) {
console.error(`HTTP ${e.statusCode}: ${e.message}`);
}
}Использование с React
Для React-приложений рекомендуем пакет @translatehub/react — он предоставляет TranslationProvider, useTranslation, <T> и <LanguageSwitcher>.
Лицензия
MIT
