2 // integration 2007 : Patrice Vanneufville
3 // Toutes les infos sur : http://www.spip-contrib.net/?article1592
6 Fichier de formatage typographique des guillemets, par Vincent Ramos
7 <www-lansargues AD kailaasa POINT net>, sous licence GNU/GPL.
9 Ne sont touchees que les paires de guillemets.
11 Le formatage des guillemets est tire de
12 <http://en.wikipedia.org/wiki/Quotation_mark%2C_non-English_usage>
13 Certains des usages indiques ne correspondent pas a ceux que la
14 barre d'insertion de caracteres speciaux de SPIP propose.
16 Les variables suivies du commentaire LRTEUIN sont confirmees par le
17 _Lexique des regles typographiques en usage a l'Imprimerie nationale_.
19 Les variables entierement commentees sont celles pour lesquelles
20 aucune information n'a ete trouvee. Par defaut, les guillements sont alors
21 de la forme “mot”, sauf si la barre d'insertion de SPIP proposait
25 // voir aussi : http://trac.rezo.net/trac/spip/changeset/9429
27 // definitions des chaines de remplacement
28 define('_GUILLEMETS_defaut', '“$1”');
29 define('_GUILLEMETS_fr', '« $1 »'); //LRTEUIN
30 //define('_GUILLEMETS_ar', '');
31 define('_GUILLEMETS_bg', '„$1“');
32 //define('_GUILLEMETS_br', '');
33 //define('_GUILLEMETS_bs', '');
34 define('_GUILLEMETS_ca', '«$1»');
35 define('_GUILLEMETS_cpf', '« $1 »');
36 //define('_GUILLEMETS_cpf_hat', '');
37 define('_GUILLEMETS_cs', '„$1“');
38 define('_GUILLEMETS_da', '»$1«');
39 define('_GUILLEMETS_de', '„$1“'); //ou "»$1«" // LRTEUIN
40 define('_GUILLEMETS_en', '“$1”'); //LRTEUIN
41 define('_GUILLEMETS_eo', '«$1»');
42 define('_GUILLEMETS_es', '«$1»');
43 //define('_GUILLEMETS_eu', '');
44 //define('_GUILLEMETS_fa', '');
45 //define('_GUILLEMETS_fon', '');
46 //define('_GUILLEMETS_gl', '');
47 define('_GUILLEMETS_hu', '„$1”');
48 define('_GUILLEMETS_it', '«$1»');
49 define('_GUILLEMETS_it_fem', '«$1»');
50 define('_GUILLEMETS_ja', '「$1」');
51 //define('_GUILLEMETS_lb', '');
52 define('_GUILLEMETS_nl', '„$1”');
53 //define('_GUILLEMETS_oc_auv', '');
54 //define('_GUILLEMETS_oc_gsc', '');
55 //define('_GUILLEMETS_oc_lms', '');
56 //define('_GUILLEMETS_oc_lnc', '');
57 //define('_GUILLEMETS_oc_ni', '');
58 //define('_GUILLEMETS_oc_ni_la', '');
59 //define('_GUILLEMETS_oc_prv', '');
60 //define('_GUILLEMETS_oc_va', '');
61 define('_GUILLEMETS_pl', '„$1”');
62 define('_GUILLEMETS_pt', '«$1»');
63 define('_GUILLEMETS_pt_br', '«$1»');
64 define('_GUILLEMETS_ro', '„$1”');
65 define('_GUILLEMETS_ru', '«$1»');
66 define('_GUILLEMETS_tr', '«$1»');
67 //define('_GUILLEMETS_vi', '');
68 define('_GUILLEMETS_zh', '「$1」'); // ou "“$1”" en chinois simplifie
70 function typo_guillemets_echappe_balises_callback($matches) {
71 return cs_code_echappement($matches[1], 'GUILL');
74 function typo_guillemets_rempl($texte){
75 // on s'en va si pas de guillemets...
76 if (strpos($texte, '"')===false) return $texte;
77 // prudence : on protege TOUTES les balises contenant des doubles guillemets droits
78 if (strpos($texte, '<')!==false)
79 $texte = preg_replace_callback('/(<[^>]+"[^>]*>)/Ums', 'typo_guillemets_echappe_balises_callback', $texte);
80 // $texte = preg_replace('/(<[^>]+"[^>]*>)/Umse', 'cs_code_echappement("\\1", "GUILL")', $texte);
82 // choix de la langue, de la constante et de la chaine de remplacement
83 if (!$lang = $GLOBALS['lang_objet']) $lang = $GLOBALS['spip_lang'];
84 $constante = '_GUILLEMETS_'.$lang;
85 $guilles = defined($constante)?
constant($constante):_GUILLEMETS_defaut
;
87 // Remplacement des autres paires de guillemets (et suppression des espaces apres/avant)
88 // Et retour des balises contenant des doubles guillemets droits
89 return echappe_retour(preg_replace('/"\s*(.*?)\s*"/', $guilles, $texte), 'GUILL');
92 function typo_guillemets($texte){
93 if (strpos($texte, '"')===false) return $texte;
94 return cs_echappe_balises('html|code|cadre|frame|script|acronym|cite', 'typo_guillemets_rempl', $texte);