All posts
Web design & development

Designing for Multiple Languages: Text Expansion, RTL and Layout

Multilingual web design for real languages: handling German text expansion, Arabic RTL layouts, fonts and flexible components without per-locale patches.

By Mehdi Hassan8 min read

The short answer

Multilingual web design means building layouts and components that hold up in any language: they let text grow without breaking, mirror cleanly for right-to-left scripts like Arabic and Hebrew, use fonts that cover every script, and never bake words into images. Design for your longest language first and most locales need no extra layout work.

Key takeaways

  • Design with your longest likely language, often German, not with short English placeholder copy.
  • Let containers grow with content: no fixed-height buttons, cards or hero blocks.
  • Build with logical CSS properties so right-to-left layouts mirror without a separate stylesheet.
  • Mirror directional icons like arrows, but never logos, media controls or charts with fixed meaning.
  • Keep all text out of images so every language can be translated and searched.

How do you design a website layout that works in multiple languages?

You design a layout that works in multiple languages by treating text length, reading direction and script as variables instead of constants. Every component is designed to stretch, wrap and mirror, then tested with real copy in your hardest languages before anything ships.

Most multilingual layout problems are created in the first week of design, when a designer sets a headline in short English and sizes everything around it. The fixes later are patches per locale, and they pile up. This guide is the design side of our multilingual website guide: what to change in Figma and in components so languages become a content task rather than a redesign.

Challenge

Languages most affected

Design response

Text expansion

German, Finnish, French, Russian

Flexible containers, wrapping buttons, no fixed heights

Long compound words

German, Dutch, Finnish

Hyphenation rules, wider minimum widths, careful heading sizes

Right-to-left reading

Arabic, Hebrew, Persian, Urdu

Logical properties, mirrored layouts, direction-aware icons

Dense scripts

Chinese, Japanese, Korean

Adjusted line height and type size, no reliance on italics

Script coverage

Any non-Latin language

Fonts with full glyph support and planned fallbacks

Formats

All

Locale-aware dates, numbers, currency, addresses and phone fields

How should you design for text expansion?

Design for text expansion by assuming every string can get noticeably longer and every component has to survive it. German and Finnish are the usual stress tests, because long compound words can't wrap mid-word the way a sentence can, and translated sentences often run longer than the English original.

  • No fixed heights. Buttons, cards, tabs and hero blocks should grow with their content. Fixed heights are where overflow and clipped text come from.
  • Buttons that wrap or widen. Decide what a button does with a long label: grow wider up to a limit, then wrap to two lines. Never truncate a call to action.
  • Navigation with room. A horizontal nav that just fits five English words will overflow in German. Leave spare width, or plan the point where it collapses into a menu.
  • Headings with fallbacks. Very large display type and long compounds don't mix. Set a smaller size per breakpoint, and allow hyphenation in languages that support it.
  • Equal-height grids. Card grids should handle one card with two extra lines without breaking the row.

What does RTL website design require?

RTL website design requires the whole layout to mirror for Arabic, Hebrew and other right-to-left languages: navigation, alignment, reading order, progress indicators and directional icons all flip. Done with the right CSS from the start, mirroring is mostly automatic; added later, it's a second stylesheet nobody wants to maintain.

  1. Set the direction on the document

    Each RTL page declares dir="rtl" on the html element along with its lang attribute. The browser then reverses text flow, table order and default alignment.

  2. Build with logical properties

    Use margin-inline-start instead of margin-left, padding-inline-end instead of padding-right, and text-align: start instead of left. These follow the reading direction, so one stylesheet serves both.

  3. Mirror directional icons only

    Back and forward arrows, chevrons in carousels and breadcrumb separators flip. Logos, play and pause controls, checkmarks, and charts with a fixed time axis do not.

  4. Handle mixed-direction text

    Product names, numbers, code and URLs stay left-to-right inside RTL sentences. Test these spots, because punctuation can jump to the wrong side.

  5. Review imagery

    Photos with a strong left-to-right flow, screenshots of your English product, and illustrations with text may need RTL versions or replacements.

MDN's documentation on CSS logical properties and values is the reference we hand to developers new to this. In Tailwind, the equivalent utilities (ms-, me-, ps-, pe-, start-, end-) make the same approach easy to stick to.

How do you choose fonts for a multilingual website?

Choose fonts for a multilingual website by checking script coverage first and personality second. A beautiful display face that only covers Latin characters forces a fallback font in Greek, Cyrillic, Arabic or Japanese, and a mismatched fallback is where multilingual sites start to look cheap.

Check that your typefaces include every character for every planned language, including accented Latin characters for Central European languages. For non-Latin scripts, pair your brand font with a companion family designed for that script, matched for weight and size, rather than letting the browser pick. Chinese, Japanese and Korean fonts are large, so load them by subset and only on pages in those languages. Avoid relying on italics for emphasis, because many scripts have no italic tradition; use weight instead.

How do you build flexible components for localization?

Build flexible components by separating every piece of text from layout and letting each locale supply its own content, length and order. A component that hard-codes three logos, four features or an English-shaped headline can't adapt to a market that needs something different.

Pros

  • Components driven by CMS fields let each locale reorder proof, swap examples and change list lengths
  • Figma string variables with a mode per language let designers preview every locale in the same frame
  • One component library serves every language, so fixes ship once
  • Localized messaging needs no new design, only new content

Cons

  • Flexible components take longer to design and test up front
  • More states to QA: every component in every language and direction
  • Designers need real or pseudo-localized copy early, not lorem ipsum
  • Some layouts that look great in English have to be simplified

This matters most for proof and pricing, which almost always differ by market. Our comparison of localization vs translation explains why those sections change, and our guide to Next.js i18n shows how a CMS with locales feeds the components.

Hypothetical example: one hero section in English, German and Arabic

For example, suppose a hero has a two-line headline, a subhead, two buttons and a product screenshot on the right.

In German, the headline runs to three lines at desktop size and one compound word is too wide for mobile. The fix is a slightly smaller mobile heading size and hyphenation enabled for German, set once in the type scale. The secondary button label wraps, so the button group is allowed to stack.

In Arabic, the layout mirrors: text on the right, screenshot on the left, the arrow in the primary button pointing left. The screenshot is swapped for the Arabic version of the product. The product name stays in Latin script inside the Arabic headline, and the team checks that the punctuation lands on the correct side.

None of these changes needed a new component. They were rules in the system, applied by language.

What should you test before launching a multilingual design?

Test every template in every language and direction on real devices, with final translated copy, before launch. Screenshots of English layouts say nothing about how German or Arabic pages behave.

  1. Check every template at mobile, tablet and desktop widths in your longest language and in any RTL language.
  2. Confirm forms accept local formats for names, addresses, phone numbers and postcodes, and that validation messages are translated.
  3. Verify dates, numbers and currencies format per locale.
  4. Run accessibility checks per language: lang attributes, contrast on translated buttons, and focus order in RTL. Our guide to accessible web design covers the basics.
  5. Test the language switcher on every page, including pages that don't exist in every language.

What are the most common multilingual web design mistakes?

The most common multilingual design mistakes are designing only in English, baking text into images, using flags to mean languages, and building right-to-left support as an afterthought. Each one turns every new language into a design project.

The less obvious mistake is treating brand rules as English rules. A tagline set in a tight, all-caps display face may not survive translation at all. When we turn a brand identity into a website, we write the type rules so they hold for every planned language, not just the one the brand was designed in.

Frequently asked questions

Which language should I design with first?
Design with your source language for the message, but test layouts early with your longest planned language, often German or Finnish, and any right-to-left language you plan to support. If those work, shorter languages almost always do. Waiting until translations arrive means discovering layout problems after design is approved, when fixes cost more.
Do I need a separate design for RTL languages?
No, not if the design system is direction-aware. Components built with logical CSS properties and clear rules for which icons mirror can serve both directions from one source. You still need to review RTL pages, swap screenshots and check mixed-direction text, but that's QA and content work, not a second design.
Should translated pages share the same layout?
Mostly, yes. Sharing one layout per template keeps the site consistent and cheap to maintain. What should differ is content inside the layout: proof, examples, pricing details and sometimes the number of items in a list. Build components so locales can change that content without needing a different page design.
How do I handle languages with much shorter text?
Chinese and Japanese often take less horizontal space than English, which can leave buttons and headings looking sparse. Use a slightly larger type size or adjusted line height for those scripts, and let containers size to their content rather than fixing widths. The goal is a balanced page in every language, not identical dimensions.
Can Figma help with multilingual design?
Yes. Figma variables support string values with modes, so you can store each language as a mode and switch a whole frame between languages to spot overflow. Auto layout helps components grow with their content. Together they let designers check text expansion and direction before anything is built.

· CEO & Design Director

Copywriter, designer and developer, and founder of Designify Studio. Over five years, 60+ projects across 14+ industries, for startups that have raised $300M+.

Want this done for you? Website, $8,000.

A multi-page marketing site, designed by us, developed in Next.js and animated. $8,000, one-time, up to 6 pages. Book a free 30-minute call to see if it fits.

Schedule Call