Sommaire |
[modifier] MultiLanguage Manager
Par défaut un wiki MediaWiki est dans une langue unique en terme de contenu. Par contre l'utilisateur peu faire le choix d'afficher l'interface utilisateur dans la langue de son choix. Un problème se pose lorsque l'on souhaite réaliser un site dont divers contenus sont traduits dans diverses langues.
[modifier] Ce qui existe
- L'une des solutions consiste à installer autant de wiki que de langue et utiliser des liens interwiki pour faire correspondre les pages des différentes langues. Cela permet d'avoir des titres dans la langues de l'article, mais ça oblige à avoir les bons tags dans la page, la cohérence n'est pas forcément garantie, un article français peut être traduit en anglais, sans que l'article anglais indique être traduit en français. Mais surtout cela oblige à maintenir plusieurs sites, parfois pour seulement quelques pages. Si cela semble une excellente solution pour un wiki comme Wikipedia ... ce n'est sûrement pas le cas de tous.
- Il existe aussi la solution basée sur l'extension ParserFunctions . Elle est simple à mettre en oeuvre, mais pose les mêmes problèmes de cohérence, et les titres sont dans une seule langue, ce qui n'est pas très très bon pour le référencement.
- Il existe l'extension MultiLang qui permet d'afficher du texte dans la langue choisi par l'utilisateur pour l'interface du wiki. Pas vraiment ce dont nous avons besoin ici.
- L'extension MultiLangue qui fait un peu la même chose que la précédente en se basant sur la langue du navigateur. J'ai déjà testé cette idée pour un extranet, cela pose de nombreux problèmes, en particulier lorsque l'on veut laisser le choix à l'utilisateur.
[modifier] Le MultiLanguage Manager
C'est une solution relativement simple à mettre en place puisque c'est une extension (aucune modification du code du wiki, en dehors du template), elle permet de gérer plusieurs langues dans un même wiki (on garde une langue de référence), les titres sont libres, la cohérence est respectée (une article traduit en anglais est visible depuis l'article anglais) et son usage est extrêmement simple.
MultiLanguage Manager est également adaptable pour s'adapter au skin du wiki retenu, voir pouvoir s'adapter à plusieurs skins.
Cette extension nécessite PHP 5 et a été testée sur MediaWiki 1.6.10 et 1.10.0. En cas de doute, reportez vous à la section des tests unitaires pour vérifier que votre version est bien compatible.
[modifier] Utilisation
L'utilisation de cette extension est extrêmement simple, que ce soit pour l'éditeur ou le visiteur. Dans la mesure du possible l'extension ce veut naturelle et intuitive
[modifier] Edition
Pour l'éditeur, tout se passe dans le nouvel onglet d'action : "Langue". Cette action permet d'aller éditer les paramètres linguistiques de la page via un formulaire, permettant :
- De choisir la langue de la page
- D'indiquer de quel article l'article courant est la traduction
[modifier] Consultation
Pour la navigation, rien de plus simple. Dans le cas de Art122-5 un gros drapeau permet de switcher entre les deux langues supportées (anglais-français). Si plusieurs articles répondent aux critères, une popup (css) est alors affichée. De même si aucun article n'existe, un message est affiché via une popup.
[modifier] Miscellaneous
Pour les MediaWiki en version 1.8 et supérieur, lorsque l'utilisateur n'est pas connecté, on change automatiquement la langue de l'interface en fonction de la langue du contenu.
Lorsque l'utilisateur est connecté, il a le choix de la langue dans ses préférences. Il n'y a donc aucune raison de ne pas respecter ses préférences.
[modifier] Installation
L'installation se passe en trois étapes successives, nous vous conseillons très vivement de procéder à une installation sur un serveur de test avant de modifier votre serveur de production. Un backup est toujours une bonne chose avant d'apporter des modifications.
[modifier] Installation des fichiers de l'extension
Après avoir téléchargé l'archive : MultiLanguageManager_1.0.1.tgz
Décompactez là dans votre dossier extension, vous devez alors avoir l'arborescence suivante :
./images ./images/deutsch.png ./images/deutsch_icon.png ./images/english.png ./images/english_icon.png ./images/francais.png ./images/francais_icon.png ./images/Thumbs.db ./MultiLanguageManager.i18n.php ./MultiLanguageManager.php ./MultiLanguageManager_body.php ./MultiLanguageManager_controller.php ./MultiLanguageManager_setup.php ./MultiLanguageManager_template.php ./skins ./skins/Art122_5.php ./skins/Default.php ./skins/Tests.php ./tools ./tools/MultiLanguageManagerTest.php ./tools/MultiLanguageManager_createTable.php ./tools/MultiLanguageManager_SkinnTest.php
[modifier] Base de données
L'utilisation de MultiLanguage Manager demande la création de deux nouvelles tables :
CREATE TABLE wiki_page_language ( page_id int(8) NOT NULL, lang varchar(3) NOT NULL, PRIMARY KEY (page_id) ) TYPE=InnoDB; CREATE TABLE wiki_page_translation ( `source` int(8) NOT NULL, translate int(8) NOT NULL, UNIQUE KEY source_2 (`source`,translate), KEY `source` (`source`), KEY translate (translate) ) TYPE=InnoDB;
Vous pouvez les créer manuellement, mais attention à respecter la configuration de votre wiki en ce qui concerne le suffixe "wiki_" ou le type de table Mysql "TYPE=InnoDB".
Vous pouvez également utiliser le script MultiLanguageManager_createTable.php (extension/MultiLanguageManager/Tools) en le copiant à la racine de votre wiki et en le chargeant via votre navigateur. Il affichera le script SQL à utiliser et si l'utilisateur SQL du wiki peut créer des tables, vous pouvez l'utiliser pour créer les tables requises.
Attention, ne laissez pas ce script à la racine de votre Wiki ! Une fois l'extension installée vous pouvez même le supprimer de votre wiki.
[modifier] Modification de LocalSettings.php
Ajoutez à la fin de votre fichier les lignes suivantes :
require_once("$IP/extensions/MultiLanguageManager/MultiLanguageManager.php");
[modifier] Intégration dans votre template
Pour afficher la sélection de langue, vous devez modifier votre template pour ajouter le code suivant là où vous souhaiter voir apparaître la zone de sélection de langue :
<?php $languageController=new MultiLanguageManager_controller(); $myTitle=Title::newFromId($this->data['articleid']); echo $languageController->displaySelectLanguage($myTitle); ?>
Vous devez également apporter des modifications à vos fichiers CSS, cf Modification des CSS.
[modifier] Configuration
La configuration de l'extension se fait via le fichier "MultiLaguageManager_setup.php", d'autres éléments sont toutes fois configurables : CF Customisation.
[modifier] Les langues utilisables
C'est la liste des langues applicables aux contenus de ce site. Faites attention, une modification de ce paramètre vous oblige à adapter les paramètres de [#Customisation|Template]] ainsi que les traductions des expressions utilisées par cette extension : MultiLanguageManager.i18n.php
La configuration se fait via la variable $mgAvailableLanguage qui contient le code de langue et le code de son nom dans le fichier d'internationalisation.
$mgAvailableLanguage=array( 'en' => 'multilanguagemanager_en', 'fr' => 'multilanguagemanager_fr');
[modifier] Les droits de modification
Vous pouvez gérer qui a les droits de modifier les paramètres linguistiques des pages. Vous pouvez mapper ces droits sur un droit existant via la variable $mgLanguagePermisionsKey. Par exemple pour mapper les droits linguistique sur ceux de l'édition de page :
$mgLanguagePermisionsKey='edit';
Mais vous pouvez également choisir un type de droit nouveau, par exemple langage :
$mgLanguagePermisionsKey='langage';
pensez alors à rentrer les droits en fonctions des groupes :
$wgGroupPermissions['*'][$mgLanguagePermisionsKey] = false; $wgGroupPermissions['user'][$mgLanguagePermisionsKey] = true; $wgGroupPermissions['sysop'][$mgLanguagePermisionsKey] = true;
[modifier] Customisation
Le MultiLanguage Manager est fait pour s'adapter à différents skins. Les fonctions de rendus graphiques sont isolées dans le fichier MultiLanguageManager_template.php contenant la classe du même nom. Elle contient les différentes routines utilisées pour le rendu.
Toute fois vous ne devez pas la modifier. En effet le module n'utilise cette classe qu'en cas d'absence d'une classe spécifique pour votre skin.
[modifier] Création du fichier de skin
Dans le répertoire extensions/MultiLanguageManager/skins dupliquez le fichier Default.php et nommez la copie du nom de votre skin (le même nom de fichier que le .php du répertoire skins du wiki)
Par défaut cette classe ne contient que le constructeur, mais vous pouvez surcharger toutes les méthodes de votre choix. Un exemple est donné avec le fichier Art122-5.php modifiant le rendu de la popup pour correspondre au style du wiki.
[modifier] Modification des CSS
Vous avez également la possibilité de personnaliser les CSS. Le nom des différentes classes utilisées est paramétrable en surchargeant les variables $class_ de la classe MultiLanguageManager_template
- class_icon = languageimage :Le style des icons (petit drapeau)
- class_image = languageimage :Le style des grands drapeau
- class_popup = popup : Le style du span contenant le texte visible déclenchant l'ouverture de la popup
- class_cadre_popup = cadre_popup : Le style du cadre de la popup
- class_direct_link = language : Le style d'un lien direct vers une page
- class_headline = mw-headline : Le style par défaut des titres
- class_language_info = displayLanguageInfo : Le style du texte d'information de la page language
- class_result = languageResult : Le style d'affichage d'une opération réussie
- class_error = languageError : Le style d'affichage d'une erreur
[modifier] Tests Unitaires
Cette extension s'accompagne de deux séries de tests unitaires utilisant phpunit qui permettent de s'assurer que l'extension est bien compatible avec votre configuration.
Même si mes tests unitaires n'ont jamais provoqués de dégâts sur une base de données, je vous conseil très vivement, si vous choisissez de les utiliser, de le faire sur un serveur de test.
Pour fonctionner vous devez avoir créé un minimum de 5 pages sur le wiki. Il vous faut également modifier la ligne 75 du fichier MultiLanguageManagerTest.php en indiquant le nom d'un utilisateur ayant le droit de modifier les paramètres linguistiques des pages.
Pour utiliser les deux tests unitaires, recopiez les fichiers :
- MultiLanguageManagerTest.php
- MultiLanguageManager_SkinnTest.php
à la racine de votre Wiki et ouvrez les avec un navigateur, vous obtiendrez en résultat si tout va bien quelque chose qui ressemble à ça (regardez le source de la page de résultat):
PHPUnit 3.0.6 by Sebastian Bergmann. ....................................... Time: 00:00 OK (39 tests)
ou ça si un test échoue (regardez le source de la page de résultat)
PHPUnit 3.0.6 by Sebastian Bergmann. ......................................F Time: 00:00 There was 1 failure: 1) testCreateDetailLanguagePage_scenario1_ndl(MultiLanguageManager_Test) Failed asserting that <boolean:false> is identical to <boolean:true>. F:\Projects\MediaWiki\MediaWiki\MultiLanguageManagerTest.php:1182 F:\Projects\MediaWiki\MediaWiki\MultiLanguageManagerTest.php:94 F:\Projects\MediaWiki\MediaWiki\MultiLanguageManagerTest.php:1190 FAILURES! Tests: 39, Failures: 1.
Si vous n'obtenez pas les dernières lignes c'est qu'une erreur critique est survenue, consultez alors les logs de votre serveur web.
Pensez à supprimer ces fichiers de test de votre serveur lorsque vous n'en avez plus besoin
[modifier] Utilisation dans d'autres extensions
La classe MultiLanguageManager_controller expose un certain nombre de fonctions pouvant être utilisées dans d’autres extensions MediaWiki pour interagir avec cette extension. Reportez vous au code de la classe pour le détail de ses méthodes publics.
Une constante ART122-5 MULTILANGUEMANAGER permet de déterminer si l'extension est installée sur le serveur.
Parmi les fonctions, on peu citer getPageLanguage($pageid) qui retourne le code de langue en fonction d'un Id d'article (que l'on peu obtenir via le fonction getArticleID de la classe Title par exemple)
[modifier] Licence
Cette extension est distribuée sous licence GPL v2
* Copyright (C) 2007 Marc Despland * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
Vous avez la liberté de :
- modifier
- distribuer
- utiliser
cette extension, dans un but commercial ou non.
Toute fois vous ne pouvez redistribuer cette extension en dehors du cadre prévu par la GPL, en particulier :
- Même si vous la modifiez, cette extension reste sous GPL
- Vous n'êtes pas autorisé à supprimer les informations relatives à son auteur ou à la licence
[modifier] ChangeLog
- 2007-06-13 : 1.0.0 Initial revision
- 2007-11-11 : 1.0.1 Bugs correction
- Work with and without url beautifying
- Correct problem with special char in page name
- Work with custom namespace
- Correct a problem when delete page
- Correct the return value of hook functions

