i18n for Void apps

Strings by fbtee, dates by Temporal, and everything else by the platform's own Intl. This example is in English, العربية and ไทย.

<fbt desc="How many nights are booked">
  You booked{" "}
  <fbt:plural
    count={count}
    many="nights"
    showCount="yes"
  >
    night
  </fbt:plural>
</fbt>

You booked 3 nights

…

Add it to a Void app

Add the GitHub release to the app's package.json and allow its build in pnpm-workspace.yaml, then run these. init adds only what's missing, and translate fills in every language.

Read the full setup
Terminal
$ vp install$ vp exec void-fbtee init --locales ar-EG,th-TH$ vp install$ vp run i18n:translate

Everything a Void app needs to speak every language

Strings, by fbtee

  • Mark text with fbt in your components; each language gets a catalog file.
  • Plurals follow each language's own rules: Arabic has six forms.
  • void-fbtee check lists anything still untranslated.
Read more

Dates and times, by Temporal

  • Every time shown on its place's clock and on the reader's.
  • Daylight saving worked out for the date itself, not for today.
  • Cloudflare's native Temporal on the Worker.
Read more

Numbers and the rest, by Intl

  • Numbers, money, units, lists and names from the platform's own Intl.
  • The same calls on the Worker and in the browser; the Intl page shows where engines differ.
  • No locale data to ship: the platform has it.
Read more

Markdown pages, translated

  • One copy of each page per language, under pages/ and the language.
  • A copy is reported out of date when its original changes.
  • Dates and numbers in a page are formatted for each reader.
Read more

Translated by AI, checked by you

  • vp run i18n:translate hands the work to Claude Code, with void-fbtee's skill.
  • Translations are files in your repo, ready to review.
  • In the demo, what people post is translated by Workers AI.
Read more

Every language, right to left too

  • The middleware sets the page's lang and dir from the URL.
  • One URL per language, with hreflang links for search engines.
  • This site mirrors in Arabic, built with start and end, never left and right.
Read more

Events

Post an event, book a seat: every time on the event's clock and on yours.

Intl

Every Intl format, run on the Worker and in your browser, side by side.

Docs

Markdown pages, translated into every language.

i18n for Void apps