CINXE.COM
plugin:translation [DokuWiki]
<!DOCTYPE html> <html lang="en" dir="ltr" class="no-js"> <head> <meta charset="utf-8" /> <title>plugin:translation [DokuWiki]</title> <meta name="generator" content="DokuWiki"/> <meta name="theme-color" content="#008800"/> <meta name="robots" content="index,follow"/> <meta name="keywords" content="plugin,translation"/> <link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="DokuWiki"/> <link rel="start" href="/"/> <link rel="contents" href="/plugin:translation?do=index" title="Sitemap"/> <link rel="manifest" href="/lib/exe/manifest.php"/> <link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/feed.php"/> <link rel="alternate" type="application/rss+xml" title="Current namespace" href="/feed.php?mode=list&ns=plugin"/> <link rel="edit" title="Edit this page" href="/plugin:translation?do=edit"/> <link rel="alternate" type="text/html" title="Plain HTML" href="/_export/xhtml/plugin:translation"/> <link rel="alternate" type="text/plain" title="Wiki Markup" href="/_export/raw/plugin:translation"/> <link rel="canonical" href="https://www.dokuwiki.org/plugin:translation"/> <link rel="stylesheet" href="/lib/exe/css.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e"/> <script >var NS='plugin';var JSINFO = {"plugins":{"edittable":{"default columnwidth":""}},"id":"plugin:translation","namespace":"plugin","ACT":"show","useHeadingNavigation":0,"useHeadingContent":0};(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer="defer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" defer="defer"></script> <script src="/lib/exe/js.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e&lang=en" defer="defer"></script> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="shortcut icon" href="/lib/tpl/dokuwiki/images/favicon.ico" /> <link rel="apple-touch-icon" href="/lib/tpl/dokuwiki/images/apple-touch-icon.png" /> <meta name="verify-v1" content="OVxl3gsCv2MhZqh1cBQyl0JytWXSwXMjyvwc+4w3WtA=" /> <meta name="google-site-verification" content="YhTVK69hW94ZXUtc2zSLPxTkZKbZIn0zK67mz5WQB-E" /> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-83791-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-83791-1', { 'anonymize_ip': true }); </script> </head> <body> <div id="dokuwiki__site"><div id="dokuwiki__top" class="site dokuwiki mode_show tpl_dokuwiki showSidebar hasSidebar"> <!-- ********** HEADER ********** --> <header id="dokuwiki__header"><div class="pad group"> <div class="headings group"> <ul class="a11y skip"> <li><a href="#dokuwiki__content">skip to content</a></li> </ul> <h1 class="logo"><a href="/start" accesskey="h" title="Home [h]"><img src="/lib/tpl/dokuwiki/images/logo.png" width="64" height="64" alt="" /><span>DokuWiki</span></a></h1> <p class="claim">It's better when it's simple</p> </div> <div class="tools group"> <!-- USER TOOLS --> <div id="dokuwiki__usertools"> <h3 class="a11y">User Tools</h3> <ul> <li class="action login"><a href="/plugin:translation?do=login&sectok=" title="Log In" rel="nofollow"><span>Log In</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg></a></li> </ul> </div> <!-- SITE TOOLS --> <div id="dokuwiki__sitetools"> <h3 class="a11y">Site Tools</h3> <form action="/start" method="get" role="search" class="search doku_form" id="dw__search" accept-charset="utf-8"><input type="hidden" name="do" value="search" /><input type="hidden" name="id" value="plugin:translation" /><div class="no"><input name="q" type="text" class="edit" title="[F]" accesskey="f" placeholder="Search" autocomplete="on" id="qsearch__in" value="" /><button value="1" type="submit" title="Search">Search</button><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form> <div class="mobileTools"> <form action="/doku.php" method="get" accept-charset="utf-8"><div class="no"><input type="hidden" name="id" value="plugin:translation" /><select name="do" class="edit quickselect" title="Tools"><option value="">Tools</option><optgroup label="Page Tools"><option value="edit">Edit this page</option><option value="revisions">Old revisions</option><option value="backlink">Backlinks</option></optgroup><optgroup label="Site Tools"><option value="recent">Recent Changes</option><option value="media">Media Manager</option><option value="index">Sitemap</option></optgroup><optgroup label="User Tools"><option value="login">Log In</option></optgroup></select><button type="submit">></button></div></form> </div> <ul> <li class="action recent"><a href="/plugin:translation?do=recent" title="Recent Changes [r]" rel="nofollow" accesskey="r">Recent Changes</a></li><li class="action media"><a href="/plugin:translation?do=media&ns=plugin" title="Media Manager" rel="nofollow">Media Manager</a></li><li class="action index"><a href="/plugin:translation?do=index" title="Sitemap [x]" rel="nofollow" accesskey="x">Sitemap</a></li> </ul> </div> </div> <!-- BREADCRUMBS --> <div class="breadcrumbs"> <div class="trace"><span class="bchead">Trace:</span> <span class="bcsep">•</span> <span class="curid"><bdi><a href="/plugin:translation" class="breadcrumbs" title="plugin:translation">translation</a></bdi></span></div> </div> <hr class="a11y" /> </div></header><!-- /header --> <div class="wrapper group"> <!-- ********** ASIDE ********** --> <nav id="dokuwiki__aside" aria-label="Sidebar"><div class="pad aside include group"> <h3 class="toggle">Sidebar</h3> <div class="content"><div class="group"> <p> <strong>Learn about DokuWiki</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/features" class="wikilink1" title="features" data-wiki-id="features">Features</a> & <a href="/blogroll" class="wikilink1" title="blogroll" data-wiki-id="blogroll">reviews</a> </div> </li> <li class="level1"><div class="li"> <a href="/install" class="wikilink1" title="install" data-wiki-id="install">Installation guide</a></div> </li> <li class="level1"><div class="li"> <a href="/manual" class="wikilink1" title="manual" data-wiki-id="manual">User manual</a> & <a href="/wiki:syntax" class="wikilink1" title="wiki:syntax" data-wiki-id="wiki:syntax">syntax</a></div> </li> <li class="level1"><div class="li"> <a href="/changes" class="wikilink1" title="changes" data-wiki-id="changes">Release notes</a></div> </li> <li class="level1"><div class="li"> <a href="/faq" class="wikilink1" title="faq" data-wiki-id="faq">FAQ</a></div> </li> </ul> <p> <strong>Advanced Use</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/extensions" class="wikilink1" title="extensions" data-wiki-id="extensions">Extensions</a></div> </li> <li class="level1"><div class="li"> <a href="/development" class="wikilink1" title="development" data-wiki-id="development">Development manual</a></div> </li> </ul> <p> <strong>Corporate Use</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/faq:support" class="wikilink1" title="faq:support" data-wiki-id="faq:support">Get support</a></div> </li> <li class="level1"><div class="li"> <a href="/donate" class="wikilink1" title="donate" data-wiki-id="donate">Donations</a></div> </li> </ul> <p> <strong>Our Community</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/teams:getting_involved" class="wikilink1" title="teams:getting_involved" data-wiki-id="teams:getting_involved">Get involved</a></div> </li> <li class="level1"><div class="li"> <a href="/dokuinstall" class="wikilink1" title="dokuinstall" data-wiki-id="dokuinstall">Users</a></div> </li> <li class="level1"><div class="li"> <a href="http://forum.dokuwiki.org" class="urlextern" title="http://forum.dokuwiki.org">User forum</a></div> </li> <li class="level1"><div class="li"> <a href="/mailinglist" class="wikilink1" title="mailinglist" data-wiki-id="mailinglist">Development mailinglist</a></div> </li> </ul> <hr /> <p> Follow us on <a href="https://phpc.social/@dokuwiki" class="urlextern" title="https://phpc.social/@dokuwiki">Mastodon</a> and other <a href="/social" class="wikilink1" title="social" data-wiki-id="social">social networks</a>. </p> <p> <a href="/privacy" class="wikilink1" title="privacy" data-wiki-id="privacy">Our Privacy Policy</a> </p> </div></div> </div></nav><!-- /aside --> <!-- ********** CONTENT ********** --> <main id="dokuwiki__content"><div class="pad group"> <div class="pageId"><span>plugin:translation</span></div> <div class="page group"> <!-- wikipage start --> <!-- TOC START --> <div id="dw__toc" class="dw__toc"> <h3 class="toggle">Table of Contents</h3> <div> <ul class="toc"> <li class="level1"><div class="li"><a href="#translation_plugin">Translation Plugin</a></div> <ul class="toc"> <li class="level2"><div class="li"><a href="#download">Download</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#changes">Changes</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#installation">Installation</a></div></li> <li class="level2"><div class="li"><a href="#configuration">Configuration</a></div></li> <li class="level2"><div class="li"><a href="#usage">Usage</a></div></li> <li class="level2"><div class="li"><a href="#on_using_country_flags">On using country flags</a></div></li> <li class="level2"><div class="li"><a href="#namespace_template_variables">Namespace template variables</a></div></li> </ul></li> </ul> </div> </div> <!-- TOC END --> <h1 class="sectionedit1" id="translation_plugin">Translation Plugin</h1> <div class="level1"> <div class="pluginrepo_entry"><div class="usageInfo"><div class="compatibility"><p class="label">Compatible with DokuWiki</p><div class="versions"><ul><li class="">2024-02-06 "Kaos" <strong><span>unknown</span></strong></li><li class="">2023-04-04 "Jack Jackrum" <strong><span>unknown</span></strong></li><li class="">2022-07-31 "Igor" <strong><span>unknown</span></strong></li><li class="yes">2020-07-29 "Hogfather" <strong><span>yes</span></strong></li></ul></div></div><ul class="actions"><li><a class="download" href="https://github.com/splitbrain/dokuwiki-plugin-translation/zipball/master">Download</a></li><li><a class="bugs" href="https://github.com/splitbrain/dokuwiki-plugin-translation/issues">Report bugs</a></li><li><a class="donate" href="http://donate.dokuwiki.org/Translation">Donate</a></li></ul><div class="clearer"></div></div><div class="mainInfo"><p class="description"><a class="media" href="/plugins"><img alt="plugin" class="medialeft" src="/lib/plugins/pluginrepo/images/dwplugin.png" width="60" height="60" /></a> Help with translation efforts in a multilingual wiki</p></div><div class="metaInfo"><dl><dt>Last updated on</dt><dd>2024-04-30</dd><dt>Provides</dt><dd><a href="/plugins?plugintype=1#extension__table" class="wikilink1" title="List all Syntax plugins">Syntax</a>, <a href="/plugins?plugintype=4#extension__table" class="wikilink1" title="List all Action plugins">Action</a></dd><dt>Repository</dt><dd><a class="urlextern" href="https://github.com/splitbrain/dokuwiki-plugin-translation/">Source</a></dd><dt>Conflicts with</dt><dd><a href="/plugin:autotranslation" class="wikilink1" title="plugin:autotranslation" data-wiki-id="plugin:autotranslation">autotranslation</a>, <a href="/plugin:multilingual" class="wikilink1" title="plugin:multilingual" data-wiki-id="plugin:multilingual">multilingual</a>, <a href="/plugin:translation3" class="wikilink1" title="plugin:translation3" data-wiki-id="plugin:translation3">translation3</a></dd></dl></div><div class="moreInfo"><p class="similar">Similar to <a href="/plugin:autotranslation" class="wikilink1" title="plugin:autotranslation" data-wiki-id="plugin:autotranslation">autotranslation</a>, <a href="/plugin:multilingual" class="wikilink1" title="plugin:multilingual" data-wiki-id="plugin:multilingual">multilingual</a>, <a href="/plugin:nsrelation" class="wikilink1" title="plugin:nsrelation" data-wiki-id="plugin:nsrelation">nsrelation</a>, <a href="/plugin:translate" class="wikilink1" title="plugin:translate" data-wiki-id="plugin:translate">translate</a>, <a href="/plugin:translation2" class="wikilink1" title="plugin:translation2" data-wiki-id="plugin:translation2">translation2</a>, <a href="/plugin:translation3" class="wikilink1" title="plugin:translation3" data-wiki-id="plugin:translation3">translation3</a>, <a href="/plugin:uilanguage" class="wikilink1" title="plugin:uilanguage" data-wiki-id="plugin:uilanguage">uilanguage</a>, <a href="/plugin:versionswitch" class="wikilink1" title="plugin:versionswitch" data-wiki-id="plugin:versionswitch">versionswitch</a></p><p class="tags">Tagged with <a href="/plugins?plugintag=language#extension__table" class="wikilink1" title="List all plugins with this tag">language</a>, <a href="/plugins?plugintag=translation#extension__table" class="wikilink1" title="List all plugins with this tag">translation</a></p><p class="needed">Needed for <a href="/plugin:datagraph" class="wikilink1" title="plugin:datagraph" data-wiki-id="plugin:datagraph">datagraph</a>, <a href="/plugin:deeplautotranslate" class="wikilink1" title="plugin:deeplautotranslate" data-wiki-id="plugin:deeplautotranslate">deeplautotranslate</a>, <a href="/plugin:localization" class="wikilink1" title="plugin:localization" data-wiki-id="plugin:localization">localization</a>, <a href="/plugin:whennotfound" class="wikilink1" title="plugin:whennotfound" data-wiki-id="plugin:whennotfound">whennotfound</a></p></div><div class="authorInfo"><strong>By <a href="mailto:andi%20%5Bat%5D%20splitbrain%20%5Bdot%5D%20org" class="mail" title="andi [at] splitbrain [dot] org">Andreas Gohr</a></strong><ul><li><a href="/plugin:badbehaviour" class="wikilink1" title="plugin:badbehaviour" data-wiki-id="plugin:badbehaviour">badbehaviour</a></li> <li><a href="/plugin:amazon" class="wikilink1" title="plugin:amazon" data-wiki-id="plugin:amazon">amazon</a></li> <li><a href="/plugin:xfortune" class="wikilink1" title="plugin:xfortune" data-wiki-id="plugin:xfortune">xfortune</a></li> <li><a href="/plugin:statistics" class="wikilink1" title="plugin:statistics" data-wiki-id="plugin:statistics">statistics</a></li> <li><a href="/plugin:captcha" class="wikilink1" title="plugin:captcha" data-wiki-id="plugin:captcha">captcha</a></li> <li><a href="/plugin:graphviz" class="wikilink1" title="plugin:graphviz" data-wiki-id="plugin:graphviz">graphviz</a></li> <li><a href="/plugin:acl" class="wikilink1" title="plugin:acl" data-wiki-id="plugin:acl">acl</a></li> <li><a href="/plugin:info" class="wikilink1" title="plugin:info" data-wiki-id="plugin:info">info</a></li> <li><a href="/plugin:ditaa" class="wikilink1" title="plugin:ditaa" data-wiki-id="plugin:ditaa">ditaa</a></li> <li><a href="/plugin:readability" class="wikilink1" title="plugin:readability" data-wiki-id="plugin:readability">readability</a></li> <li>and 60 more</li></ul></div></div> <p> This plugin shows a list of available translations for a page. It is very simple and was built with the needs of <a href="/dokuwiki" class="wikilink1" title="dokuwiki" data-wiki-id="dokuwiki">www.dokuwiki.org</a> in mind and is used for documentation translation efforts here. There are a few limitations: </p> <ul> <li class="level1"><div class="li"> separate namespaces are used to store translations</div> </li> <li class="level1"><div class="li"> translated pages need to have the same <a href="/pagename" class="wikilink1" title="pagename" data-wiki-id="pagename">pagename</a> as the main language page</div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_1"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Translation Plugin] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="translation_plugin" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1-1053" /><button type="submit" title="Translation Plugin">Edit</button></div></form></div> <h2 class="sectionedit2" id="download">Download</h2> <div class="level2"> <p> Search and install the plugin using the <a href="/plugin:extension" class="wikilink1" title="plugin:extension" data-wiki-id="plugin:extension">Extension Manager</a>. Refer to <a href="/plugins" class="wikilink1" title="plugins" data-wiki-id="plugins">Plugins</a> on how to install plugins manually. </p> </div> <div class="secedit editbutton_section editbutton_2"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Download] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="download" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1054-1213" /><button type="submit" title="Download">Edit</button></div></form></div> <h3 class="sectionedit3" id="changes">Changes</h3> <div class="level3"> <ul class="rss"><li><div class="li"><a href="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/b6f39545557016c30ff2147fec6aa1f528a79230" class="urlextern" title="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/b6f39545557016c30ff2147fec6aa1f528a79230">Version upped</a> (2024-05-01 23:50)</div></li><li><div class="li"><a href="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/8c627add6d1aeca578a3f73e36724869ad8059ea" class="urlextern" title="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/8c627add6d1aeca578a3f73e36724869ad8059ea">Merge pull request #308 from Zweihorn/patch-1</a> (2024-05-01 17:43)</div></li><li><div class="li"><a href="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/69f377eb672f38e65588d875c970760a67ed53a9" class="urlextern" title="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/69f377eb672f38e65588d875c970760a67ed53a9">Update plugin.info.txt</a> (2024-04-30 21:53)</div></li><li><div class="li"><a href="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/45995cd2f5b04cac4bd513b5d2ae355f375d1730" class="urlextern" title="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/45995cd2f5b04cac4bd513b5d2ae355f375d1730">Merge pull request #305 from dokuwiki-translate/lang_update_792_17058…</a> (2024-01-22 09:00)</div></li><li><div class="li"><a href="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/8f13eeecd4a6621b8018c143fda3ad0a320ab60d" class="urlextern" title="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/8f13eeecd4a6621b8018c143fda3ad0a320ab60d">translation update</a> (2024-01-22 03:40)</div></li><li><div class="li"><a href="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/bbd01808b49f66d34037d982353cc078a37423f5" class="urlextern" title="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/bbd01808b49f66d34037d982353cc078a37423f5">Version upped</a> (2023-12-14 23:50)</div></li><li><div class="li"><a href="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/7a54bfc9d327553ce74f5abb745b3478906bfe54" class="urlextern" title="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/7a54bfc9d327553ce74f5abb745b3478906bfe54">code style fixes, removed deprecated method</a> (2023-12-14 10:08)</div></li><li><div class="li"><a href="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/5a78e2c6e329e872f701fad9aaac479790b0284c" class="urlextern" title="https://github.com/splitbrain/dokuwiki-plugin-translation/commit/5a78e2c6e329e872f701fad9aaac479790b0284c">Merge pull request #294 from crazycatdevs/master</a> (2023-12-14 09:44)</div></li></ul> </div> <div class="secedit editbutton_section editbutton_3"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Changes] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="changes" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1214-1324" /><button type="submit" title="Changes">Edit</button></div></form></div> <h2 class="sectionedit4" id="installation">Installation</h2> <div class="level2"> <ol> <li class="level1"><div class="li"> Search and install the plugin using the <a href="/plugin:extension" class="wikilink1" title="plugin:extension" data-wiki-id="plugin:extension">Extension</a> Manager.</div> </li> <li class="level1"><div class="li"> Configure it through the <a href="/plugin:config" class="wikilink1" title="plugin:config" data-wiki-id="plugin:config">Config Manager</a></div> </li> <li class="level1"><div class="li"> Add the following code in your template's <code>main.php</code> in the directory <code>lib/tpl/<yourTemplate>/</code> (or put it in a <code>lib/tpl/default/pageheader.html</code> file for the old default template)</div> </li> </ol> <pre class="code php"><span class="kw2"><?php</span> <span class="re0">$translation</span> <span class="sy0">=</span> plugin_load<span class="br0">(</span><span class="st_h">'helper'</span><span class="sy0">,</span><span class="st_h">'translation'</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">(</span><span class="re0">$translation</span><span class="br0">)</span> <span class="kw1">echo</span> <span class="re0">$translation</span><span class="sy0">-></span><span class="me1">showTranslations</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="sy1">?></span></pre> <p> <em>Suggestion:</em> Add this code to <code>main.php</code> where the visual element will look best in your theme. You might need to experiment a bit to find the best spot. </p> <p> If you have several themes or skins installed you need to add this piece of code into each <code>main.php</code> to allow the translation-plugin for every skin. </p> <p> <em>Suggestion 2:</em> For the “dokuwiki”-template you can create <code>sidebarheader.html</code> within <code>lib/tpl/dokuwiki</code> with the code above. Then it looks like the “DokuWiki.org” Homepage and you need not redo this after a dokuwiki update. </p> </div> <div class="secedit editbutton_section editbutton_4"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Installation] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="installation" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1325-2363" /><button type="submit" title="Installation">Edit</button></div></form></div> <h2 class="sectionedit5" id="configuration">Configuration</h2> <div class="level2"> <p> First, there are two ways how to set up a multilingual wiki: </p> <ol> <li class="level1"><div class="li"> a default language in the root namespace and translations in sub namespaces</div> </li> <li class="level1"><div class="li"> no pages in the top namespace and all languages in sub namespaces</div> </li> </ol> <p> Here at dokuwiki.org the first method is used. Certain features <abbr title="On the other hand">OTOH</abbr> will only work with the second method. </p> <p> There are several config options, all accessible through the config manager. </p> <p> The most important thing to configure is a list of languages you want to use in the <code>translations</code> setting. It is good practice to use <a href="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO language codes</a> for this. Your translation namespaces will be named like the options you set here. Separate each language with a comma or space. Depending on the type of setup you want to add your default language (the one configured in <a href="/config:lang" class="wikilink1" title="config:lang" data-wiki-id="config:lang">lang</a>) here or omit it. </p> <ol> <li class="level1"><div class="li"> for the default language in the top namespace, omit it from the config</div> </li> <li class="level1"><div class="li"> for namespaces for all languages add it here as well</div> </li> </ol> <p> By default a list of translation links is shown. This can take quite a bit space when you have many translations. Enabling the <code>dropdown</code> option should help here. </p> <p> If you want to restrict translations to one certain namespace you can define it in the <code>translationns</code> option. This is optional, leaving it empty will enable the plugin for the whole wiki. </p> <p> Similar to the above setting you can also disable translations for certain pages or namespaces using the <code>skiptrans</code> setting. It expects a regular expression to be matched against pagenames. When it matches, the translation switcher will not be displayed. The regexp is applied to the full pagename which starts with colon. </p> <p> If you want to switch on the translation flag only for specific namespaces, you can do this by defining a regular expression that inverts the result, for example<br/> <code>^((?!:redaktionssystem:techn_doku|:technik:verkaufsunterlagen|:en).)*$</code>.<br/> Then only in the namespaces “redaktionssystem:techn_doku”, “technik:verkaufsunterlagen” and “en” the translation plugin is active. </p> <p> You can optionally choose to let the plugin translate the whole user interface of DokuWiki too when a non-default language page is selected. Just enable the <code>translateui</code> option accordingly. </p> <p> If you decided to go with a type 2 setup, then your root namespace is pretty useless. Enabling the <code>redirectstart</code> setting will redirect users to the start of a translation namespace based on their browser language. This option only works when the above <code>translateui</code> setting is enabled, too. </p> <p> When you have a default language that gets translated to other languages, it might be helpful to warn visitors on outdated translations. Enabling the <code>checkage</code> option will do that by comparing the age of the translation page with the one of the original (default language) page. It also tries to find the last revision of the original page that was edited before the translation and links to a <a href="/plugin:diff" class="wikilink1" title="plugin:diff" data-wiki-id="plugin:diff">diff view</a>. </p> <p> Finally you might want to explain how the translations work on your wiki to your users. To make this description easily accessible from the language selector, enter the <a href="/pagename" class="wikilink1" title="pagename" data-wiki-id="pagename">pagename</a> of your description in the <code>about</code> configuration setting. IF you enable the <code>localabout</code> setting, this description page can be translated as any other page and the link will always go to the currently active translation. </p> <p> Additionally a few options can be selected to influence how the translation selector should look like. This is done through the <code>display</code> option where you can choose from the following settings: </p> <div class="table sectionedit6"><table class="inline"> <thead> <tr class="row0"> <th class="col0 leftalign"> Setting </th><th class="col1"> Description </th> </tr> </thead> <tr class="row1"> <td class="col0"> <code>langcode</code> </td><td class="col1"> The ISO language code (eg. <code>de</code>) </td> </tr> <tr class="row2"> <td class="col0 leftalign"> <code>name</code> </td><td class="col1"> The real (localized) name of the language (eg. <code>Deutsch</code>) </td> </tr> <tr class="row3"> <td class="col0 leftalign"> <code>title</code> </td><td class="col1"> Show the “Translations of this page” intro text </td> </tr> <tr class="row4"> <td class="col0"> <code>twolines</code> </td><td class="col1"> Enabling this will add a linebreak after the title </td> </tr> <tr class="row5"> <td class="col0 leftalign"> <code>flag</code> </td><td class="col1"> Display a country flag matching the language (see below for more info) </td> </tr> </table></div> <div class="secedit editbutton_table editbutton_6"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Table] " /><input type="hidden" name="target" value="table" /><input type="hidden" name="hid" value="table" /><input type="hidden" name="range" value="5943-6333" /><button type="submit" title="Table">Edit</button></div></form></div> </div> <h4 id="manual_configuration">Manual configuration</h4> <div class="level4"> <p> If you don't use the <a href="/plugin:config" class="wikilink1" title="plugin:config" data-wiki-id="plugin:config">Config Manager</a> and prefer configuring your wiki editing the config file, the useful lines which have to be added to your <code>local.php</code> configuration file are: </p> <pre class="code php"><span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translations'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="st_h">'en,fr,de,it'</span><span class="sy0">;</span> <span class="co1">// available languages</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'dropdown'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="co1">// use a dropdown</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translationns'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="st_h">'wiki'</span><span class="sy0">;</span> <span class="co1">// namespace where to activate translation</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'skiptrans'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="st_h">'^:(plugin|template):'</span><span class="sy0">;</span> <span class="co1">// what to skip (regexp)</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translateui'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="co1">// translate the wiki user interface too</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'checkage'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="co1">// show notice on outdated translations</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'about'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="st_h">'translation:about'</span><span class="sy0">;</span> <span class="co1">// page describing the translation process to users</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'localabout'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'plugin'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'translation'</span><span class="br0">]</span><span class="br0">[</span><span class="st_h">'display'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="st_h">'langcode,name'</span><span class="sy0">;</span></pre> </div> <div class="secedit editbutton_section editbutton_5"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Configuration] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="configuration" /><input type="hidden" name="codeblockOffset" value="1" /><input type="hidden" name="range" value="2364-7561" /><button type="submit" title="Configuration">Edit</button></div></form></div> <h2 class="sectionedit7" id="usage">Usage</h2> <div class="level2"> <p> The plugin does its work automatically by being called from the template (see <a href="#installation" title="plugin:translation ↵" class="wikilink1">installation</a>), but you can disable it for a certain page by adding the following code to the page: </p> <pre class="code">~~NOTRANS~~</pre> </div> <div class="secedit editbutton_section editbutton_7"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Usage] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="usage" /><input type="hidden" name="codeblockOffset" value="2" /><input type="hidden" name="range" value="7562-7791" /><button type="submit" title="Usage">Edit</button></div></form></div> <h2 class="sectionedit8" id="on_using_country_flags">On using country flags</h2> <div class="level2"> <p> Usability experts agree that using country flags to represent a language is a really bad idea and should be avoided at all costs. This is because languages do not correspond to single countries. </p> <p> Simple example: what flag should represent English? The flag of England (red cross on white), the Union Flag (aka “Union Jack”) for the UK or the flag of the United states (Stars and stripes)? Or what language would you expect when you see the Swiss flag? French? German? Rheto-Romanic? </p> <p> I added support for flags because of the high demand for it but I strongly advise against using it. If you do, remember that your choice of flags will most probably annoy one group of your users, regardless what you chose. </p> <p> New flags can be placed in SVG format in the <code>flags</code> directory of the plugin and need to be named after the language ISO code. </p> </div> <div class="secedit editbutton_section editbutton_8"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[On using country flags] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="on_using_country_flags" /><input type="hidden" name="codeblockOffset" value="3" /><input type="hidden" name="range" value="7792-8666" /><button type="submit" title="On using country flags">Edit</button></div></form></div> <h2 class="sectionedit9" id="namespace_template_variables">Namespace template variables</h2> <div class="level2"> <p> The translation plugin adds variables usable in <a href="/namespace_templates" class="wikilink1" title="namespace_templates" data-wiki-id="namespace_templates">Namespace Templates</a>. </p> <div class="table sectionedit10"><table class="inline"> <thead> <tr class="row0"> <th class="col0"> Variable </th><th class="col1"> Description </th><th class="col2"> Example </th> </tr> </thead> <tr class="row1"> <td class="col0"> @LANG@ </td><td class="col1"> Language you have entered in your <a href="/config:lang" class="wikilink1" title="config:lang" data-wiki-id="config:lang">lang config</a> </td><td class="col2"> en </td> </tr> <tr class="row2"> <td class="col0"> @TRANS@ </td><td class="col1"> The currently used language. This variable will be empty, if your default language has no sub namespace. </td><td class="col2"> en:start → en, start → <blank> </td> </tr> </table></div> <div class="secedit editbutton_table editbutton_10"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Table] " /><input type="hidden" name="target" value="table" /><input type="hidden" name="hid" value="table1" /><input type="hidden" name="range" value="8803-9073" /><button type="submit" title="Table">Edit</button></div></form></div> </div> <div class="secedit editbutton_section editbutton_9"><form class="button btn_secedit" method="post" action="/plugin:translation"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1714600248" /><input type="hidden" name="summary" value="[Namespace template variables] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="namespace_template_variables" /><input type="hidden" name="codeblockOffset" value="3" /><input type="hidden" name="range" value="8667-" /><button type="submit" title="Namespace template variables">Edit</button></div></form></div> <!-- wikipage stop --> </div> <div class="docInfo"><bdi>plugin/translation.txt</bdi> · Last modified: <time datetime="2024-05-01T23:50:48+0200">2024-05-01 23:50</time> by <bdi>andi</bdi></div> <hr class="a11y" /> </div></main><!-- /content --> <!-- PAGE ACTIONS --> <nav id="dokuwiki__pagetools" aria-labelledby="dokuwiki__pagetools__heading"> <h3 class="a11y" id="dokuwiki__pagetools__heading">Page Tools</h3> <div class="tools"> <ul> <li class="edit"><a href="/plugin:translation?do=edit" title="Edit this page [e]" rel="nofollow" accesskey="e"><span>Edit this page</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg></a></li><li class="revs"><a href="/plugin:translation?do=revisions" title="Old revisions [o]" rel="nofollow" accesskey="o"><span>Old revisions</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg></a></li><li class="backlink"><a href="/plugin:translation?do=backlink" title="Backlinks" rel="nofollow"><span>Backlinks</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"/></svg></a></li><li class="top"><a href="#dokuwiki__top" title="Back to top [t]" rel="nofollow" accesskey="t"><span>Back to top</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg></a></li> </ul> </div> </nav> </div><!-- /wrapper --> <!-- ********** FOOTER ********** --> <footer id="dokuwiki__footer"><div class="pad"> <div class="license">Except where otherwise noted, content on this wiki is licensed under the following license: <bdi><a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license" class="urlextern">CC Attribution-Share Alike 4.0 International</a></bdi></div> <div class="buttons"> <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license"><img src="/lib/images/license/button/cc-by-sa.png" alt="CC Attribution-Share Alike 4.0 International" /></a> <a href="https://www.dokuwiki.org/donate" title="Donate" ><img src="/lib/tpl/dokuwiki/images/button-donate.gif" width="80" height="15" alt="Donate" /></a> <a href="https://php.net" title="Powered by PHP" ><img src="/lib/tpl/dokuwiki/images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a> <a href="//validator.w3.org/check/referer" title="Valid HTML5" ><img src="/lib/tpl/dokuwiki/images/button-html5.png" width="80" height="15" alt="Valid HTML5" /></a> <a href="//jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" ><img src="/lib/tpl/dokuwiki/images/button-css.png" width="80" height="15" alt="Valid CSS" /></a> <a href="https://dokuwiki.org/" title="Driven by DokuWiki" ><img src="/lib/tpl/dokuwiki/images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a> </div> <div style="margin-top: 2em; font-size:90%" class="dokuwiki"><div style="float:right"><a href="http://www.splitbrain.org/personal#imprint" style="float:right; text-decoration: none; color:#333">Imprint</a></div></div><!-- Include for DokuWiki site wide top bar --> <style type="text/css"> @media screen { body { padding-top: 30px; } #global__header { position: absolute; top: 0; left: 0; text-align: left; vertical-align: middle; line-height: 1.5; background-color: #333; box-shadow: 0 0 8px rgba(0,0,0,0.5); width: 100%; margin: 0; padding: 5px 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; white-space: nowrap; overflow: hidden; } #global__header h2 { position: absolute; left: -99999em; top: 0; overflow: hidden; display: inline; } #global__header ul, #global__header li { margin: 0; padding: 0; list-style: none; display: inline; line-height: 1.5; } #global__header a { color: #bbb; text-decoration: none; margin-right: 20px; font-size: 14px; font-weight: normal; } #global__header a:hover, #global__header a:active, #global__header a:focus { color: #fff; text-decoration: underline; } #global__header form { float: right; margin: 0 0 0 20px; } #global__header input { background-color: #333; background-image: none; border: 1px solid #bbb; color: #fff; box-shadow: none; border-radius: 2px; margin: 0; line-height: normal; padding: 1px 0 1px 0; height: auto; } #global__header input.button { border: none; color: #bbb; } #global__header input.button:hover, #global__header input.button:active, #global__header input.button:focus { color: #fff; text-decoration: underline; } } /* /@media */ @media only screen and (min-width: 601px) { /* changes specific for www.dokuwiki.org */ #dokuwiki__header { padding-top: 3em; } #dokuwiki__usertools { top: 3em; } /* changes specific for bugs.dokuwiki.org */ div#container div#showtask { top: 40px; } } /* /@media */ @media only screen and (max-width: 600px) { body { padding-top: 0; } #global__header { position: static; white-space: normal; overflow: auto; } #global__header form { float: none; display: block; margin: 0 0 .4em; } } /* /@media */ @media print { #global__header { display: none; } } /* /@media */ </style> <div id="global__header"> <h2>Global DokuWiki Links</h2> <form method="get" action="https://search.dokuwiki.org/" target="_top"> <input type="text" name="q" title="Search all DokuWiki sites at once" class="input" /> <input type="submit" title="Search all DokuWiki sites at once" value="Search" class="button" /> </form> <ul> <li><a href="https://download.dokuwiki.org" title="Download the latest release" target="_top">Download</a></li> <li><a href="https://www.dokuwiki.org" title="Read the DokuWiki documentation" target="_top">Wiki</a></li> <li><a href="https://forum.dokuwiki.org" title="Ask questions in the DokuWiki forum" target="_top">Forum</a></li> <li><a href="https://irc.dokuwiki.org" title="Check IRC chat logs or join the chat" target="_top">IRC</a></li> <li><a href="https://github.com/splitbrain/dokuwiki/issues" title="Report and track bugs" target="_top">Bugs</a></li> <li><a href="https://translate.dokuwiki.org/" title="Help translating the DokuWiki interface" target="_top">Translate</a></li> <li><a href="https://github.com/splitbrain/dokuwiki" title="Access the most recent git commits" target="_top">Git</a></li> <li><a href="https://xref.dokuwiki.org/reference/dokuwiki/" title="Cross-Reference of the DokuWiki source code" target="_top">XRef</a></li> <li><a href="https://codesearch.dokuwiki.org/" title="Search through the sources of DokuWiki, plugins and templates" target="_top">Code Search</a></li> </ul> </div> <!-- end of DokuWiki top bar include --> </div></footer><!-- /footer --> </div></div><!-- /site --> <div class="no"><img src="/lib/exe/taskrunner.php?id=plugin%3Atranslation&1732767244" width="2" height="1" alt="" /></div> <div id="screen__mode" class="no"></div></body> </html>