mirror of
https://github.com/welpo/tabi.git
synced 2025-10-10 23:38:53 +02:00
18 lines
No EOL
36 KiB
HTML
18 lines
No EOL
36 KiB
HTML
<!doctype html><html lang=en><head><meta charset=UTF-8><meta content="default-src 'self';font-src 'self' data:;img-src 'self' https://* data:;media-src 'self' https://cdn.jsdelivr.net/;style-src 'self';frame-src player.vimeo.com https://www.youtube-nocookie.com;connect-src 'self' https://tabi-stats.osc.garden vhiweeypifbwacashxjz.supabase.co;script-src 'self' https://tabi-stats.osc.garden cdn.jsdelivr.net 'self'" http-equiv=Content-Security-Policy><meta content="width=device-width,initial-scale=1.0" name=viewport><meta content=https://welpo.github.io/tabi name=base><title>
|
||
~/tabi • Lost in Translation? Not with tabi's Multilingual Capabilities</title><link href=https://welpo.github.io/tabi/img/seedling.png rel=icon type=image/png><link href='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text y="50%" x="50%" dominant-baseline="central" text-anchor="middle" font-size="88">🌱</text></svg>' rel=icon><link title="~/tabi - Atom Feed" href=https://welpo.github.io/tabi/atom.xml rel=alternate type=application/atom+xml><link href="https://welpo.github.io/tabi/custom_subset.css?h=0b9535a28bc3d5bf2321" rel=stylesheet><link href="https://welpo.github.io/tabi/main.css?h=3716ab3457d2dd050b3c" rel=stylesheet><meta content="light dark" name=color-scheme><meta content=#087e96 name=theme-color><meta content="Master the art of serving a global audience through tabi's built-in multilingual features. Learn how to change the default language, add multilingual support, and contribute your own translations." name=description><meta content="Master the art of serving a global audience through tabi's built-in multilingual features. Learn how to change the default language, add multilingual support, and contribute your own translations." property=og:description><meta content="Lost in Translation? Not with tabi's Multilingual Capabilities" property=og:title><meta content=article property=og:type><meta content="https://welpo.github.io/tabi/blog/faq-languages/social_cards/blog_faq_languages.jpg?h=d95ab621cea8782cf42d" property=og:image><meta content=1400 property=og:image:width><meta content=800 property=og:image:height><meta content="https://welpo.github.io/tabi/blog/faq-languages/social_cards/blog_faq_languages.jpg?h=d95ab621cea8782cf42d" name=twitter:image><meta content=summary_large_image name=twitter:card><meta content=es_ES property=og:locale:alternate><link href=https://welpo.github.io/tabi/es/blog/faq-languages/ hreflang=es rel=alternate><meta content=ca_ES property=og:locale:alternate><link href=https://welpo.github.io/tabi/ca/blog/faq-languages/ hreflang=ca rel=alternate><meta content=en_GB property=og:locale:alternate><link href=https://welpo.github.io/tabi/blog/faq-languages/ hreflang=en rel=alternate><meta content=https://welpo.github.io/tabi/blog/faq-languages/ property=og:url><meta content=~/tabi property=og:site_name><noscript><link href=https://welpo.github.io/tabi/no_js.css rel=stylesheet></noscript><script src=https://welpo.github.io/tabi/js/initializeTheme.min.js></script><script defer src=https://welpo.github.io/tabi/js/themeSwitcher.min.js></script><script async data-goatcounter=https://tabi-stats.osc.garden/count src=https://tabi-stats.osc.garden/count.js></script><script src="https://welpo.github.io/tabi/js/searchElasticlunr.min.js?h=3626c0ef99daa745b31e" defer></script><body><a href=#main-content id=skip-link>Skip to content</a><header><nav class=navbar><div class=nav-title><a class=home-title href=https://welpo.github.io/tabi/>~/tabi</a></div><div class=nav-navs><ul><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/blog/>blog </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/archive/>archive </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/tags/>tags </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/projects/>projects </a><li class=menu-icons-container><ul class=menu-icons-group><li class="js menu-icon"><div aria-label="Click or press $SHORTCUT to open search" class="search-icon interactive-icon" title="Click or press $SHORTCUT to open search" id=search-button role=button tabindex=0><svg viewbox="0 -960 960 960" xmlns=http://www.w3.org/2000/svg><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg></div><li class=language-switcher><details class=dropdown><summary aria-label="Language selection" title="Language selection" aria-haspopup=true role=button><div class=language-switcher-icon></div></summary> <div class=dropdown-content role=menu>English<a aria-label=Català href=https://welpo.github.io/tabi/ca/blog/faq-languages/ lang=ca role=menuitem>Català</a><a aria-label=العربية href=https://welpo.github.io/tabi/ar/blog/faq-languages/ lang=ar role=menuitem>العربية</a><a aria-label=Español href=https://welpo.github.io/tabi/es/blog/faq-languages/ lang=es role=menuitem>Español</a></div></details><li class="theme-switcher-wrapper js"><div aria-label="Toggle dark mode" title="Toggle dark/light mode" aria-pressed=false class=theme-switcher role=button tabindex=0></div><div aria-label="Reset mode to default" class="theme-resetter arrow" title="Reset mode to default" aria-hidden=true role=button tabindex=0></div></ul></ul></div></nav></header><div class=content id=main-content><main><article class=h-entry><h1 class="p-name article-title">Lost in Translation? Not with tabi’s Multilingual Capabilities</h1><a class="u-url u-uid" href=https://welpo.github.io/tabi/blog/faq-languages/></a><ul class=meta><li><time class=dt-published datetime=2023-09-12>12th Sep 2023</time><li title="935 words"><span aria-hidden=true class=separator>•</span>5 min read<li class=tag><span aria-hidden=true class=separator>•</span>Tags: <li class=tag><a class=p-category href=https://welpo.github.io/tabi/tags/showcase/>showcase</a>, <li class=tag><a class=p-category href=https://welpo.github.io/tabi/tags/tutorial/>tutorial</a>, <li class=tag><a class=p-category href=https://welpo.github.io/tabi/tags/faq/>FAQ</a></ul><ul class="meta last-updated"><li><time class=dt-updated datetime=2025-09-14>Updated on 14th Sep 2025</time><li><span aria-hidden=true class=separator>•</span><a class=external href=https://github.com/welpo/tabi/commits/main/content/blog/faq-languages/index.md>See changes</a></ul><p class=p-summary hidden>Master the art of serving a global audience through tabi's built-in multilingual features. Learn how to change the default language, add multilingual support, and contribute your own translations.<section class="e-content body"><p>To broaden your reach to a global audience, tabi streamlines the process of building multilingual websites. In this guide, we’ll walk you through everything you need to know—from setting a default language for your site to contributing your own translations. Let’s get started!<h3 id=frequently-asked-questions><a aria-label="Anchor link for: frequently-asked-questions" class="header-anchor no-hover-padding" href=#frequently-asked-questions><span aria-hidden=true class=link-icon></span></a> Frequently Asked Questions</h3><div class=toc-container><ul><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#what-languages-does-tabi-support>What languages does tabi support?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-set-a-default-language-for-my-site>How do I set a default language for my site?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-does-tabi-handle-multilingual-support>How does tabi handle multilingual support?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-enable-multilingual-support>How do I enable multilingual support?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#what-are-these-two-letter-codes>What are these two letter codes?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-customise-or-override-a-specific-text-string-on-my-website>How do I customise or override a specific text string on my website?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-customize-date-formats-for-different-languages>How do I customize date formats for different languages?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#what-happens-if-a-translation-is-missing-or-incomplete>What happens if a translation is missing or incomplete?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#my-language-is-not-supported-can-i-contribute-a-translation>My language is not supported. Can I contribute a translation?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#i-ve-found-an-error-in-a-translation-how-do-i-fix-it>I’ve found an error in a translation. How do I fix it?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-update-the-translations-after-a-theme-update>How do I update the translations after a theme update?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#does-tabi-translate-my-content>Does tabi translate my content?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-to-show-current-language-code-on-the-language-switcher>How to show current language code on the language switcher?</a></ul></div><h2 id=what-languages-does-tabi-support><a aria-label="Anchor link for: what-languages-does-tabi-support" class="header-anchor no-hover-padding" href=#what-languages-does-tabi-support><span aria-hidden=true class=link-icon></span></a> What languages does tabi support?</h2><p>tabi supports the following languages:<ul><li>Arabic<li>Catalan<li>Chinese (Simplified)<li>Chinese (Traditional)<li>English<li>Estonian<li>Finnish<li>French<li>German<li>Hindi<li>Italian<li>Japanese<li>Korean<li>Odia<li>Persian<li>Portuguese (European)<li>Russian<li>Spanish<li>Ukranian</ul><p>For an always up to date list of supported languages, refer to the <a class=external href=https://github.com/welpo/tabi/tree/main/i18n><code>i18n</code> directory</a> in the tabi repository.<h2 id=how-do-i-set-a-default-language-for-my-site><a aria-label="Anchor link for: how-do-i-set-a-default-language-for-my-site" class="header-anchor no-hover-padding" href=#how-do-i-set-a-default-language-for-my-site><span aria-hidden=true class=link-icon></span></a> How do I set a default language for my site?</h2><p>You can set the default language for your site by defining the <code>default_language</code> variable in your <code>config.toml</code> file.<p>For instance, if you want (Simplified) Chinese to be the primary language, simply add this line to <code>config.toml</code>:<pre class="language-toml z-code" data-lang=toml><code class=language-toml data-lang=toml><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">base_url</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>https://welpo.github.io/tabi<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
|
||
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">title</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>~/tabi<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
|
||
</span><mark><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">default_language</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>zh-Hans<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
|
||
</span></mark></code></pre><p>If the value of <code>default_language</code> matches the name of a TOML file in the <a class=external href=https://github.com/welpo/tabi/tree/main/i18n><code>i18n</code> directory</a>, all of tabi’s text strings will be translated to that language.<h2 id=how-does-tabi-handle-multilingual-support><a aria-label="Anchor link for: how-does-tabi-handle-multilingual-support" class="header-anchor no-hover-padding" href=#how-does-tabi-handle-multilingual-support><span aria-hidden=true class=link-icon></span></a> How does tabi handle multilingual support?</h2><p>Zola automatically generates URLs for each non-default language like this: <code>{base_url}/{language_code}/{post}</code>.<p>tabi facilitates the navigation between languages by adding a language switcher to the navigation bar (only shown when there’s more than one language enabled).<p>If you <a href=#>scroll up</a> to the navigation bar, you’ll see the language switcher (the globe icon). Clicking on it will display a dropdown with the available languages. Clicking on a language’s name will take you to the same page in that language.<p>If a specific page is not available in a language, tabi will display a 404 page with the text:<blockquote><p>The page you’ve requested seems to be missing or hasn’t been translated into your language yet. Check the URL for errors or go back to the homepage.</blockquote><p>This text will be shown once for each language enabled on your site. You can see this page in action <a class=external href=https://welpo.github.io/tabi/404.html>here</a>.<h2 id=how-do-i-enable-multilingual-support><a aria-label="Anchor link for: how-do-i-enable-multilingual-support" class="header-anchor no-hover-padding" href=#how-do-i-enable-multilingual-support><span aria-hidden=true class=link-icon></span></a> How do I enable multilingual support?</h2><p>To enable multilingual support, you need to set the <code>languages</code> variable in your <code>config.toml</code> file. For example, if want an English-default site with support for Hindi and Spanish, you can set up your <code>config.toml</code> like so:<pre class="language-toml z-code" data-lang=toml><code class=language-toml data-lang=toml><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">base_url</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>https://example.com<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
|
||
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">title</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>My Site<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
|
||
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">default_language</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>en<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
|
||
</span><span class="z-source z-toml">
|
||
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">languages</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">hi</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
|
||
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">title</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>मेरी वेबसाइट<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
|
||
</span><span class="z-source z-toml">
|
||
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">languages</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">es</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
|
||
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">title</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Mi web<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
|
||
</span></code></pre><p>On each language’s section, you can set other variables like <code>taxonomies</code>, <code>description</code>, whether to generate a feed… Refer to Zola’s <a class=external href=https://www.getzola.org/documentation/content/multilingual/>multilingual support documentation</a> for more information.<h2 id=what-are-these-two-letter-codes><a aria-label="Anchor link for: what-are-these-two-letter-codes" class="header-anchor no-hover-padding" href=#what-are-these-two-letter-codes><span aria-hidden=true class=link-icon></span></a> What are these two letter codes?</h2><p>The two letter codes are <a class=external href=https://localizely.com/iso-639-1-list/>ISO 639-1 language codes</a> (or <a class=external href=https://en.wikipedia.org/wiki/IETF_language_tag>IETF BCP 47</a>, when necessary). They are used to identify languages in a standardised way.<p>tabi uses these codes to allow navigation between languages and translate the theme.<h2 id=how-do-i-customise-or-override-a-specific-text-string-on-my-website><a aria-label="Anchor link for: how-do-i-customise-or-override-a-specific-text-string-on-my-website" class="header-anchor no-hover-padding" href=#how-do-i-customise-or-override-a-specific-text-string-on-my-website><span aria-hidden=true class=link-icon></span></a> How do I customise or override a specific text string on my website?</h2><p>tabi looks for the strings files in the following order. <code>$base_directory</code> is where your Zola site resides (where <code>config.toml</code> is stored):<ol><li><code>$base_directory + "i18n"</code><li><code>$base_directory + "themes/tabi/i18n"</code></ol><p>So if you create <code>i18n/en.toml</code> in your base directory, tabi will read the strings from that file instead of the default English strings. You can do this for any language, supported or not.<p>Make sure to copy the entire file for that language first, or the theme will fall back to the default English strings.<h2 id=how-do-i-customize-date-formats-for-different-languages><a aria-label="Anchor link for: how-do-i-customize-date-formats-for-different-languages" class="header-anchor no-hover-padding" href=#how-do-i-customize-date-formats-for-different-languages><span aria-hidden=true class=link-icon></span></a> How do I customize date formats for different languages?</h2><p>You can set language-specific date formats in your <code>config.toml</code> using the <code>date_formats</code> array:<pre class="language-toml z-code" data-lang=toml><code class=language-toml data-lang=toml><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">date_formats</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-punctuation z-definition z-array z-begin z-toml">[</span>
|
||
</span><span class="z-source z-toml"> <span class="z-punctuation z-definition z-inline-table z-begin z-toml">{</span> <span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">lang</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>es<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-inline-table z-toml">,</span> <span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">long</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>%d de %B de %Y<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-inline-table z-toml">,</span> <span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">short</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>%-d %b %Y<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-inline-table z-toml">,</span> <span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">archive</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>%d de %b<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span> <span class="z-punctuation z-definition z-inline-table z-end z-toml">}</span><span class="z-punctuation z-separator z-array z-toml">,</span>
|
||
</span><span class="z-source z-toml"> <span class="z-punctuation z-definition z-inline-table z-begin z-toml">{</span> <span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">lang</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>de<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-inline-table z-toml">,</span> <span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">long</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>%d. %B %Y<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-inline-table z-toml">,</span> <span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">short</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>%d.%m.%Y<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-inline-table z-toml">,</span> <span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">archive</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>%d. %b<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span> <span class="z-punctuation z-definition z-inline-table z-end z-toml">}</span><span class="z-punctuation z-separator z-array z-toml">,</span>
|
||
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-array z-end z-toml">]</span>
|
||
</span></code></pre><p>This allows each language to display dates according to local conventions. For example, Spanish will show “3 de febrero de 2024” while German will show “3. Februar 2024”. If no language-specific format is defined, tabi will use the global <code>long_date_format</code>, <code>short_date_format</code> and <code>archive_date_format</code> settings.<h2 id=what-happens-if-a-translation-is-missing-or-incomplete><a aria-label="Anchor link for: what-happens-if-a-translation-is-missing-or-incomplete" class="header-anchor no-hover-padding" href=#what-happens-if-a-translation-is-missing-or-incomplete><span aria-hidden=true class=link-icon></span></a> What happens if a translation is missing or incomplete?</h2><p>If a string is not found in the language file, tabi will fall back to the default English string.<h2 id=my-language-is-not-supported-can-i-contribute-a-translation><a aria-label="Anchor link for: my-language-is-not-supported-can-i-contribute-a-translation" class="header-anchor no-hover-padding" href=#my-language-is-not-supported-can-i-contribute-a-translation><span aria-hidden=true class=link-icon></span></a> My language is not supported. Can I contribute a translation?</h2><p>Please do! We are always looking to add support for more languages. You can contribute a translation by creating a pull request in the <a class=external href=https://github.com/welpo/tabi>tabi repository</a>.<p>You can use the <a class=external href=https://github.com/welpo/tabi/blob/main/i18n/en.toml>English file</a> as a base to translate the strings to your language. Please make sure to follow the same structure.<p>The file should be named after the two letter code of your language, and should be a TOML file. For example, if you want to add support for Swahili, you can create a file named <code>sw.toml</code> in the <code>i18n</code> directory.<p>Note: when testing your translation, you might need to restart <code>zola serve</code> to see the changes, as Zola doesn’t always detect changes in the TOML files.<h2 id=i-ve-found-an-error-in-a-translation-how-do-i-fix-it><a aria-label="Anchor link for: i-ve-found-an-error-in-a-translation-how-do-i-fix-it" class="header-anchor no-hover-padding" href=#i-ve-found-an-error-in-a-translation-how-do-i-fix-it><span aria-hidden=true class=link-icon></span></a> I’ve found an error in a translation. How do I fix it?</h2><p>If you find an error in a translation, you can create an issue or a pull request in the <a class=external href=https://github.com/welpo/tabi>tabi repository</a>.<h2 id=how-do-i-update-the-translations-after-a-theme-update><a aria-label="Anchor link for: how-do-i-update-the-translations-after-a-theme-update" class="header-anchor no-hover-padding" href=#how-do-i-update-the-translations-after-a-theme-update><span aria-hidden=true class=link-icon></span></a> How do I update the translations after a theme update?</h2><p>If you didn’t customise the translations, simply updating the theme will update the translations.<p>If you did, you will need to manually update the translations. You can do this by copying the new strings from the corresponding files, and pasting them in your custom file.<h2 id=does-tabi-translate-my-content><a aria-label="Anchor link for: does-tabi-translate-my-content" class="header-anchor no-hover-padding" href=#does-tabi-translate-my-content><span aria-hidden=true class=link-icon></span></a> Does tabi translate my content?</h2><p>No. tabi only translates the theme’s text strings. You will need to translate your content yourself.<h1 id=how-to-show-current-language-code-on-the-language-switcher><a aria-label="Anchor link for: how-to-show-current-language-code-on-the-language-switcher" class="header-anchor no-hover-padding" href=#how-to-show-current-language-code-on-the-language-switcher><span aria-hidden=true class=link-icon></span></a> How to show current language code on the language switcher?</h1><p>Add <code>show_selected_language_code_in_language_switcher = true</code> in your config extras.</section><form action="https://vhiweeypifbwacashxjz.supabase.co/rest/v1/rpc/increment_hits?apikey=sb_publishable_EoB7MFJhCmb6PiAk-GPJ4w_PGhQ44Ru" class=iine-form method=post><input name=page_slug type=hidden value=/blog/faq-languages/><button aria-label="Like this post" title="Like this post" class=iine-button data-icon=thumbs_up data-slug=/blog/faq-languages/>👍</button></form><nav class="full-width article-navigation"><div><a aria-describedby=left_title aria-label=Next href=https://welpo.github.io/tabi/blog/mastering-tabi-settings/><span class=arrow>←</span> Next</a><p aria-hidden=true id=left_title>Mastering tabi Settings: A Comprehensive Guide</div><div><a aria-describedby=right_title aria-label=Prev href=https://welpo.github.io/tabi/blog/customise-tabi/>Prev <span class=arrow>→</span></a><p aria-hidden=true id=right_title>Customise tabi with skins and a default theme</div></nav></article></main><div id=button-container><div id=toc-floating-container><input class=toggle id=toc-toggle type=checkbox><label class=overlay for=toc-toggle></label><label title="Toggle Table of Contents" class=button for=toc-toggle id=toc-button><svg viewbox="0 -960 960 960" xmlns=http://www.w3.org/2000/svg><path d="M414.82-193.094q-18.044 0-30.497-12.32-12.453-12.319-12.453-30.036t12.453-30.086q12.453-12.37 30.497-12.37h392.767q17.237 0 29.927 12.487 12.69 12.486 12.69 30.203 0 17.716-12.69 29.919t-29.927 12.203H414.82Zm0-244.833q-18.044 0-30.497-12.487Q371.87-462.9 371.87-480.45t12.453-29.92q12.453-12.369 30.497-12.369h392.767q17.237 0 29.927 12.511 12.69 12.512 12.69 29.845 0 17.716-12.69 30.086-12.69 12.37-29.927 12.37H414.82Zm0-245.167q-18.044 0-30.497-12.32t-12.453-30.037q0-17.716 12.453-30.086 12.453-12.369 30.497-12.369h392.767q17.237 0 29.927 12.486 12.69 12.487 12.69 30.203 0 17.717-12.69 29.92-12.69 12.203-29.927 12.203H414.82ZM189.379-156.681q-32.652 0-55.878-22.829t-23.226-55.731q0-32.549 23.15-55.647 23.151-23.097 55.95-23.097 32.799 0 55.313 23.484 22.515 23.484 22.515 56.246 0 32.212-22.861 54.893-22.861 22.681-54.963 22.681Zm0-245.167q-32.652 0-55.878-23.134-23.226-23.135-23.226-55.623 0-32.487 23.467-55.517t56.12-23.03q32.102 0 54.721 23.288 22.62 23.288 22.62 55.775 0 32.488-22.861 55.364-22.861 22.877-54.963 22.877Zm-.82-244.833q-32.224 0-55.254-23.288-23.03-23.289-23.03-55.623 0-32.333 23.271-55.364 23.272-23.03 55.495-23.03 32.224 0 55.193 23.288 22.969 23.289 22.969 55.622 0 32.334-23.21 55.364-23.21 23.031-55.434 23.031Z"/></svg></label><div class=toc-content><div class=toc-container><ul><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#what-languages-does-tabi-support>What languages does tabi support?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-set-a-default-language-for-my-site>How do I set a default language for my site?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-does-tabi-handle-multilingual-support>How does tabi handle multilingual support?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-enable-multilingual-support>How do I enable multilingual support?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#what-are-these-two-letter-codes>What are these two letter codes?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-customise-or-override-a-specific-text-string-on-my-website>How do I customise or override a specific text string on my website?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-customize-date-formats-for-different-languages>How do I customize date formats for different languages?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#what-happens-if-a-translation-is-missing-or-incomplete>What happens if a translation is missing or incomplete?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#my-language-is-not-supported-can-i-contribute-a-translation>My language is not supported. Can I contribute a translation?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#i-ve-found-an-error-in-a-translation-how-do-i-fix-it>I’ve found an error in a translation. How do I fix it?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-update-the-translations-after-a-theme-update>How do I update the translations after a theme update?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#does-tabi-translate-my-content>Does tabi translate my content?</a><li><a href=https://welpo.github.io/tabi/blog/faq-languages/#how-to-show-current-language-code-on-the-language-switcher>How to show current language code on the language switcher?</a></ul></div></div></div><a title="Go to the top of the page" class=no-hover-padding href=# id=top-button> <svg viewbox="0 0 20 20" fill=currentColor><path d="M3.293 9.707a1 1 0 010-1.414l6-6a1 1 0 011.414 0l6 6a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L4.707 9.707a1 1 0 01-1.414 0z"/></svg> </a></div><span class=hidden id=copy-success> Copied! </span><span class=hidden id=copy-init> Copy code to clipboard </span><script defer src=https://welpo.github.io/tabi/js/copyCodeToClipboard.min.js></script><script defer src=https://cdn.jsdelivr.net/gh/welpo/iine@main/iine.mini.js></script></div><footer><section><nav class="socials nav-navs"><ul><li><a class="nav-links no-hover-padding social" href=https://welpo.github.io/tabi/atom.xml> <img alt=feed loading=lazy src=https://welpo.github.io/tabi/social_icons/rss.svg title=feed> </a><li class=js><a class="nav-links no-hover-padding social" data-encoded-email=dGFiaUBvc2MuZ2FyZGVu href=#><img alt=email loading=lazy src=https://welpo.github.io/tabi/social_icons/email.svg title=email> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://github.com/welpo/> <img alt=github loading=lazy src=https://welpo.github.io/tabi/social_icons/github.svg title=github> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://soundcloud.com/oskerwyld> <img alt=soundcloud loading=lazy src=https://welpo.github.io/tabi/social_icons/soundcloud.svg title=soundcloud> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://instagram.com/oskerwyld> <img alt=instagram loading=lazy src=https://welpo.github.io/tabi/social_icons/instagram.svg title=instagram> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://youtube.com/@oskerwyld> <img alt=youtube loading=lazy src=https://welpo.github.io/tabi/social_icons/youtube.svg title=youtube> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://open.spotify.com/artist/5Hv2bYBhMp1lUHFri06xkE> <img alt=spotify loading=lazy src=https://welpo.github.io/tabi/social_icons/spotify.svg title=spotify> </a></ul></nav><nav class=nav-navs><small> <ul><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/about/> about </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/privacy/> privacy policy </a><li><a class="nav-links no-hover-padding" href=https://tabi-stats.osc.garden/> site statistics </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/sitemap.xml> sitemap </a></ul> </small></nav><div class=credits><small> Powered by <a href=https://www.getzola.org>Zola</a> & <a href=https://github.com/welpo/tabi>tabi</a> • <a href=https://github.com/welpo/tabi> Site source </a></small></div></section><script async src=https://welpo.github.io/tabi/js/decodeMail.min.js></script><div class="search-modal js" aria-labelledby=modalTitle id=searchModal role=dialog><h1 class=visually-hidden id=modalTitle>Search</h1><div id=modal-content><div id=searchBar><div aria-hidden=true class=search-icon><svg viewbox="0 -960 960 960" xmlns=http://www.w3.org/2000/svg><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg></div><input aria-controls=results-container aria-expanded=false autocomplete=off id=searchInput placeholder=Search… role=combobox spellcheck=false><div class="close-icon interactive-icon" title="Clear search" id=clear-search role=button tabindex=0><svg viewbox="0 -960 960 960" xmlns=http://www.w3.org/2000/svg><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg></div></div><div id=results-container><div id=results-info><span id=zero_results> No results</span><span id=one_results> $NUMBER result</span><span id=many_results> $NUMBER results</span><span id=two_results> $NUMBER results</span><span id=few_results> $NUMBER results</span></div><div id=results role=listbox></div></div></div></div></footer> |