diff --git a/ecrire/i18n/spip_en.php3 b/ecrire/i18n/spip_en.php3 new file mode 100644 index 0000000000000000000000000000000000000000..5dd2875c39490d5a205b9f66c6f8049f82397e52 --- /dev/null +++ b/ecrire/i18n/spip_en.php3 @@ -0,0 +1,20 @@ +<?php + +// +// Ce fichier ne sera execute qu'une fois +if (defined("_ECRIRE_I18N_EN")) return; +define("_ECRIRE_I18N_EN", "1"); + +global $i18n; + +// +// ecrire/inc_presentation.php3 +// +$i18n['en']['Auteurs'] = 'Authors'; +$i18n['en']['Informations personnelles'] = 'Personal data'; +$i18n['en']['1 nouveau message'] = 'YOU HAVE A NEW MESSAGE'; +$i18n['en']['@n@ nouveaux messages'] = 'YOU HAVE @n@ NEW MESSAGES'; + +// etc. + +?> \ No newline at end of file diff --git a/ecrire/i18n/spip_fr.php3 b/ecrire/i18n/spip_fr.php3 new file mode 100644 index 0000000000000000000000000000000000000000..620bb37eb387018cdf5c35f90421a1dc4d13c94d --- /dev/null +++ b/ecrire/i18n/spip_fr.php3 @@ -0,0 +1,20 @@ +<?php + +// +// Ce fichier ne sera execute qu'une fois +if (defined("_ECRIRE_I18N_FR")) return; +define("_ECRIRE_I18N_FR", "1"); + +global $i18n; + +// +// ecrire/inc_presentation.php3 +// +$i18n['fr']['Auteurs'] = 'Auteurs'; +$i18n['fr']['Informations personnelles'] = 'Informations personnelles'; +$i18n['fr']['1 nouveau message'] = 'VOUS AVEZ UN NOUVEAU MESSAGE'; +$i18n['fr']['@n@ nouveaux messages'] = 'VOUS AVEZ @n@ NOUVEAUX MESSAGES'; + +// etc. + +?> \ No newline at end of file diff --git a/ecrire/inc.php3 b/ecrire/inc.php3 index ce62fb9977b7255c7ca668de68e26fabef4124c3..995656716fe356f1302c53af513cf1305b7d54fd 100644 --- a/ecrire/inc.php3 +++ b/ecrire/inc.php3 @@ -36,6 +36,10 @@ if ($set_options == 'avancees' OR $set_options == 'basiques') { $prefs['options'] = $set_options; $prefs_mod = true; } +if ($set_lang AND ereg(",$set_lang,", ",$all_langs,")) { + $prefs['lang'] = $set_lang; + $prefs_mod = true; +} if ($securite == 'normal' || $securite == 'strict') { $prefs['securite'] = $securite; $secu = 'oui'; @@ -64,6 +68,13 @@ if ($debloquer_article) { $options = $prefs['options']; $spip_display = $prefs['display']; +// fixer la langue +if ($prefs['lang']) + $i18nlang = $prefs['lang']; +/* +else if ... Nicolas, quel est l'entete http a verifier contre $all_langs ? + +*/ switch ($prefs['couleur']) { case 1: diff --git a/ecrire/inc_gettext.php3 b/ecrire/inc_gettext.php3 new file mode 100644 index 0000000000000000000000000000000000000000..706203dfc0b0b0fd7827a96e81184344ca265b15 --- /dev/null +++ b/ecrire/inc_gettext.php3 @@ -0,0 +1,52 @@ +<?php + +// Ce fichier ne sera execute qu'une fois +if (defined("_ECRIRE_INC_GETTEXT")) return; +define("_ECRIRE_INC_GETTEXT", "1"); + + +// +// i18n : merge ("My name is @name@", array('name'=>'Bob')) +// into "My name is Bob" +// +function text_merge($text, $args) { + if (is_array($args)) { + while (list($name,$value) = each($args)) + $text = ereg_replace ("@$name@", "$value", $text); + } + return $text; +} + +// +// i18n : merge ("My name is @name@", array('name'=>'Bob')) +// into "My name is Bob" +// +function spip_gettext($text, $args, $lang) { + global $i18n; + global $dir_ecrire; + + // load the language file + if (!$i18n[$lang]) { + if (file_exists($dir_ecrire."i18n/spip_$lang.php3")) + include_ecrire ("i18n/spip_$lang.php3"); + else { + $lang = 'fr'; + include_ecrire ("i18n/spip_fr.php3"); + } + } + + // get the french text if the translation file is not complete + if (!$i18n[$lang][$text]) { + $lang = 'fr'; + include_ecrire ("i18n/spip_fr.php3"); + } + + // use the translated text if found + if ($i18n[$lang][$text]) + $text = $i18n[$lang][$text]; + + // merge it with the variables + return text_merge($text, $args); +} + +?> \ No newline at end of file diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3 index 7869f8f966761f9ef0cba7d404ed6ea334a2b158..e3d979e875f7bd427fc4b6086fb16d5da9df46c6 100644 --- a/ecrire/inc_presentation.php3 +++ b/ecrire/inc_presentation.php3 @@ -433,7 +433,7 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a // Afficher tableau de breves // -function afficher_breves($titre_table, $requete) { +function afficher_breves($titre_table, $requete, $affrub=false) { global $connect_id_auteur; $tranches = afficher_tranches_requete($requete, 2); @@ -466,6 +466,7 @@ function afficher_breves($titre_table, $requete) { $date_heure = $row['date_heure']; $titre = $row['titre']; $statut = $row['statut']; + $id_rubrique = $row['id_rubrique']; if ($statut == 'prop') $puce = "puce-blanche"; else if ($statut == 'publie') $puce = "puce-verte"; else if ($statut == 'refuse') $puce = "puce-rouge"; @@ -478,8 +479,13 @@ function afficher_breves($titre_table, $requete) { $vals[] = $s; $s = "<div align=\"right\">"; - if ($statut == "prop") $s .= "[<font color=\"red\">à valider</font>]"; - else $s .= affdate($date_heure); + if ($affrub) { + $rub = spip_fetch_array(spip_query("SELECT titre FROM spip_rubriques WHERE id_rubrique=$id_rubrique")); + $s .= typo($rub['titre']); + } else if ($statut != "prop") + $s .= affdate($date_heure); + else + $s .= "[à valider]"; $s .= "</div>"; $vals[] = $s; $table[] = $vals; @@ -1249,6 +1255,7 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr else $largeur = 750; // nettoyer le lien global + $clean_link->delVar('set_lang'); $clean_link->delVar('set_options'); $clean_link->delVar('set_couleur'); $clean_link->delVar('set_disp'); @@ -1286,9 +1293,9 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr icone_bandeau_principal ("À suivre", "index.php3", "asuivre-48.gif", "asuivre", $rubrique); icone_bandeau_principal ("Édition du site", "naviguer.php3", "documents-48.gif", "documents", $rubrique); if ($options == "avancees") { - icone_bandeau_principal ("Auteurs", "auteurs.php3", "redacteurs-48.gif", "redacteurs", $rubrique); + icone_bandeau_principal (_T('Auteurs'), "auteurs.php3", "redacteurs-48.gif", "redacteurs", $rubrique); } else { - icone_bandeau_principal ("Informations personnelles", "auteurs_edit.php3?id_auteur=$connect_id_auteur", "fiche-perso-48.gif", "redacteurs", $rubrique); + icone_bandeau_principal (_T('Informations personnelles'), "auteurs_edit.php3?id_auteur=$connect_id_auteur", "fiche-perso-48.gif", "redacteurs", $rubrique); } if ($options == "avancees") { if ($connect_statut == "0minirezo") @@ -1429,10 +1436,10 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr if ($total_messages == 1) { while($row = @spip_fetch_array($result_messages)) { $ze_message=$row['id_message']; - echo "<a href='message.php3?id_message=$ze_message'><font color='$couleur_claire'><b>VOUS AVEZ UN NOUVEAU MESSAGE</b></font></a>"; + echo "<a href='message.php3?id_message=$ze_message'><font color='$couleur_claire'><b>"._T('1 nouveau message')."</b></font></a>"; } } - if ($total_messages > 1) echo "<a href='messagerie.php3'><font color='$couleur_claire'>VOUS AVEZ $total_messages NOUVEAUX MESSAGES</font></a>"; + if ($total_messages > 1) echo "<a href='messagerie.php3'><font color='$couleur_claire'>"._T('@n@ nouveaux messages', array('n' => $total_messages))."</font></a>"; $result_messages = spip_query("SELECT messages.* FROM spip_messages AS messages, spip_auteurs_messages AS lien WHERE lien.id_auteur='$connect_id_auteur' AND messages.statut='publie' AND lien.id_message=messages.id_message AND messages.rv='oui' AND messages.date_heure>DATE_SUB(NOW(),INTERVAL 1 DAY) GROUP BY messages.id_message"); $total_messages = @spip_num_rows($result_messages); @@ -1474,7 +1481,9 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr echo "</font>"; echo "</td>"; - echo "<td align='center' align='right'>"; + + // grand ecran + echo "<td align='center'>"; $lien = $clean_link; if ($spip_ecran == "large") { @@ -1487,6 +1496,19 @@ function debut_page($titre = "", $rubrique = "asuivre", $sous_rubrique = "asuivr } echo "</td>"; + // choix de la langue + if (strpos($GLOBALS['all_langs'], ',')) { + echo "<td align='center'><font face='arial,helvetica,sans-serif' size=2>"; + $langues = explode(',', $GLOBALS['all_langs']); + while (list(,$langue) = each ($langues)) { + $lien = $clean_link; + $lien->addVar('set_lang', $langue); + echo " <a href='". $lien->getUrl() ."'><font color='#ffffff'>$langue</font></a>"; + } + echo "</font></td>"; + } + + // choix de la couleur echo "<td align='right'>"; echo "<img src='img_pack/barre-couleurs.gif' alt='couleurs' width='70' height='21' border='0' usemap='#map_couleur'>"; echo "</td>"; diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3 index fccf26bf2256b7016d97f3f6d7e99d2f1d5e762a..75d4df1be9032d0c3bdbb670f69ea3f0cff9b9e8 100644 --- a/ecrire/inc_texte.php3 +++ b/ecrire/inc_texte.php3 @@ -47,7 +47,7 @@ else { // // Variables globales : a virer pour une gestion intelligente de la langue // -tester_variable('lang', 'fr'); +tester_variable('lang', $GLOBALS['i18nlang']); // // Trouver une locale qui marche diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index c65694c8c9db084b9dd3b33715c1e08ca454bdf3..6c8034d32a251481e70be7aa18d569d9921410d6 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -26,6 +26,12 @@ $mysql_profile = false; // faut-il autoriser SPIP a compresser les pages a la volee quand le navigateur l'accepte ? $auto_compress = true; +// langue par defaut du site +$i18nlang = 'fr'; + +// langues proposees dans l'espace prive (il faut aussi le fichier i18n/spip_lang.php3) +$all_langs = 'fr,en'; + // // *** Fin du parametrage *** // @@ -639,6 +645,15 @@ if (count($GLOBALS['HTTP_POST_VARS'])) { } +// +// Fonctions d'i18n +// +function _T($text, $args='') { + include_ecrire('inc_gettext.php3'); + return spip_gettext($text, $args, $GLOBALS['i18nlang']); +} + + // Verifier la conformite d'une ou plusieurs adresses email function email_valide($adresse) { diff --git a/ecrire/index.php3 b/ecrire/index.php3 index 1e5d38acd02706f10f8a3d11f90d3066379bdea9..bf1ca66453aa36258cfdea3bb30b3ad9541b4b0d 100644 --- a/ecrire/index.php3 +++ b/ecrire/index.php3 @@ -357,7 +357,7 @@ if ($relief) { // Les breves a valider // $query = "SELECT * FROM spip_breves WHERE statut='prepa' OR statut='prop' ORDER BY date_heure DESC"; - afficher_breves("Brèves à valider", $query); + afficher_breves("Brèves à valider", $query, true); // // Les sites references a valider