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("Sveiki atvykę į mūsų parduotuvę")}</h1>
      <Trans>
        Naršykite mūsų <b>kuruojamą</b> kolekciją
      </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

Kaip tai veikia

Trys komandos iki globalaus pasiekiamumo

01

Rašykite natūraliai

Jūsų komponentų tekstas yra tiesos šaltinis. Nereikia kurti raktų, sinchronizuoti JSON. Tiesiog apvyniokite tekstus ct() arba <Trans> ir toliau kurkite.

function Hero() {
  const ct = useCt();
  return <h1>{ct("Sveiki sugrįžę")}</h1>;
}
02

Ištraukti ir versti

Vykdykite vieną komandą. Kiekviena išverčiama eilutė jūsų kode yra randama, išsiunčiama į vertimo sistemą ir grąžinama visiškai suprantant kontekstą. Tas pats žodis gauna skirtingus vertimus, atsižvelgiant į tai, kur jis pasirodo.

Terminal
03

Pristatykite iškart

Vertimai patenka į globalų CDN. Keturi talpinimo lygiai palaiko įkrovimo laiką iki 50 ms. Atnaujinkite vertimus neliesdami savo diegimo proceso.

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

AI vertimo variklis

Ištraukti. Versti. Įvertinti.

Kiekvienas tekstas eina per trijų etapų procesą. Geriausias modelis kiekvienai kalbų porai parenkamas automatiškai. Jums niekada nereikia konfigūruoti teikėjo.

01

Ištraukti kontekstą

Nuskaito jūsų komponentų medį ir supranta, ką reiškia kiekviena eilutė: mygtuko etiketė, antraštė, pagalbos signalas.

Gemini 3 Flash
Claude Haiku 4.5
02

Versti

Geriausias modelis kiekvienai kalbų porai verčia jūsų tekstus. Atsižvelgdamas į kontekstą, reikšmę po reikšmės, o ne žodis po žodžio.

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

Įvertinti kokybę

Įvertina kiekvieną vertimą ir parenka aukščiausios kokybės rezultatą. Jūs niekada nepasirenkate modelio.

Gemini 3.1 Pro
Kimi K2.5

Kontekstas keičia viską

Tas pats žodis skirtingose vietose reiškia skirtingus dalykus. AI nuskaito aplinkinius tekstus, kad suprastų ketinimą. Jokių rankinių konteksto žymų nereikia.

ProductCard.tsx
<div>
  <img src={product.image} />
  <h3>{product.name}</h3>
  <span>${product.price}</span>
  <button onClick={saveToWishlist}>
    ❤️ {ct("Išsaugoti")}
  </button>
</div>
ct("Save")"Guardar"(es) — to store, to keep
DuckRescue.tsx
<div>
  <span className="text-4xl">🦆</span>
  <p>{ct("Antis skęsta!")}</p>
  <p>{ct("Liko laiko:")} 00:03</p>
  <button onClick={rescue}>
    🛟 {ct("Išsaugoti")}
  </button>
</div>
ct("Save")"Rescatar"(es) — to rescue, to save a life

Kūrėjo patirtis

Jūsų šaltinio kodas yra jūsų vertimų katalogas

Nebereikia kurti raktų pavadinimų. Nebereikia ieškoti t('homepage.hero.cta.button') norint išsiaiškinti, į kokį tekstą jis nurodo. Jūsų eilutės yra įskaitoma anglų kalba tiesiai ten, kur jos atvaizduojamos.

Komponentas <Trans> komponentas išsaugo įdėtą JSX (nuorodos, paryškinimas, span, bet kuris elementas) verčiant tekstą aplink juos.

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

  return (
    <div>
      <h1>{ct("Sveiki sugrįžę, {name}!", { name: user.name })}</h1>
      <p>{ct("Jūs turite {count} {count:plural:item:items}", { count: items.length })}</p>
      <p>{ct("Iš viso: {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.

Laipsniškas įsisavinimas

Jau turite vertimus? Pradėkite ten, kur esate.

Ciao Tools nereikalauja perrašymo. Atsineškite esamus vertimus, diekite palaipsniui ir migruokite savo tempu.

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

// Already have translations? Pass them directly
const translations = {
  es: { "Sveiki": "Hola", "Registruotis": "Registrarse" },
  fr: { "Sveiki": "Bonjour", "Registruotis": "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("Sveiki atvykę į naują puslapį")}</h1>; // start here
}
1

Išsaugokite esamus vertimus

Perkelkite esamus vertimų žemėlapius tiesiai į CiaoProvider. Migracija nereikalinga.

2

Migruokite komponentą po komponento

Seni puslapiai naudoja esamą biblioteką. Naujas kodas naudoja ct() ir <Trans>. Abu veikia kartu.

3

Pašalinkite seną sistemą, kai būsite pasiruošę

Kai viskas naudos Ciao Tools, atsisakykite senos sąrankos. Jūsų vertimų raktai dabar yra paprasta anglų kalba.

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.

Našumas

Greitis – ne atsitiktinumas

< 50ms
Įkelkite iš talpyklos
93
Kalbos
0
JSON raktų failai
~5 min
Nustatymo laikas
L1
Zustand + localStorage
L2
IndexedDB
L3
Atminties 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

Ankstyva prieiga

Būkite pirmas eilėje

Atidarome „Ciao Tools“ mažai grupei ankstyvųjų naudotojų. Prisijunkite prie laukiančiųjų sąrašo ir mes susisieksime, kai jūsų vieta bus paruošta.

Ši svetainė yra apsaugota reCAPTCHA ir „Google“ Privatumo politika ir Paslaugų teikimo sąlygos taikomos.