Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Bonjour,
Je suis assez partisan du moindre effort et j'aime bien pouvoir automatiser les tâches fastidieuses ou répétitives.
Vous avez pu le constater, par exemple avec :
- Modification "URL de base" automatique en fonction de l'hébergeur
http://www.punbb.fr/forums/viewtopic.php?id=4866
http://www.punbb.fr/forums/viewtopic.php?id=6746
- Cohabitation site iso-8859-1 et forum FluxBB 1.4 utf-8 avec includes communs
http://www.punbb.fr/forums/viewtopic.php?id=10366
Maintenant on va aborder les modifications et ajouts aux fichiers de localisation linguistique.
Vous modifiez ou ajoutez des chaînes de caractères aux différents tableaux des fichiers de langage comme lang\French\common.php ou lang\French\topic.php et, comme moi, vous pestez devoir le faire à chaque évolution de version ou modification.
Et bien, je vous propose un « truc » qui vous évitera de modifier manuellement les fichiers de langue originaux.
Si vous devez modifier un fichier de langue (Modification ou ajout de chaîne), je vous propose d'ajouter un fichier, du même nom que le fichier originel, mais avec un suffixe (ici "_oto", mais ce peut être autre chose), par exemple :
Fichier "topic_oto.php" pour les chaînes modifiées ou ajoutées au fichier "lang/French/topic.php" :
<?php
//modif oto ajout 'Change order' = 'Changer l\'ordre des messages',
//modif oto ajout 'Order asc' = 'Plus ancien en premier'
//modif oto ajout 'Order desc' = 'Plus récent en premier'
$lang_topic['Change order'] = 'Changer l\'ordre des messages';
$lang_topic['Order asc'] = 'Plus ancien en premier';
$lang_topic['Order desc'] = 'Plus récent en premier';
?>Fichier "profile_oto.php" pour les chaînes modifiées ou ajoutées au fichier "lang/French/profile.php" :
<?php
//[modif oto] 'Section personal' = 'Personnel & Promo'
//[modif oto] 'Personal details legend' = 'Informations personnelles et votre Promotion (19xx-19yy) ou votre Fonction'
//[modif oto] Ajout 'Promotion' = 'Promotion ou Fonction'
$lang_profile['Section personal'] = 'Personnel & Promo';
$lang_profile['Personal details legend'] = 'Informations personnelles et votre Promotion (19xx-19yy) ou votre Fonction';
$lang_profile['Promotion'] = 'Promotion ou Fonction';
?>Et ainsi de suite pour les autres fichiers de langue comme "lang/French/common.php" ou "lang/French/register.php" en prenant bien soin de mettre dans chaque nouveau fichier (avec toujours le même suffixe), les modifications ou ajouts n'intéressant que le fichier d'origine.
Ceci fait que chaque mise à jour des fichiers langue n'écrase pas les modifications et ajouts.
Maintenant, comment faire pour ajouter les fichiers contenant les modifications ?
Dans le dossier lang/French, mettre un fichier "updates_files.php" qui contient :
<?php
/* Lecture des fichiers langage à modifier
Vérification si déjà modifié
Vérification si ?> à la fin
Ajout de include('fichier$suffixe.php')
Sauvegarde du fichier modifié
----- Liste des fichiers langue à modifier ------- */
$suffixe = "_oto"; //À modifier éventuellement
$a_modifier = array();
$dir = opendir(getcwd());
while ($f = readdir($dir)) {
if(is_file($f)) if($pos = strpos($f,$suffixe)) $a_modifier[] = substr($f,0,$pos);
}
closedir($dir);
if(count($a_modifier) > 0 ) {
for($i=0;$i< count($a_modifier);$i++) {
echo "A modifier : <b>".$a_modifier[$i]."</b> - ";
if(file_exists($a_modifier[$i].'.php')) {
$fichier = file_get_contents($a_modifier[$i].'.php');
$cherche = "include('".$a_modifier[$i].$suffixe.".php')";
//Regarde si déjà modifié
if(strpos($fichier,$cherche) === false) {
//Suppression éventuelle de la fermeture php
if(strpos($fichier,"?>")) $fichier = str_replace('?>','',$fichier);
//Ajout ligne include
$fichier .= "\n".$cherche.";\n\n?>\n";
//Écriture du fichier modifié
file_put_contents($a_modifier[$i].'.php',$fichier);
echo "<i>modification faite</i><br>";
}
else echo "<i>modification existe</i><br>";
}
else echo "<b> ERREUR le fichier ".$a_modifier[$i].".php n'existe pas</b><br>";
}
unset($fichier);
}
?>Après exécution de "updates_files.php", à la fin de chaque fichier de langue originel qui doit être modifié, il sera ajouté une instruction include qui sera fonction du nom du fichier, par exemple :
include('topic_oto.php');
à la fin du fichier "topic.php".
Vous n'avez plus à vous préoccuper de savoir quels fichiers originels il faut modifier ou quels appels supplémentaires aux dits fichiers il faut ajouter dans les scripts. Vos modifications seront appelés automatiquement avec chaque require du fichier langue originel.
Et voilà.
Dernière modification par Otomatic (25-04-2010 17:19:35)
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne