<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, minimum-scale=1.0"> <meta name="generator" content="Hugo 0.124.1"> <meta name="generator" content="Relearn 5.26.2+tip"> <meta name="description" content="Documentation for Hugo Relearn Theme"> <meta name="author" content="Sören Weber"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image" content="https://mcshelby.github.io/hugo-theme-relearn/images/hero.png"> <meta name="twitter:title" content="Multilingual and i18n :: Hugo Relearn Theme"> <meta name="twitter:description" content="Documentation for Hugo Relearn Theme"> <meta property="og:title" content="Multilingual and i18n :: Hugo Relearn Theme"> <meta property="og:description" content="Documentation for Hugo Relearn Theme"> <meta property="og:type" content="website"> <meta property="og:url" content="https://mcshelby.github.io/hugo-theme-relearn/cont/i18n/index.html"> <meta property="og:image" content="https://mcshelby.github.io/hugo-theme-relearn/images/hero.png"> <meta property="og:site_name" content="Hugo Relearn Theme"> <title>Multilingual and i18n :: Hugo Relearn Theme</title> <link href="https://mcshelby.github.io/hugo-theme-relearn/cont/i18n/index.html" rel="alternate" hreflang="x-default"> <link href="https://mcshelby.github.io/hugo-theme-relearn/cont/i18n/index.html" rel="alternate" hreflang="en"> <link href="https://mcshelby.github.io/hugo-theme-relearn/pir/cont/i18n/index.html" rel="alternate" hreflang="art-pir"> <link href="https://mcshelby.github.io/hugo-theme-relearn/cont/i18n/index.html" rel="canonical" type="text/html" title="Multilingual and i18n :: Hugo Relearn Theme"> <link href="/hugo-theme-relearn/cont/i18n/index.xml" rel="alternate" type="application/rss+xml" title="Multilingual and i18n :: Hugo Relearn Theme"> <link href="/hugo-theme-relearn/images/logo.svg?1711894409" rel="icon" type="image/svg+xml"> <!-- https://github.com/filamentgroup/loadCSS/blob/master/README.md#how-to-use --> <link href="/hugo-theme-relearn/css/fontawesome-all.min.css?1711894410" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/hugo-theme-relearn/css/fontawesome-all.min.css?1711894410" rel="stylesheet"></noscript> <link href="/hugo-theme-relearn/css/nucleus.css?1711894410" rel="stylesheet"> <link href="/hugo-theme-relearn/css/auto-complete.css?1711894410" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/hugo-theme-relearn/css/auto-complete.css?1711894410" rel="stylesheet"></noscript> <link href="/hugo-theme-relearn/css/perfect-scrollbar.min.css?1711894410" rel="stylesheet"> <link href="/hugo-theme-relearn/css/fonts.css?1711894410" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/hugo-theme-relearn/css/fonts.css?1711894410" rel="stylesheet"></noscript> <link href="/hugo-theme-relearn/css/theme.css?1711894410" rel="stylesheet"> <link href="/hugo-theme-relearn/css/theme-relearn-auto.css?1711894410" rel="stylesheet" id="R-variant-style"> <link href="/hugo-theme-relearn/css/chroma-relearn-auto.css?1711894410" rel="stylesheet" id="R-variant-chroma-style"> <link href="/hugo-theme-relearn/css/variant.css?1711894410" rel="stylesheet"> <link href="/hugo-theme-relearn/css/print.css?1711894410" rel="stylesheet" media="print"> <link href="/hugo-theme-relearn/css/format-print.css?1711894410" rel="stylesheet"> <link href="/hugo-theme-relearn/css/ie.css?1711894410" rel="stylesheet"> <script src="/hugo-theme-relearn/js/url.js?1711894410"></script> <script src="/hugo-theme-relearn/js/variant.js?1711894410"></script> <script> window.relearn = window.relearn || {}; window.relearn.relBasePath='..\/..'; window.relearn.relBaseUri='..\/..\/..'; window.relearn.absBaseUri='https:\/\/mcshelby.github.io\/hugo-theme-relearn'; window.index_js_url="/hugo-theme-relearn/index.search.js"; // variant stuff window.relearn.themeVariantModifier=''; window.variants && variants.init( [ 'relearn-auto', 'relearn-light', 'relearn-dark', 'relearn-bright', 'zen-auto', 'zen-light', 'zen-dark', 'neon', 'learn', 'blue', 'green', 'red' ] ); // translations window.T_Copy_to_clipboard = `Copy to clipboard`; window.T_Copied_to_clipboard = `Copied to clipboard!`; window.T_Copy_link_to_clipboard = `Copy link to clipboard`; window.T_Link_copied_to_clipboard = `Copied link to clipboard!`; window.T_Reset_view = `Reset view`; window.T_View_reset = `View reset!`; window.T_No_results_found = `No results found for "{0}"`; window.T_N_results_found = `{1} results found for "{0}"`; </script> <style> #R-body img.bg-white { background-color: white; } </style> </head> <body class="mobile-support print disableInlineCopyToClipboard" data-url="/hugo-theme-relearn/cont/i18n/index.html"> <div id="R-body" class="default-animation"> <div id="R-body-overlay"></div> <nav id="R-topbar"> <div class="topbar-wrapper"> <div class="topbar-sidebar-divider"></div> <div class="topbar-area topbar-area-start" data-area="start"> <div class="topbar-button topbar-button-sidebar" data-content-empty="disable" data-width-s="show" data-width-m="hide" data-width-l="hide"><button class="topbar-control" onclick="toggleNav()" type="button" title="Menu (CTRL+ALT+n)"><i class="fa-fw fas fa-bars"></i></button> </div> </div> <ol class="topbar-breadcrumbs breadcrumbs highlightable" itemscope itemtype="http://schema.org/BreadcrumbList"><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"><a itemprop="item" href="/hugo-theme-relearn/cont/index.html"><span itemprop="name">Content</span></a><meta itemprop="position" content="1"> > </li><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"><span itemprop="name">Multilingual</span><meta itemprop="position" content="2"></li> </ol> <div class="topbar-area topbar-area-end" data-area="end"> </div> </div> </nav> <div id="R-main-overlay"></div> <main id="R-body-inner" class="highlightable default" tabindex="-1"> <div class="flex-block-wrapper"> <article class="default"> <header class="headline"> </header> <h1 id="multilingual-and-i18n">Multilingual and i18n</h1> <p>The Relearn theme is fully compatible with Hugo multilingual mode.</p> <ul> <li>Available languages: Arabic, Simplified Chinese, Traditional Chinese, Czech, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Swahili, Turkish, Vietnamese. Feel free to contribute!</li> <li>Full support for languages written right to left</li> <li>Automatic menu generation from multilingual content</li> <li>In-browser language switching</li> </ul> <p><a href="#R-image-9189987f4d1cb003fa490e64d55a5dab" class="lightbox-link"><img alt="I18n menu" class="bg-white border lazy lightbox noshadow figure-image" loading="lazy" src="/hugo-theme-relearn/cont/i18n/i18n-menu.gif?width=18.75rem" style=" height: auto; width: 18.75rem;"></a> <a href="javascript:history.back();" class="lightbox-back" id="R-image-9189987f4d1cb003fa490e64d55a5dab"><img alt="I18n menu" class="bg-white border lazy lightbox noshadow lightbox-image" loading="lazy" src="/hugo-theme-relearn/cont/i18n/i18n-menu.gif?width=18.75rem"></a></p> <h2 id="basic-configuration">Basic configuration</h2> <p>After learning <a href="https://gohugo.io/content-management/multilingual" target="_blank">how Hugo handle multilingual websites</a>, define your languages in your <code>hugo.toml</code> file.</p> <p>For example with current English and Piratized English website.</p> <div class="box notices cstyle note"> <div class="box-label"><i class="fa-fw fas fa-exclamation-circle"></i> Note</div> <div class="box-content"> <p>Make sure your default language is defined as the first one in the <code>[languages]</code> array, as the theme needs to make assumptions on it</p> </div> </div> <div class="tab-panel" data-tab-group="config-code"> <div class="tab-nav"> <div class="tab-nav-title">hugo.</div> <button data-tab-item="toml" class="tab-nav-button tab-panel-style cstyle initial active" tabindex="-1" onclick="switchTab('config-code','toml')" > <span class="tab-nav-text">toml</span> </button> <button data-tab-item="yaml" class="tab-nav-button tab-panel-style cstyle initial" onclick="switchTab('config-code','yaml')" > <span class="tab-nav-text">yaml</span> </button> <button data-tab-item="json" class="tab-nav-button tab-panel-style cstyle initial" onclick="switchTab('config-code','json')" > <span class="tab-nav-text">json</span> </button> </div> <div class="tab-content-container"> <div data-tab-item="toml" class="tab-content tab-panel-style cstyle initial active"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="nx">defaultContentLanguage</span> <span class="p">=</span> <span class="s1">'en'</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">languages</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="p">[</span><span class="nx">languages</span><span class="p">.</span><span class="nx">en</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">languageName</span> <span class="p">=</span> <span class="s1">'English'</span> </span></span><span class="line"><span class="cl"> <span class="nx">title</span> <span class="p">=</span> <span class="s1">'Hugo Relearn Theme'</span> </span></span><span class="line"><span class="cl"> <span class="nx">weight</span> <span class="p">=</span> <span class="mi">1</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="p">[</span><span class="nx">languages</span><span class="p">.</span><span class="nx">pir</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">languageName</span> <span class="p">=</span> <span class="s1">'Arrr! Pirrrates'</span> </span></span><span class="line"><span class="cl"> <span class="nx">title</span> <span class="p">=</span> <span class="s2">"Cap'n Hugo Relearrrn Theme"</span> </span></span><span class="line"><span class="cl"> <span class="nx">weight</span> <span class="p">=</span> <span class="mi">2</span></span></span></code></pre></div></div> </div> <div data-tab-item="yaml" class="tab-content tab-panel-style cstyle initial"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">defaultContentLanguage</span><span class="p">:</span><span class="w"> </span><span class="l">en</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">languages</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">en</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">languageName</span><span class="p">:</span><span class="w"> </span><span class="l">English</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="l">Hugo Relearn Theme</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">weight</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">pir</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">languageName</span><span class="p">:</span><span class="w"> </span><span class="l">Arrr! Pirrrates</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="l">Cap'n Hugo Relearrrn Theme</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">weight</span><span class="p">:</span><span class="w"> </span><span class="m">2</span></span></span></code></pre></div></div> </div> <div data-tab-item="json" class="tab-content tab-panel-style cstyle initial"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">"defaultContentLanguage"</span><span class="p">:</span> <span class="s2">"en"</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">"languages"</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">"en"</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">"languageName"</span><span class="p">:</span> <span class="s2">"English"</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">"title"</span><span class="p">:</span> <span class="s2">"Hugo Relearn Theme"</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">"weight"</span><span class="p">:</span> <span class="mi">1</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">"pir"</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">"languageName"</span><span class="p">:</span> <span class="s2">"Arrr! Pirrrates"</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">"title"</span><span class="p">:</span> <span class="s2">"Cap'n Hugo Relearrrn Theme"</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">"weight"</span><span class="p">:</span> <span class="mi">2</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div> </div> </div> </div> <p>Then, for each new page, append the <em>id</em> of the language to the file.</p> <ul> <li>Single file <code>my-page.md</code> is split in two files: <ul> <li>in English: <code>my-page.md</code></li> <li>in Piratized English: <code>my-page.pir.md</code></li> </ul> </li> <li>Single file <code>_index.md</code> is split in two files: <ul> <li>in English: <code>_index.md</code></li> <li>in Piratized English: <code>_index.pir.md</code></li> </ul> </li> </ul> <div class="box notices cstyle info"> <div class="box-label"><i class="fa-fw fas fa-info-circle"></i> Info</div> <div class="box-content"> <p>Be aware that only translated pages are displayed in menu. It’s not replaced with default language content.</p> </div> </div> <div class="box notices cstyle tip"> <div class="box-label"><i class="fa-fw fas fa-lightbulb"></i> Tip</div> <div class="box-content"> <p>Use <a href="https://gohugo.io/content-management/multilingual/#translate-your-content" target="_blank">slug</a> frontmatter parameter to translate urls too.</p> </div> </div> <h2 id="search">Search</h2> <p>In case each page’s content is written in one single language only, the above configuration will already configure the site’s search functionality correctly.</p> <div class="box notices cstyle warning"> <div class="box-label"><i class="fa-fw fas fa-exclamation-triangle"></i> Warning</div> <div class="box-content"> <p>Although the theme supports a wide variety of supported languages, the site’s search via the <a href="https://lunrjs.com" target="_blank">Lunr</a> search library does not. You’ll see error reports in your browsers console log for each unsupported language. Currently unsupported are:</p> <ul> <li>Czech</li> <li>Indonesian</li> <li>Polish</li> <li>Swahili</li> </ul> </div> </div> <h3 id="search-with-mixed-language-support">Search with mixed language support</h3> <p>In case your page’s content contains text in multiple languages (e.g. you are writing a Russian documentation for your english API), you can add those languages to your <code>hugo.toml</code> to broaden search.</p> <div class="tab-panel" data-tab-group="config-code"> <div class="tab-nav"> <div class="tab-nav-title">hugo.</div> <button data-tab-item="toml" class="tab-nav-button tab-panel-style cstyle initial active" tabindex="-1" onclick="switchTab('config-code','toml')" > <span class="tab-nav-text">toml</span> </button> <button data-tab-item="yaml" class="tab-nav-button tab-panel-style cstyle initial" onclick="switchTab('config-code','yaml')" > <span class="tab-nav-text">yaml</span> </button> <button data-tab-item="json" class="tab-nav-button tab-panel-style cstyle initial" onclick="switchTab('config-code','json')" > <span class="tab-nav-text">json</span> </button> </div> <div class="tab-content-container"> <div data-tab-item="toml" class="tab-content tab-panel-style cstyle initial active"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">params</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">additionalContentLanguage</span> <span class="p">=</span> <span class="p">[</span><span class="s1">'en'</span><span class="p">]</span></span></span></code></pre></div></div> </div> <div data-tab-item="yaml" class="tab-content tab-panel-style cstyle initial"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">params</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">additionalContentLanguage</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">en</span></span></span></code></pre></div></div> </div> <div data-tab-item="json" class="tab-content tab-panel-style cstyle initial"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">"params"</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">"additionalContentLanguage"</span><span class="p">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="s2">"en"</span> </span></span><span class="line"><span class="cl"> <span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div> </div> </div> </div> <p>As this is an array, you can add multiple additional languages.</p> <div class="box notices cstyle note"> <div class="box-label"><i class="fa-fw fas fa-exclamation-circle"></i> Note</div> <div class="box-content"> <p>Keep in mind that the language code required here, is the base language code. E.g. if you have additional content in <code>zh-CN</code>, you have to add just <code>zh</code> to this parameter.</p> </div> </div> <h2 id="overwrite-translation-strings">Overwrite translation strings</h2> <p>Translations strings are used for common default values used in the theme (<em>Edit</em> button, <em>Search placeholder</em> and so on). Translations are available in English and Piratized English but you may use another language or want to override default values.</p> <p>To override these values, create a new file in your local i18n folder <code>i18n/<idlanguage>.toml</code> and inspire yourself from the theme <code>themes/hugo-theme-relearn/i18n/en.toml</code></p> <h2 id="disable-language-switching">Disable language switching</h2> <p>Switching the language in the browser is a great feature, but for some reasons you may want to disable it.</p> <p>Just set <code>disableLanguageSwitchingButton=true</code> in your <code>hugo.toml</code></p> <div class="tab-panel" data-tab-group="config-code"> <div class="tab-nav"> <div class="tab-nav-title">hugo.</div> <button data-tab-item="toml" class="tab-nav-button tab-panel-style cstyle initial active" tabindex="-1" onclick="switchTab('config-code','toml')" > <span class="tab-nav-text">toml</span> </button> <button data-tab-item="yaml" class="tab-nav-button tab-panel-style cstyle initial" onclick="switchTab('config-code','yaml')" > <span class="tab-nav-text">yaml</span> </button> <button data-tab-item="json" class="tab-nav-button tab-panel-style cstyle initial" onclick="switchTab('config-code','json')" > <span class="tab-nav-text">json</span> </button> </div> <div class="tab-content-container"> <div data-tab-item="toml" class="tab-content tab-panel-style cstyle initial active"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">params</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nx">disableLanguageSwitchingButton</span> <span class="p">=</span> <span class="kc">true</span></span></span></code></pre></div></div> </div> <div data-tab-item="yaml" class="tab-content tab-panel-style cstyle initial"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">params</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">disableLanguageSwitchingButton</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span></span></span></code></pre></div></div> </div> <div data-tab-item="json" class="tab-content tab-panel-style cstyle initial"> <div class="tab-content-text"> <div class="highlight wrap-code"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">"params"</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">"disableLanguageSwitchingButton"</span><span class="p">:</span> <span class="kc">true</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div> </div> </div> </div> <footer class="footline"> </footer> </article> </div> </main> </div> <script src="/hugo-theme-relearn/js/clipboard.min.js?1711894410" defer></script> <script src="/hugo-theme-relearn/js/perfect-scrollbar.min.js?1711894410" defer></script> <script src="/hugo-theme-relearn/js/theme.js?1711894410" defer></script> </body> </html>