je viens de trouver ma solution a la différence du plugin translation que jai réussi à faire fonctionner que sur le template original (défault)
voici un bout de code qui fonctionne plutôt bien
le mettre en plugin serait intéressant...
voici le code a placer dans local.php
<?php
/* Multilanguage Support
* Paste these lines at the end of your local.php and have a look if it works!
* DokuWiki shall detect your user agents favorite language and switch interface language depending on leading namespace
* Your (international) start page will still be 'start' by default, unless you create a page like en:start or de:start
*/
// Configuration
//allowed languages (leave this array blank or comment out for auto-detection)
$conf['lang_default'] = 'en';
$conf['lang_enabled'] = array('en', 'de');
// Autodetect all languages your dokuwiki installation supports
$supportedLanguages = glob(DOKU_INC . 'inc/lang/*', GLOB_ONLYDIR);
foreach ($supportedLanguages as $idx=>$lang) $supportedLanguages[$idx] = basename($lang);
if (!isset($conf['lang_enabled']) || count($conf['lang_enabled'])==0) $conf['lang_enabled'] = $supportedLanguages;
if (!in_array($conf['lang_default'], $conf['lang_enabled'])) $conf['lang_default'] = reset($conf['lang_enabled']); // make sure, default lang is valid
// Set default language to the user agent's most favorite one
$languages = split(',', preg_replace('/(;q=\d+.\d+)/i', '', getenv('HTTP_ACCEPT_LANGUAGE')));
foreach ($languages as $lang) if (in_array($lang, $conf['lang_enabled'])) {
$conf['lang'] = $lang;
break;
}
// Check, if language is set by namespace and overwrite chosen language
$lang = preg_replace('/^(..+?)[:\/].*/i','$1',$_REQUEST['id']);
if (!in_array($lang, $conf['lang_enabled'])) $lang = preg_replace('/^(..+?)[:\/].*/i','$1',$_REQUEST['ns']);
if (in_array($lang, $conf['lang_enabled'])) $conf['lang'] = $lang;
// prepend default start page with language namespace, if this page already exists.
// if (file_exists($conf['savedir'].'/pages/'.str_replace(':','/',$conf['lang'].':'.$conf['start']).'.txt')) $conf['start'] = $conf['lang'].':'.$conf['start'];
function tpl_youarehere2() {
global $conf;
ob_start();
tpl_youarehere();
$data = ob_get_contents();
ob_end_clean();
$data = str_replace('href="' . DOKU_BASE . $conf['lang_default'] . '/', 'href="' . DOKU_BASE, $data);
$data = str_replace('title="' . $conf['lang_default'] . ':', 'title="', $data);
$prefixpos = strpos($data, '>'.$conf['lang'].'</a>');
if ($prefixpos !== false) {
// find start of anchor (strrpos() only works for single characters, not strings)
$prefixstart = -1;
do {
$prefixstart = strpos($data, '<a ', $prefixstart+1);
$prefixpre = strpos($data, '<a ', $prefixstart+1);
} while ($prefixpre !== false && $prefixpre<$prefixpos);
// find start of next anchor
$prefixend = strpos($data, '<a ', $prefixpos);
if ($prefixstart > 0 && $prefixend > 0) $data = substr($data, 0, $prefixstart) . substr($data, $prefixend);
}
echo $data;
}
function tpl_flagimg($lang) {
// translate language-code to country-code (where the lang is mostly spoken/written)
switch ($lang) {
case 'da': $lang = 'dk'; break; // Danish -> Denmark
case 'el': $lang = 'gr'; break; // Greek -> Greece
case 'en': $lang = 'en-all'; break; // English -> combined GB/US flag
case 'he': $lang = 'il'; break; // Hebrew -> Israel
case 'ja': $lang = 'jp'; break; // Japanese -> Japan
case 'ko': $lang = 'kr'; break; // Korean -> Korea
case 'ku': $lang = 'iq'; break; // Kurdish -> Iraq
case 'pt-br': $lang = 'br'; break; // Braz. Portuguese -> Brazil
case 'uk': $lang = 'ua'; break; // Ukrainian -> Ukraine
case 'zh': $lang = 'cn'; break; // Simpl. Chinese -> China
case 'zh-tw': $lang = 'tw'; break; // Trad. Chinese -> Taiwan
default: break;
}
$img = DOKU_BASE . 'lib/images/flags/' . $lang . '.gif';
return $img;
}
// assumes Flag icons (.gif) from http://www.famfamfam.com/lab/icons/flags/ in /lib/images/flags (rename us.gif or gb.gif to en-all.gif)
function tpl_langswitcher() {
global $ID, $conf;
echo PHP_EOL . '<div id="langswitcher" class="no">';
echo '<style type="text/css">#langswitcher LI.lang:hover { border: 1px solid #8cacbb; background-color: white; } #langswitcher LI.lang IMG { opacity: 0.3; } #langswitcher LI.lang:hover IMG { opacity: 1; }</style>';
echo '<ul style="list-style: none; display: inline;">';
foreach ($conf['lang_enabled'] as $lang) {
$thislang = ($conf['lang']==$lang);
$newID = (($lang!=$conf['lang_default'])?$lang.':':'') . (($ID{2}==':')?substr($ID, 3):$ID);
// TODO: check existance of file
$img = '<img src="' . tpl_flagimg($lang) . '" alt="' . hsc($lang) . '" title="' . hsc($lang) . '" />';
echo '<li style="display: inline; padding: 2px;"' . ((!$thislang)?' class="lang"':'') . '>';
if (!$thislang) tpl_link(wl($newID), $img); else echo $img;
echo '</li>';
}
echo '</ul>';
echo '</div>' . PHP_EOL;
}
?>
[/color]
puis mettre dans main.php
<?php tpl_langswitcher()?>
[/color]
là ou vous voulez voir les drapeaux
remplacé également dans main.php
ce code
tpl_youarehere()
[/color]
par celui ci
tpl_youarehere2()
[/color]
il faut également telecharger les drapeaux
voir
<<ici>> et les placer dans le fichier /lib/images/flags/
renommer le drapeau us.gif ou gb.gif à en-all.gif
modifié a volonté vos drapeaux
sur les variables
[color=orange]$conf['lang_default'] = 'en';
$conf['lang_enabled'] = array('en', 'de');[/color]
merci a tous ceux qui ont écrit
=multilanguage&s[]=template]<<ici>>