← All posts

Building a bilingual product from day one

Leaving translation until the end is the most expensive mistake a bilingual product can make. Practical ways to plan for Turkish and English from day one.

For many teams building products in Türkiye, English is something to “add later”. When later comes, the text is baked into the code and the URLs were designed for one language. The interface breaks either on long Turkish words or on short English headlines.

Put the language in the URL

If you only read the language from a browser setting or a cookie, search engines never see your second language. Every language needs its own address, and pages should point to each other with hreflang tags:

html
<link rel="alternate" hreflang="tr" href="https://www.hillbilisim.com/" /><link rel="alternate" hreflang="en" href="https://www.hillbilisim.com/en" /><link rel="alternate" hreflang="x-default" href="https://www.hillbilisim.com/" />

Let the compiler catch missing translations

As key–value translation files grow, missing keys pile up quietly. With TypeScript, you can use one language’s dictionary as the type and force the other to match it. A missing translation becomes a compile error:

ts
const tr = { hero: { title: 'Merhaba' } }type Dictionary = typeof tr// compilation fails if 'title' is missingconst en: Dictionary = { hero: { title: 'Hello' } }

Test the design in both languages

  • Turkish copy often runs longer than English. Test buttons and headings against the longest language.
  • Watch out for uppercase: in Turkish, the capital of “i” is “İ”. For CSS text-transform to get this right, the page needs the correct lang attribute.
  • Don’t format dates, numbers and currencies by hand. Use the Intl API, or write your own small, tested function.

Thinking bilingual feels like a bit of extra work at first. But as the product grows, the cost of adding translation later keeps multiplying.

If something’s on your mind, write to us.

A new product, a project that stalled halfway, or a question about one of ours. We reply within one business day.

or email us directly[email protected]