Last updated:

Multilingual Site Text Length Design - Handling Text Expansion in Translation

8 min read

When expanding a website to multiple languages, the most overlooked problem is "text expansion." A UI perfectly designed for English breaks apart when translated to German. Button text overflows in Finnish, and Arabic layouts collapse with right-to-left rendering. This article quantitatively analyzes character count variations across translations and presents concrete solutions for multilingual UI design.

Text Expansion Rates Across Languages - Shorter Strings Expand the Most

The same sentence requires vastly different character counts depending on the language. English is relatively compact among European languages, but how much a translation grows depends on more than the target language. It depends heavily on how long the source string is. The W3C internationalisation guide "Text size in translation" points out that the shorter the original text, the higher the expansion rate tends to be. Buttons and labels, the shortest strings in any interface, are therefore the ones that expand the most, and they must be designed on that assumption.

The IBM design guidance cited by the W3C gives the following average expansion rates for translation from English into European languages, broken down by the length of the source string.

Source String Length (English)Average Expansion
Up to 10 characters200-300%
11-20 characters180-200%
21-30 characters160-180%
31-50 characters140-160%
51-70 characters151-170%
Over 70 charactersAbout 130%

For per-language tendencies, the figures the W3C quotes from a real interface (Flickr) are a useful reference. Taking English as 1, French and Portuguese reach roughly 2.6, German roughly 2.8 and Italian roughly 3.0, while Korean stays at roughly 0.8 and Chinese at roughly 1.2. All of these are comparisons of short interface strings, which is precisely where expansion is largest, so treat them as a guide for buttons and labels rather than as an average for body copy.

German deserves special attention. German creates compound nouns as single words, producing terms like "Geschwindigkeitsbegrenzung" (speed limit, 26 characters). If your button and navigation designs don't account for this expansion, layouts will inevitably break.

Text Length Design Strategies by UI Element

Buttons and CTAs

Button text is the most vulnerable to expansion. English "Submit" (6 chars) becomes "Absenden" (8 chars) in German and "送信" (2 chars) in Japanese.

Navigation and Menus

Header navigation has limited horizontal space, making expansion effects pronounced.

Form Labels and Placeholders

Form labels and placeholders face character constraints relative to input field width.

CSS Solutions for Multilingual Text Expansion

Here are CSS-level solutions for handling text expansion:

/* Base: text wrapping and overflow prevention */
.multilingual-text {
  overflow-wrap: break-word;
  word-break: break-word;
  hyphens: auto;
}

/* Buttons: ensure minimum width with flexible growth */
.btn-multilingual {
  min-width: 120px;
  padding: 0.75em 1.5em;
  white-space: normal;
  text-align: center;
}

/* Navigation: wrap handling for expansion */
.nav-multilingual {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

/* Table cells: minimum width and wrapping */
.table-multilingual td {
  min-width: 80px;
  word-break: break-word;
}

/* Language-specific font-size adjustment */
:lang(de) .compact-text {
  font-size: 0.9em;
}

/* CJK line-height adjustment */
:lang(ja), :lang(zh), :lang(ko) {
  line-height: 1.8;
}

hyphens: auto is particularly effective for English and German. It hyphenates long words at appropriate positions, preventing large gaps at line ends. However, since Japanese and Chinese don't use hyphenation, control application per language using :lang() selectors.

i18n File Character Count Management

Translation text for multilingual sites is typically managed in JSON or YAML i18n files. To manage text expansion, adopt these practices:

Pixel-Width-Based Character Limits

Character-count-based limits are imprecise because actual display width varies by font and rendering engine. For precise control, use pixel-width-based limits.

The same 10 characters produce very different display widths depending on language and font:

TextCharactersDisplay Width (16px, sans-serif)
Count Chars (English)11 chars~88px
Zeichenzahl (German)11 chars~95px
文字数カウント (Japanese)7 chars~112px
Подсчёт (Russian)7 chars~65px

Japanese characters are full-width, so fewer characters still produce wide display widths. Conversely, English has more characters but narrower individual widths. In SEO character counts, Google's search results also truncate based on pixel width, requiring similar considerations.

RTL (Right-to-Left) Language Support

Supporting RTL languages like Arabic and Hebrew requires layout mirroring in addition to character count considerations.

RTL support is closely tied to text length design. Arabic uses connected script (letters change shape based on adjacent letters), so display width varies by context even for the same character count. Fixed-width layouts are especially prone to breaking with RTL languages, making flexible layout design essential.

Multilingual Metadata Character Management

Beyond UI text, metadata like meta descriptions and OGP tags also need multilingual adaptation.

MetadataEnglish RecommendedJapanese RecommendedNotes
title tag50-60 chars30-35 charsPixel-width based, ~580px
meta description150-160 chars80-120 charsShorter on mobile
og:title40-60 chars30-40 charsVaries by platform
og:description100-120 chars60-80 charsPreview length varies by platform

The key insight is that metadata for each language should not be mechanically translated but optimized for each language's character limits. A perfect 60-character English title might become 35 characters in Japanese - or it might need restructuring entirely. Think "recreation per language" rather than "translation."

Testing Strategy - Pseudo-Locales

To detect layout breakage from text expansion before all translations are complete, use "pseudo-locales."

A pseudo-locale is artificial language data that inflates source text for testing. For example, "Submit" becomes "[Šüƀɱîţ !!!]", expanding character count by 1.5-2x. This lets you test layout resilience without waiting for translations.

Pseudo-locale generation rules:

Major i18n libraries (react-intl, vue-i18n, next-intl, etc.) either include pseudo-locale generation or support it through plugins. Integrating visual regression tests with pseudo-locales into your CI/CD pipeline automatically catches layout breakage when translations are added.

Translation Techniques to Minimize Text Expansion

Work with translators to minimize text expansion using these techniques:

Summary

Multilingual text length design hinges on flexible UI design that anticipates post-translation text expansion. Translating out of a compact language into European languages calls for generous expansion headroom, and both the W3C and IBM guidance show that the shorter the string, the higher the expansion rate. Combining CSS logical properties, Flexbox-based flexible layouts, pseudo-locale pre-testing, and character count constraints in i18n files enables UIs that look beautiful and function correctly in every language. To verify translated text character counts, use Character Counter.

Share this article