Hugo Profile supports multilingual sites out of the box with built-in translation files for English, Spanish, and French. All UI strings — navigation labels, section headings, button text, and more — are driven by Hugo’s i18n system, making it straightforward to serve your portfolio in multiple languages from a single codebase.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/gurusabarish/hugo-profile/llms.txt
Use this file to discover all available pages before exploring further.
Built-in Languages
The theme ships with translation files for three languages:| Code | Language | File |
|---|---|---|
en | English | i18n/en.toml |
es | Español | i18n/es.toml |
fr | Français | i18n/fr.toml |
Setting Up Multiple Languages
To enable multilingual support, add alanguages block to your hugo.yaml. Each language entry sets a display name, sort weight, and content directory:
defaultContentLanguage— the language served at the root URL (e.g.,/).defaultContentLanguageInSubdir— whentrue, the default language is also served from a subpath such as/en/. Defaults tofalse.
Language-Specific Content and Params
Each language can override anyparams value — hero text, about content, experience entries, and more. These overrides live under languages.<lang>.params and are merged on top of the global params block at build time:
hero, about, experience, education, projects, achievements, and contact.
Language Switcher
When two or more languages are configured, Hugo Profile automatically renders a language switcher dropdown in the navbar. No additional configuration is needed — the dropdown appears as soon as multiple languages are detected.Translation File Structure
The i18n files use Hugo’s TOML translation format. Below is the complete set of keys fromi18n/en.toml:
Adding a New Language
Create a translation file
Create
i18n/de.toml in your site root (not inside the theme directory) and add translations for all keys. For example:Register the language in hugo.yaml
Add an entry under the
languages block with the language name, weight, and content directory:Overriding Specific Translations
To change individual strings without creating or modifying an i18n file, useparams.terms in hugo.yaml. These values take precedence over the i18n lookup. The full set of overridable term keys is:
| Key | Used in |
|---|---|
read | ”Read” button on list page and footer cards |
toc | Table of contents heading on single posts |
tags | Tags section heading on single posts |
social | Social share heading on single posts |
copyright | Footer copyright notice |
emailText | Email share link body text |
pageNotFound | 404 page heading and image alt text |
params.terms overrides apply globally across all languages. If you need language-specific overrides, use the i18n files — one per language — rather than params.terms.