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.



