[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / couteau_suisse / couteau_suisse / outils / guillemets.php
1 <?php
2 // integration 2007 : Patrice Vanneufville
3 // Toutes les infos sur : http://www.spip-contrib.net/?article1592
4
5 /*
6 Fichier de formatage typographique des guillemets, par Vincent Ramos
7 <www-lansargues AD kailaasa POINT net>, sous licence GNU/GPL.
8
9 Ne sont touchees que les paires de guillemets.
10
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.
15
16 Les variables suivies du commentaire LRTEUIN sont confirmees par le
17 _Lexique des regles typographiques en usage a l'Imprimerie nationale_.
18
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 &ldquo;mot&rdquo;, sauf si la barre d'insertion de SPIP proposait
22 deja une autre forme.
23 */
24
25 // voir aussi : http://trac.rezo.net/trac/spip/changeset/9429
26
27 // definitions des chaines de remplacement
28 define('_GUILLEMETS_defaut', '&ldquo;$1&rdquo;');
29 define('_GUILLEMETS_fr', '&laquo;&nbsp;$1&nbsp;&raquo;'); //LRTEUIN
30 //define('_GUILLEMETS_ar', '');
31 define('_GUILLEMETS_bg', '&bdquo;$1&ldquo;');
32 //define('_GUILLEMETS_br', '');
33 //define('_GUILLEMETS_bs', '');
34 define('_GUILLEMETS_ca', '&laquo;$1&raquo;');
35 define('_GUILLEMETS_cpf', '&laquo;&nbsp;$1&nbsp;&raquo;');
36 //define('_GUILLEMETS_cpf_hat', '');
37 define('_GUILLEMETS_cs', '&bdquo;$1&ldquo;');
38 define('_GUILLEMETS_da', '&raquo;$1&laquo;');
39 define('_GUILLEMETS_de', '&bdquo;$1&ldquo;'); //ou "&raquo;$1&laquo;" // LRTEUIN
40 define('_GUILLEMETS_en', '&ldquo;$1&rdquo;'); //LRTEUIN
41 define('_GUILLEMETS_eo', '&laquo;$1&raquo;');
42 define('_GUILLEMETS_es', '&laquo;$1&raquo;');
43 //define('_GUILLEMETS_eu', '');
44 //define('_GUILLEMETS_fa', '');
45 //define('_GUILLEMETS_fon', '');
46 //define('_GUILLEMETS_gl', '');
47 define('_GUILLEMETS_hu', '&bdquo;$1&rdquo;');
48 define('_GUILLEMETS_it', '&laquo;$1&raquo;');
49 define('_GUILLEMETS_it_fem', '&laquo;$1&raquo;');
50 define('_GUILLEMETS_ja', '&#12300;$1&#12301;');
51 //define('_GUILLEMETS_lb', '');
52 define('_GUILLEMETS_nl', '&bdquo;$1&rdquo;');
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', '&bdquo;$1&rdquo;');
62 define('_GUILLEMETS_pt', '&laquo;$1&raquo;');
63 define('_GUILLEMETS_pt_br', '&laquo;$1&raquo;');
64 define('_GUILLEMETS_ro', '&bdquo;$1&rdquo;');
65 define('_GUILLEMETS_ru', '&laquo;$1&raquo;');
66 define('_GUILLEMETS_tr', '&laquo;$1&raquo;');
67 //define('_GUILLEMETS_vi', '');
68 define('_GUILLEMETS_zh', '&#12300;$1&#12301;'); // ou "&ldquo;$1&rdquo;" en chinois simplifie
69
70 function typo_guillemets_echappe_balises_callback($matches) {
71 return cs_code_echappement($matches[1], 'GUILL');
72 }
73
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);
81 ;
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;
86
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');
90 }
91
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);
95 }
96
97 ?>