Internationalization (i18n)
Internationalization (i18n) is the software engineering process of designing an application so it can easily adapt to different languages without requiring structural code changes. vanityURLs detects the browser language from the request and sends localized English, French, German, Italian, and Spanish web pages when they are available. The English page is sent when there is no localized page for the requested ISO language code.
Supported Languages
| Code | Language |
|---|---|
en | English |
fr | French |
es | Spanish |
it | Italian |
de | German |
Localized Pages
The default public pages are available in the localized language directories under defaults/public/{language}/.
| Slug | English page title | Page role | Localized variants |
|---|---|---|---|
404.html | This short link does not exist | Unknown short links and missing pages | en, fr, es, it, de |
abuse.html | Trust & Safety | Abuse reporting and coordinated vulnerability disclosure | en, fr, es, it, de |
disabled.html | This short link has been disabled | Disabled link state | en, fr, es, it, de |
expired.html | This short link is expired | Expired link state | en, fr, es, it, de |
index.html | VanityURLs short links | Homepage and short-link search form | en, fr, es, it, de |
maintenance.html | This link is temporarily not available | Maintenance link state | en, fr, es, it, de |
privacy.html | Privacy | Privacy notice generated from operator configuration | en, fr, es, it, de |
terms.html | Terms | Terms generated from operator configuration | en, fr, es, it, de |
The installer writes supported languages to custom/v8s-site-config.json:
{
"i18n": {
"default_language": "en",
"supported_languages": ["en", "fr", "es", "it", "de"]
}
}
Keep en enabled unless you have a specific reason to remove generated English pages. During build, vanityURLs copies default public assets, overlays custom/public, and removes unsupported language directories from build/.
When you customize public pages, update only the languages you intend to support and keep i18n.supported_languages aligned with those pages.
Localized custom overrides use the language code as the first directory segment:
custom/public/fr/index.html
custom/public/fr/privacy.html
custom/public/es/404.html
custom/public/de/maintenance.html
custom/public/it/expired.html
Localized Badges
Each supported language also has localized redirected badges:
defaults/public/en/v8s-redirected.svg
defaults/public/en/v8s-redirected-dark.svg
defaults/public/fr/v8s-redirected.svg
defaults/public/fr/v8s-redirected-dark.svg
defaults/public/es/v8s-redirected.svg
defaults/public/es/v8s-redirected-dark.svg
defaults/public/it/v8s-redirected.svg
defaults/public/it/v8s-redirected-dark.svg
defaults/public/de/v8s-redirected.svg
defaults/public/de/v8s-redirected-dark.svg
The light badge is used by default. The dark badge is selected when the visitor’s browser prefers a dark color scheme.