Wikini

AureLie

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-98-84-18-52.compute-1.amazonaws.com
Je me lance et délaisse momentanément Spip pour bosser sur le Wiki de Quilombo!. Ce site ne vous dira rien pour l'instant (mars 2004) mais va peut-être prendre son envol. Le but est d'organiser une rencontre de groupes néerlandophones et francophones (ben ouais, en Belgique) autour du thème de la colonisation (si ça vous intéresse, il y aura au moins un texte en ligne dans les jours qui viennent).... Alors pourquoi un Wiki français me direz-vous? L'anglais serait plus pratique pour tout le monde. Eh bien parce que vous avez bonne mine, et que j'ai hâte de me replonger dans le php (Spip m'a réduite à l'html ;-)


(Bon. Après lecture et mûre (tu parles!) réflexion, je suis passée à WackoWiki... En fait, "ils" ont fait tout ce que je pensais faire, c'est-à-dire, réunir toutes les chaînes de texte inscrites "en dur" dans les fichiers Wiki dans un fichier de langue qu'il ne reste plus qu'à traduire dans la langue voulue. Les fichiers en français ne sont pas encore disponibles sur leur site alors je me suis attelée à la tâche, en me basant bien sûr sur WikiNi. Ce qui m'a décidée, c'est que quelqu'un s'est déjà tapé le flamand, langue que je ne pratique pas! Vous pourrez retrouver ces fichiers ici incessament sous peu.)

Bon, après être passée par Wacko, je reviens à WikiNi... Le problème est qu'ils ont intégré beaucoup de fonctionnalités dont je n'ai pas besoin, le code est bordélique et le passage en lettres cyrilliques pose ensuite des problèmes pour l'affichage des caractères accentués en français.

Donc, j'en reviens à mon idée initiale: remplacement du texte "en dur" par des variables et fichiers de langues comportant la traduction.


Discussions






Modifications des fichiers de WikiNi en détail:


(Extraits du fichier français):
<?php
$wikiText 
= array(
    
"vous_etes" => "Vous &ecirc;tes ",
    
"deconnexion" => "D&eacute;connexion",
    
"DerniersChangements" => "DerniersChangements",
    
"DerniersCommentaires" => "DerniersCommentaires",
    
"navigation_links" => "DerniersChangements :: DerniersCommentaires",
    
"editer_titre" => "Cliquez pour &eacute;diter cette page.",
    
"editer_bouton" => "&Eacute;diter cette page",
    
"modifs_titre" => "Cliquez pour voir les derni&egrave;res modifications sur cette page.",
    
"proprietaire" => "Propri&eacute;taire",
    
"vous" => "vous",
    
"permissions_titre" => "Cliquez pour &eacute;diter les permissions de cette page.",
    
"permissions_bouton" => "&Eacute;diter permissions",
    
"supprimer" => "Supprimer",
    
"proprietaire_pas" => "Pas de propri&eacute;taire",
    
"appropriation" => "Appropriation",
    
"references_titre" => "Cliquez pour voir les URLs faisant r&eacute;f&eacute;rence &agrave; cette page.",
    
"references_bouton" => "R&eacute;f&eacute;rences",
);
?>

Note: la variable navigation_links est fixée ici et plus dans wakka.config.php. Cela implique une multiplication des pages mais je joue ensuite avec les redirections: LaatsteVeranderingen? contient redirect page="DerniersChangements". Comme je traduit aussi l'Action RecentChanges?, ça ne pose pas de problème. Je n'ai pas choisi l'option proposée dans WakkaMultilingue, de démultiplier des sous-dossiers par langue dans les actions. Ces fichiers contiendraient de nouveau du texte en dur et lors de la mise à jour d'une action, il faudrait modifier les fichiers pour chaque langue, avec le risque de perdre la cohérence.


<?php
    $message 
$this->GetMessage();
    
$user $this->GetUser();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

// ici on indique au browser la langue de la page
// on pourrait aussi ajouter la balise <meta> correspondante
<html <?php echo "lang=\"$lg\""?>>

<head>
<title><?php echo $this->GetWakkaName().":".$this->GetPageTag(); ?></title>
<?php if ($this->GetMethod() != 'show')
    echo 
"<meta name=\"robots\" content=\"noindex, nofollow\"/>\n";?>

// on pourrait aussi fixer le jeu de caractère dans une variable
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

<meta name="keywords" content="<?php echo $this->GetConfigValue("meta_keywords"?>" />
<meta name="description" content="<?php echo  $this->GetConfigValue("meta_description"?>" />
<link rel="stylesheet" type="text/css" media="screen" href="wakka.basic.css" />
<style type="text/css" media="all"> @import "wakka.css";</style>
<script type="text/javascript">
function fKeyDown()    {
    if (event.keyCode == 9) {
        event.returnValue= false;
        document.selection.createRange().text = String.fromCharCode(9) } }
</script>
</head>
<body <?php echo (!$user || ($user["doubleclickedit"] == 'Y')) && ($this->GetMethod() == "show") ? "ondblclick=\"document.location='".$this->href("edit")."';\" " "" ?>
<?php 
echo $message "onLoad=\"alert('".$message."');\" " "" ?> >

<h1 class="wiki_name"><?php echo $this->config["wakka_name"?></h1>

// ici ça devient intéressant, repérez les GetText:
<h1 class="page_name">
<a href="<?php echo $this->config["base_url"].$this->GetText("RechercheTexte"); ?>&amp;phrase=<?php echo urlencode($this->GetPageTag()); ?>"><?php echo $this->GetPageTag(); ?></a>

// ici ajout du menu de langue.
//On peut améliorer avec un script de Wacko qui vérifie les fichiers présents dans /lang et génère automatiquement la liste des langues disponibles.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<?php
echo "[<a href=\"".$this->config["base_url"].$this->GetPageTag()."&amp;lang=nl\">NL</a>]&nbsp;&nbsp;";
echo 
"[<a href=\"".$this->config["base_url"].$this->GetPageTag()."&amp;lang=fr\">FR</a>]&nbsp;&nbsp;";
echo 
"[<a href=\"".$this->config["base_url"].$this->GetPageTag()."&amp;lang=en\">EN</a>]&nbsp;&nbsp;";
?>
</h1>

// ici on a remplacé $this->config["navigation_links"] par $this->GetText("navigation_links") (voir plus haut)
<div class="header">
<?php echo $this->ComposeLinkToPage($this->config["root_page"]); ?> ::
<?php echo  $this->GetText("navigation_links") ? $this->Format($this->GetText("navigation_links"))." :: \n" "" ?>
<?php 
echo $this->GetText("vous_etes"); echo $this->Format($this->GetUserName()); if ($user $this->GetUser()) echo "&nbsp;(<a href=\"".$this->config["base_url"].$this->GetText("ParametresUtilisateur")."&amp;action=logout\">".$this->GetText("deconnexion")."</a>)\n"?>
</div>


// VARIABLES
    function GetPageTag() { return $this->tag; }
    function GetPageTime() { return $this->page["time"]; }
    function GetMethod() { return $this->method; }
    function GetConfigValue($name) { return $this->config[$name]; }
    function GetWakkaName() { return $this->GetConfigValue("wakka_name"); }
    function GetWakkaVersion() { return $this->VERSION; }
    function GetWikiNiVersion() { return WIKINI_VERSION; }
// deux fonctions pour gestion des langues
    function SetResource($resource) {$this->resource=$resource;}

    function GetText($name) { return $this->resource[$name];}

// ...
// create wiki object
$wiki = new Wiki($wakkaConfig);

// début ajout langue: va chercher les fichiers de langue 

// si l'utilisateur a requis une langue via le menu (header), on fixe la variable $lg
if(!$lg=$_REQUEST["lang"]) $lg=$_SESSION["lang"];

// sinon, langue par défaut définie dans wakka.config.php
// on pourrait améliorer avec la détection de la langue du navigateur
if(!$lg) $lg = $wakkaConfig["default_lang"];

// $lg est fixée dans la session
$_SESSION["lang"]=$lg;

// va chercher le fichier de langue adéquat et l'inclut dans la page appelée
if($lg){
    $fichier_lang = "lang/wakka.".$lg.".php";
    if (file_exists($fichier_lang)) include($fichier_lang);
}

// on définit le tableau $wikiText comme une ressource
// (repris de Wacko, j'ai pas bien pigé si c'est indispensable mais ça marche)
$wiki->SetResource($wikiText);

// fin ajout langue 

function compress_output($output) { 
    return gzencode($output); 
}


Note: pour le moment, j'y ai laissé la variable navigation_links, parce que c'est utilisé par ailleurs. Je l'ai repérée dans l'ActionListpages, elle permet d'exclure d'une table des matières les liens existants dans le menu. J'y travaille...




A part ça, je suis aussi et et ici ou encore et j'ai aussi traîné dans ce coin-, sans oublier ici et ailleurs. Mais on me trouve souvent ici. Et puis j'aime bien aussi et enfin je tiens à remercier . Bon. Je dis ça c'est pour faire connaissance, pas pour monter dans les moteurs!

Signets


Autres

ActionListPages
PlanDuSite
TableDesMatieres
NavigationEntrePage

Backlinks

Pages ayant un lien vers la page courante :
ActionRedirect
AureLie
GarfieldFr
SystemeDeTraductionProprietaire1
VosSuggestions
WakkaMultilingue

Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]