Skip to content

Translating the Website

Flow-Like’s website supports 11 languages. This guide explains how to add or update translations.

CodeLanguage
enEnglish
deDeutsch
esEspañol
frFrançais
zh中文
ja日本語
ko한국어
ptPortuguês
itItaliano
nlNederlands
svSvenska

Translations are split into shared dictionaries, the current landing-page dictionary, and page-specific dictionaries:

PathPurpose
apps/website/src/i18n/index.tsRegisters supported languages, merges dictionaries, and provides lookup helpers
apps/website/src/i18n/locales/index.tsExports the shared locale dictionaries
apps/website/src/i18n/locales/<code>.tsShared dictionary for one language; English is the fallback
apps/website/src/i18n/locales/v5/<code>.tsCurrent landing-page dictionary for one language
apps/website/src/i18n/locales/v5/index.tsCollects the current landing-page dictionaries
apps/website/src/i18n/locales/pages/<page>-<code>.tsPage-specific dictionary for one language
apps/website/src/i18n/locales/pages/<page>.tsRegisters a page’s dictionaries and English fallback

The v4/ directory contains legacy English content. Use the shared, v5, and page-specific locations above for current website work.

  1. Open the locale file for your language in apps/website/src/i18n/locales/
  2. Find the key you want to update
  3. Edit the translation value
  4. Submit a pull request

To update the German hero headline:

apps/website/src/i18n/locales/de.ts
export const de = {
// ...
"hero.headline": "Wenn du es nicht sehen kannst, kannst du ihm nicht vertrauen.",
// ...
} as const;
  1. Create a new locale file in apps/website/src/i18n/locales/
  2. Export your translations following the English structure
  3. Add the export to locales/index.ts
  4. Register the language in index.ts

For complete coverage, also add the language to locales/v5/index.ts and provide any page-specific dictionaries used by the routes you intend to publish. Missing keys fall back to English, which is useful during development but should not be treated as a completed translation.

Create apps/website/src/i18n/locales/[code].ts:

export const [code] = {
// Meta
"meta.title": "Flow-Like — [Your translation]",
"meta.description": "[Your translation]",
// Hero
"hero.tagline": "[Your translation]",
"hero.headline": "[Your translation]",
// ... copy all keys from en.ts and translate values
} as const;

Add your language to apps/website/src/i18n/locales/index.ts:

export { en } from "./en";
export { de } from "./de";
// ...existing exports
export { [code] } from "./[code]";

Update apps/website/src/i18n/index.ts:

import { en, de, ..., [code] } from "./locales";
export const languages = {
en: "English",
de: "Deutsch",
// ...existing languages
[code]: "[Native Name]",
};
export const translations = {
en,
de,
// ...existing translations
[code],
} as const;

English (en.ts) is the base language. All translation keys should match the keys in the English file. The main categories are:

CategoryDescription
meta.*Page metadata (title, description)
hero.*Hero section content
problem.*Problem section content
solution.*Solution section content
stack.*Enterprise stack section
services.*Services section
audience.*Target audience section
cta.*Call to action buttons
faq.*Frequently asked questions
nav.*Navigation items
footer.*Footer content
  1. Preserve formatting: Keep line breaks, emphasis markers, and spacing as in the original
  2. Don’t translate placeholders: Keep technical terms, brand names, and variable placeholders unchanged
  3. Match the tone: Maintain the professional yet approachable tone of the original
  4. Test locally: Run the website locally to verify your translations render correctly
  5. Use native expressions: Prefer natural phrasing over literal translations
Terminal window
mise run dev:website

Then visit http://localhost:4321/[lang]/ to preview your translations.

Open an issue on GitHub or reach out on our Discord if you have questions about translating content.