Languages and formats

Longer translations, three plural forms, the Czech and English shape of dates and numbers, codes that are never translated, and the shared term dictionary.

Length and plurals

The product runs in Czech and English, with German and Polish on the horizon. The interface is not translated as an afterthought — the layout allows for it from the start, because a translation that does not fit is fixed in the screen, not in the dictionary.

  • A German translation runs up to 35 % longer than the Czech original. The layout has to take that length without changing how many lines it fits.
  • Text is never truncated with an ellipsis. A cut-off word looks like a data error, and the reader has no way to find out what was in it.
  • Buttons and table headers carry no fixed width — the width comes from the content, otherwise a longer language overflows it.
  • A sentence is never glued from fragments. The whole sentence is one key with a variable: {count} items in stock. Another language assembles the words in another order, and gluing cannot do that.
  • Czech has three plural forms: 1 / 2–4 / 5+. Every counted string carries all three; a shape like “item(s)” is not used.

Formats

The same value looks different in every language — the separator, the order and the position of the symbol all change. That is why a value is never assembled as a string in a screen.

Value formats
TypeCzechEnglish
Date26. 05. 2026May 26, 2026
Time14:352:35 PM
Number128 640,50128,640.50
Currency128 640 Kč€5,120.00
Unit3,0 mm · 1 250 Kč/h0.12 in · €50/h

Numbers and codes

  • Numbers, currencies and dates are formatted by Intl.NumberFormat and friends according to the user's language — never by swapping a point for a comma by hand, which breaks with the next language added.
  • A non-breaking space ( ) stands between a number and its unit, so “12 kg” does not split across a line break.
  • Mono text uses tabular figures, so every digit has the same width and numbers line up down a column.
  • Codes are not translated and stay in mono unchanged: identifiers such as materials, record numbers such as OBJ-2418 and country codes such as CZ. A translated identifier stops matching what is in the data.

The dictionary

The application speaks two vocabularies: a simple one for everyday work and an expert one for those who want precise domain terms. The choice applies everywhere — which is why terms come from a shared dictionary under one key, not from memory, so the same thing is not named two ways on two screens.

Term dictionary
KeySimpleExpert
nestingLaying parts out on a sheetNesting
setup_timeMachine preparationSetup time
tolerance_classManufacturing precisionTolerance class

The switcher for both the language and the vocabulary lives in the account menu, not in the page header — it is a setting of the person, not of the screen. The choice is therefore remembered by the account, not by the browser: on another machine the user does not have to set it again.