Introducing dpkit Terminal and TypeScriptSee the announcement

Product interfaces

Internationalization

Locale in the URL, copy in catalogs, and hreflang that only advertises pages that exist.

  • Lingui
  • ICU MessageFormat
  • PO catalogs
  • hreflang

What it is

Shipping a product in more than one language without forking the codebase, and without search engines treating the translations as duplicate pages.

Why we chose it

Lingui extracts translatable strings straight from the components, so the catalog is generated from the source rather than maintained beside it, and ICU MessageFormat handles plurals and gender properly instead of by string concatenation. The locale lives in the URL, with the source language left prefix-less so existing links never move. Each page then declares hreflang for the languages that were actually generated — advertising a translation that does not exist is worse than having none.

What we build with it

Landing pages & marketing sites

Fast, prerendered sites that load instantly and cost almost nothing to run. Content you can edit yourself, in as many languages as you need.

Full-stack web applications · Design systems · Internationalization · Edge platform

Where we use it

In products serving more than one market, and on this site, which ships in English and Portuguese from a single set of components.
capturemycarro.app
The Mycarro car search engine as it runs today, searching across its live Portuguese listings.

Mycarrocar marketplace and dealer CRM

A used-car marketplace live in Portugal. Consumer search over listings gathered from across the market, a dealer back office for leads, inventory and invoicing, and a mobile app — built end to end.

we built

Get in touch

Tell us what you need built.

We are a small team in Portugal, working London hours. A site, an app, an internal tool, or the platform behind them — start with a sentence about the problem and we will take it from there.

All technologies
Get a quote