Ciao Tools
Closed Alpha — Join the waitlist
i18n that lives in
your code, not beside it.

Ship your entire stack in 93 languages. No translation files. Wrap strings in ct() and a single command extracts, translates, and deploys.

ProductPage.tsx
import { useCt, Trans } from "@ciao-tools/react";

function ProductPage() {
  const ct = useCt();

  return (
    <div>
      <h1>{ct("Вітаем у нашай краме")}</h1>
      <Trans>
        Глядзіце нашу <b>падрыхтаваную</b> калекцыю
      </Trans>
      <p>{ct("{amount:currency:USD}", { amount: 49.99 })}</p>
    </div>
  );
}

Welcome to our store

Browse our curated collection

$49.99

Works with your stack

TS

Як гэта працуе

Тры каманды да глабальнага ахопу

01

Пішыце натуральна

Тэкст вашага кампанента з'яўляецца крыніцай ісціны. Няма ключоў для вынаходкі, няма JSON для сінхранізацыі. Проста абгарніце радкі ў ct() або <Trans> і працягвайце будаваць.

function Hero() {
  const ct = useCt();
  return <h1>{ct("З вяртаннем")}</h1>;
}
02

Выманне & пераклад

Запусціце адну каманду. Кожны радок у вашай кодавай базе, які можна перакласці, знаходзіцца, адпраўляецца ў рухавік перакладу і вяртаецца з поўным улікам кантэксту. Тое ж слова атрымлівае розныя пераклады ў залежнасці ад таго, дзе яно з'яўляецца.

Terminal
03

Адпраўляйце імгненна

Пераклады трапляюць у глабальную CDN. Чатыры ўзроўні кэшавання падтрымліваюць час загрузкі менш за 50 мс. Абнаўляйце пераклады, не закранаючы свой канвеер разгортвання.

// Generated manifest — fully typed
export const ciaoManifest = {
  languages: ["en", "es", "fr", "de"] as const,
  cdnUrls: { es: "https://cdn...", fr: "https://cdn..." },
} as const;

Механізм перакладу AI

Выняць. Перакласці. Ацаніць.

Кожны радок праходзіць праз трохэтапны канвеер. Найлепшая мадэль для кожнай моўнай пары выбіраецца аўтаматычна. Вы ніколі не наладжваеце правайдэра.

01

Выманне кантэксту

Чытае дрэва кампанентаў і разумее, што значыць кожны радок: надпіс на кнопцы, загаловак, сігнал аб выратаванні.

Gemini 3 Flash
Claude Haiku 4.5
02

Перакласці

Найлепшая мадэль для кожнай моўнай пары перакладае вашы радкі. З улікам кантэксту, сэнс за сэнсам, а не слова ў слова.

Claude Sonnet 5
Gemini 3 Flash
GPT-5.2
DeepSeek V3
Kimi K2.5
DeepL
03

Ацэнка якасці

Ацэньвае кожны пераклад і выбірае вынік найвышэйшай якасці. Вы ніколі не выбіраеце мадэль.

Gemini 3.1 Pro
Kimi K2.5

Кантэкст усё змяняе

Тое ж слова азначае розныя рэчы ў розных месцах. Штучны інтэлект счытвае навакольныя радкі, каб зразумець намер. Не патрабуюцца тэгі кантэксту ўручную.

ProductCard.tsx
<div>
  <img src={product.image} />
  <h3>{product.name}</h3>
  <span>${product.price}</span>
  <button onClick={saveToWishlist}>
    ❤️ {ct("Захаваць")}
  </button>
</div>
ct("Save")"Guardar"(es) — to store, to keep
DuckRescue.tsx
<div>
  <span className="text-4xl">🦆</span>
  <p>{ct("Качка тоне!")}</p>
  <p>{ct("Засталося часу:")} 00:03</p>
  <button onClick={rescue}>
    🛟 {ct("Захаваць")}
  </button>
</div>
ct("Save")"Rescatar"(es) — to rescue, to save a life

Досвед распрацоўшчыка

Ваш зыходны код - ваш каталог перакладаў

Больш не трэба выдумляць назвы ключоў. Больш не трэба шукаць t('homepage.hero.cta.button') , каб высветліць, на які тэкст ён супастаўляецца. Вашы радкі - гэта чытэльная англійская мова прама там, дзе яны адлюстроўваюцца.

Кампанент <Trans> захоўвае ўкладзены JSX (спасылкі, тлусты шрыфт, пралёты, любы элемент), перакладаючы тэкст вакол іх.

function CheckoutSummary({ user, items }) {
  const ct = useCt();

  return (
    <div>
      <h1>{ct("З вяртаннем, {name}!", { name: user.name })}</h1>
      <p>{ct("У вас {count} {count:plural:item:items}", { count: items.length })}</p>
      <p>{ct("Разам: {amount:currency:USD}", { amount: 129.99 })}</p>
    </div>
  );
}
Output

Welcome back, Sarah!

You have 3 items

Total: $129.99

The difference

Your workflow, simplified

Traditional i18n

Write code
Create keys
Map strings
Send to translators
Wait
Receive files
Wire up
Deploy

Ciao Tools

Write code
Build
Ship

Never think about translations again.

Інкрыментнае ўкараненне

Ужо ёсць пераклады? Пачніце там, дзе вы ёсць.

Ciao Tools не патрабуе перапісвання. Вазьміце свае пераклады, укараняйце інкрыментна і мігруйце ў сваім уласным тэмпе.

Inline translations
import { CiaoProvider } from "@ciao-tools/react";

// Already have translations? Pass them directly
const translations = {
  es: { "Прывітанне": "Hola", "Рэгістрацыя": "Registrarse" },
  fr: { "Прывітанне": "Bonjour", "Рэгістрацыя": "S'inscrire" },
};

<CiaoProvider translations={translations}>
  <App />
</CiaoProvider>
Side-by-side migration
// Migrate one component at a time
function OldPage() {
  return <h1>{t("pages.old.title")}</h1>; // keep this
}

function NewPage() {
  const ct = useCt();
  return <h1>{ct("Сардэчна запрашаем на новую старонку")}</h1>; // start here
}
1

Захавайце наяўныя пераклады

Перадайце вашы мапы перакладаў непасрэдна ў CiaoProvider. Міграцыя не патрабуецца.

2

Мігруйце кампанент за кампанентам

Старыя старонкі выкарыстоўваюць вашу старую бібліятэку. Новы код выкарыстоўвае ct() і <Trans>. Абодва працуюць разам.

3

Выдаліце старую сістэму, калі будзеце гатовыя

Пасля таго, як усё пачне выкарыстоўваць Ciao Tools, адмоўцеся ад старой сістэмы. Вашы ключы перакладу цяпер — звычайная англійская.

Features

The complete translation platform

From string extraction to CDN delivery and live updates.

Automatic extraction

OXC and Babel plugins scan your codebase and find every ct() call and <Trans> component. Your source code is the catalog.

Context-aware translation

AI translates with full component context. "Save" in a button vs. "Save" as rescue — it gets the difference.

Global CDN hosting

Translations are hosted on a global edge network and served from the nearest node. You never manage translation files.

Live hot updates

Fix a translation and it's live in seconds. No redeploy, no cache bust, no waiting for a release cycle.

Glossary & consistency

Define key terms once and enforce them across every language. Brand names and domain vocabulary stay consistent.

Full-stack, every framework

ct() works in React, React Native, Next.js server components, and Express. One API from mobile to server.

Prompt translation

ctPrompt() translates LLM system prompts while preserving template variables, JSON schemas, code blocks, and regex. Your AI agents speak every language.

Translation memory

Every translation is cached server-side. Re-syncs only translate new or changed strings, saving time and cost.

Multilingual SEO

Hreflang links, canonical URLs, og:locale tags, and XML sitemaps. CiaoHead handles it at runtime, or generate a sitemap from the CLI.

App store translations

Translate App Store and Play Store metadata with character limit validation. Names, descriptions, keywords, and release notes.

ICU MessageFormat

Plurals, ordinals, currency, dates, numbers, and percentages. Full locale-aware formatting via the ICU standard.

Fallback chains

es-MX falls back to es, then to en. Four caching layers ensure translations are always available, even offline.

Прадукцыйнасць

Хутка па змаўчанні, а не выпадкова

< 50ms
Загрузка з кэша
93
Мовы
0
Файлы ключоў JSON
~5 min
Час наладкі
L1
Zustand + localStorage
L2
IndexedDB
L3
LRU у памяці
L4
CDN edge

Live demo

One codebase, every language

Click a language. Text, prices, dates, and plurals all update, formatted correctly for each locale.

Handcrafted Ceramic Mug

$34.99

Artisan-made with natural glazes. Perfect for your morning ritual.

In stock · February 3, 2026
3 items

Ранні доступ

Будзьце першымі ў чарзе

Мы адкрываем Ciao Tools для невялікай групы першых карыстальнікаў. Далучайцеся да спісу чакання, і мы звяжамся з вамі, калі ваша месца будзе гатова.

Гэты сайт абаронены reCAPTCHA і Google Палітыка прыватнасці і Умовы выкарыстання прымяняюцца.