Lumio Theme Documentation
Multilingual URL Behavior
Lumio’s multilingual system is easy to misread because there are three different layers involved:
src/config/language.jsonsettings.multilingualinconfig.toml- helper logic in
src/lib/utils/i18nUtils.ts
Language Definitions
The available languages come from:
[ { "languageName": "En", "languageCode": "en", "contentDir": "english", "weight": 1 }, { "languageName": "Fr", "languageCode": "fr", "contentDir": "french", "weight": 2 }]Main Multilingual Settings
In src/config/config.toml:
[settings.multilingual] enable = true defaultLanguage = "en" disableLanguages = [] showDefaultLangInUrl = falseWhatshowDefaultLangInUrl = falseMeans
This is the setting that confuses most people.
When it is false:
- English pages use URLs like
/about/ - French pages use URLs like
/fr/about/
When it is true:
- English pages use
/en/about/ - French pages use
/fr/about/
How Static Paths Are Generated
Lumio uses helper functions like generatePaths() and supportedLanguages from i18nUtils.ts.
Those helpers decide whether the language param becomes:
undefinedfor the default language- or an explicit code such as
fr
based on showDefaultLangInUrl.
Localized URLs In Components
Links are usually generated with:
getLocaleUrlCTM("/contact/", Astro.currentLocale)That helper also:
- keeps external links untouched
- handles
mailto:andtel: - strips
.md/.mdxendings - applies trailing slash behavior
Practical Editing Advice
If links look wrong after enabling or disabling multilingual mode:
- check
language.json - check
settings.multilingualinconfig.toml - restart dev so config-derived logic fully refreshes
- make sure your content exists in the expected language folders