Todos los artículosIngeniería2 min de lectura

Uptime in 13 languages: more than translating

Este texto aún no está disponible en tu idioma, por eso se muestra en inglés.

From language URLs to plural forms to Arabic and Urdu written right to left: what it takes to make an interface truly multilingual.

Two globes

Uptime comes in 13 languages: German, English, Spanish, French, Brazilian Portuguese, Russian, Japanese, Simplified Chinese, Arabic, Hindi, Indonesian, Bengali and Urdu. Translating the texts is the smallest part of the work.

One catalog for everyone

All interface texts live in a shared catalog that frontend and backend read. An automated test makes sure every language has every text, that placeholders such as a name or a number appear in every translation, and that no language forgets a plural form. If something is missing, the test fails before a user sees an empty spot.

Plural is not just plural

German and English have two forms: “1 monitor” and “2 monitors”. Other languages distinguish more. The Unicode rule set CLDR knows six categories: zero, one, two, few, many and other. The browser function Intl.PluralRules tells which of them each language needs:

  • Japanese, Chinese and Indonesian: just one form (other).
  • German, English, Hindi, Bengali and Urdu: two forms (one, other).
  • Spanish, French and Portuguese: one, many and other.
  • Russian: one, few, many and other.
  • Arabic: all six.

That is why every text with a number is stored in all six categories in our catalog, and a test checks that each language translates the forms its grammar actually uses. A wrong count form should never come up in the first place.

One address per language

Public pages have their own address for each language, such as /de/ or /pt-br/, English included (/en/). The build produces each language version as a finished page with the right lang attribute, a title and description in that language, a canonical link to itself and references (hreflang) to all the other versions. Search engines can find each language separately and show it to the matching audience. A sitemap comes with it.

The address without a language redirects: first by the language you explicitly chose, otherwise by your browser’s language, otherwise to English. The pages inside the app, such as dashboard and settings, keep their addresses without a language code and are not meant for search engines.

Arabic and Urdu: right to left

Arabic and Urdu are written from right to left. Translating the text is not enough: the whole page is mirrored when the dir attribute is set to rtl. The W3C recommends setting it in the HTML rather than in CSS. So that spacing and alignment follow along, our styles use “logical” properties such as start and end instead of left and right. Then every surface adapts to the reading direction without a second stylesheet.

State of the longer texts

The app interface is available in all 13 languages. Longer texts such as these articles exist in German and English so far; in the other languages the English version is shown until a translation exists.