, sous licence GNU/GPL. Ne sont touchees que les paires de guillemets. Le formatage des guillemets est tire de Certains des usages indiques ne correspondent pas a ceux que la barre d'insertion de caracteres speciaux de SPIP propose. Les variables suivies du commentaire LRTEUIN sont confirmees par le _Lexique des regles typographiques en usage a l'Imprimerie nationale_. Les variables entierement commentees sont celles pour lesquelles aucune information n'a ete trouvee. Par defaut, les guillements sont alors de la forme “mot”, sauf si la barre d'insertion de SPIP proposait deja une autre forme. */ // voir aussi : http://trac.rezo.net/trac/spip/changeset/9429 // definitions des chaines de remplacement define('_GUILLEMETS_defaut', '“$1”'); define('_GUILLEMETS_fr', '« $1 »'); //LRTEUIN //define('_GUILLEMETS_ar', ''); define('_GUILLEMETS_bg', '„$1“'); //define('_GUILLEMETS_br', ''); //define('_GUILLEMETS_bs', ''); define('_GUILLEMETS_ca', '«$1»'); define('_GUILLEMETS_cpf', '« $1 »'); //define('_GUILLEMETS_cpf_hat', ''); define('_GUILLEMETS_cs', '„$1“'); define('_GUILLEMETS_da', '»$1«'); define('_GUILLEMETS_de', '„$1“'); //ou "»$1«" // LRTEUIN define('_GUILLEMETS_en', '“$1”'); //LRTEUIN define('_GUILLEMETS_eo', '«$1»'); define('_GUILLEMETS_es', '«$1»'); //define('_GUILLEMETS_eu', ''); //define('_GUILLEMETS_fa', ''); //define('_GUILLEMETS_fon', ''); //define('_GUILLEMETS_gl', ''); define('_GUILLEMETS_hu', '„$1”'); define('_GUILLEMETS_it', '«$1»'); define('_GUILLEMETS_it_fem', '«$1»'); define('_GUILLEMETS_ja', '「$1」'); //define('_GUILLEMETS_lb', ''); define('_GUILLEMETS_nl', '„$1”'); //define('_GUILLEMETS_oc_auv', ''); //define('_GUILLEMETS_oc_gsc', ''); //define('_GUILLEMETS_oc_lms', ''); //define('_GUILLEMETS_oc_lnc', ''); //define('_GUILLEMETS_oc_ni', ''); //define('_GUILLEMETS_oc_ni_la', ''); //define('_GUILLEMETS_oc_prv', ''); //define('_GUILLEMETS_oc_va', ''); define('_GUILLEMETS_pl', '„$1”'); define('_GUILLEMETS_pt', '«$1»'); define('_GUILLEMETS_pt_br', '«$1»'); define('_GUILLEMETS_ro', '„$1”'); define('_GUILLEMETS_ru', '«$1»'); define('_GUILLEMETS_tr', '«$1»'); //define('_GUILLEMETS_vi', ''); define('_GUILLEMETS_zh', '「$1」'); // ou "“$1”" en chinois simplifie function typo_guillemets_echappe_balises_callback($matches) { return cs_code_echappement($matches[1], 'GUILL'); } function typo_guillemets_rempl($texte){ // on s'en va si pas de guillemets... if (strpos($texte, '"')===false) return $texte; // prudence : on protege TOUTES les balises contenant des doubles guillemets droits if (strpos($texte, '<')!==false) $texte = preg_replace_callback('/(<[^>]+"[^>]*>)/Ums', 'typo_guillemets_echappe_balises_callback', $texte); // $texte = preg_replace('/(<[^>]+"[^>]*>)/Umse', 'cs_code_echappement("\\1", "GUILL")', $texte); ; // choix de la langue, de la constante et de la chaine de remplacement if (!$lang = $GLOBALS['lang_objet']) $lang = $GLOBALS['spip_lang']; $constante = '_GUILLEMETS_'.$lang; $guilles = defined($constante)?constant($constante):_GUILLEMETS_defaut; // Remplacement des autres paires de guillemets (et suppression des espaces apres/avant) // Et retour des balises contenant des doubles guillemets droits return echappe_retour(preg_replace('/"\s*(.*?)\s*"/', $guilles, $texte), 'GUILL'); } function typo_guillemets($texte){ if (strpos($texte, '"')===false) return $texte; return cs_echappe_balises('html|code|cadre|frame|script|acronym|cite', 'typo_guillemets_rempl', $texte); } ?>