source: spip-zone/_plugins_/typo_guillemets/typo_guillemets_fonctions.php @ 109534

Last change on this file since 109534 was 109534, checked in by erational@…, 3 years ago

PSR et surtout suppression d'un espace blanc qui pétait des headers

File size: 4.4 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) {
4        return;
5}
6
7function typo_guillemets_insert_head_css($flux) {
8        $flux .= '<link rel="stylesheet" type="text/css" href="'.find_in_path('css/typo_guillemets.css').'" media="all" />'."\n";
9        return $flux;
10}
11
12/*
13Fichier de formatage typographique des guillemets, par Vincent Ramos
14<spip_dev AD kailaasa PVNCTVM net>, sous licence GNU/GPL.
15
16Ne sont touchees que les paires de guillemets.
17
18Le formatage des guillemets est tire de
19<http://en.wikipedia.org/wiki/Quotation_mark%2C_non-English_usage>
20Certains des usages indiques ne correspondent pas a ceux que la
21barre d'insertion de caracteres speciaux de SPIP propose.
22
23Les variables suivies du commentaire LRTEUIN sont confirmees par le
24_Lexique des regles typographiques en usage a l'Imprimerie nationale_.
25
26Les variables entierement commentees sont celles pour lesquelles
27aucune information n'a ete trouvee. Par defaut, les guillements sont alors
28de la forme &ldquo;mot&rdquo;, sauf si la barre d'insertion de SPIP proposait
29deja une autre forme.
30*/
31function typo_guillemets_remplacements($texte) {
32
33        // si le texte ne contient pas de guill droit
34        // ou s'il contient deja des guillemets élaborés
35        // on ne touche pas
36        if ((strpos($texte, '"') === false)
37        OR (strpos($texte, '&#171;') !== false)
38        OR (strpos($texte, '&#187;') !== false)
39        OR (strpos($texte, '&#8220;') !== false)
40        OR (strpos($texte, '&#8221;') !== false)
41        )
42                return $texte;
43
44        switch ($GLOBALS['spip_lang']){
45                case 'fr':
46                        $guilles="&laquo;&nbsp;$2&nbsp;&raquo;"; //LRTEUIN
47                break;
48//              case 'ar':
49//                      $guilles="";
50//              break;
51                case 'bg':
52                        $guilles="&bdquo;$2&ldquo;";
53                break;
54//              case 'br':
55//                      $guilles="";
56//              break;
57//              case 'bs':
58//                      $guilles="";
59//              break;
60                case 'ca':
61                        $guilles="&laquo;$2&raquo;";
62                break;
63                case 'cpf':
64                        $guilles="&laquo;&nbsp;$2&nbsp;&raquo;";
65                break;
66//              case 'cpf_hat':
67//                      $guilles="";
68//              break;
69                case 'cs':
70                        $guilles="&bdquo;$2&ldquo;";
71                break;
72                case 'da':
73                        $guilles="&raquo;$2&laquo;";
74                break;
75                case 'de':
76                        $guilles="&bdquo;$2&ldquo;"; //ou "&raquo;$2&laquo;" // LRTEUIN
77                break;
78                case 'en':
79                        $guilles="&ldquo;$2&rdquo;"; //LRTEUIN
80                break;
81                case 'eo':
82                        $guilles="&laquo;$2&raquo;";
83                break;
84                case 'es':
85                        $guilles="&laquo;$2&raquo;";
86                break;
87//              case 'eu':
88//                      $guilles="";
89//              break;
90//              case 'fa':
91//                      $guilles="";
92//              break;
93//              case 'fon':
94//                      $guilles="";
95//              break;
96//              case 'gl':
97//                      $guilles="";
98//              break;
99                case 'hu':
100                        $guilles="&bdquo;$2&rdquo;";
101                break;
102                case 'it':
103                        $guilles="&laquo;$2&raquo;";
104                break;
105                case 'it_fem':
106                        $guilles="&laquo;$2&raquo;";
107                break;
108                case 'ja':
109                        $guilles="&#12300;$2&#12301;";
110                break;
111//              case 'lb':
112//                      $guilles="";
113//              break;
114                case 'nl':
115                        $guilles="&bdquo;$2&rdquo;";
116                break;
117//              case 'oc_auv':
118//                      $guilles="";
119//              break;
120//              case 'oc_gsc':
121//                      $guilles="";
122//              break;
123//              case 'oc_lms':
124//                      $guilles="";
125//              break;
126//              case 'oc_lnc':
127//                      $guilles="";
128//              break;
129//              case 'oc_ni':
130//                      $guilles="";
131//              break;
132//              case 'oc_ni_la':
133//                      $guilles="";
134//              break;
135//              case 'oc_prv':
136//                      $guilles="";
137//              break;
138//              case 'oc_va':
139//                      $guilles="";
140//              break;
141                case 'pl':
142                        $guilles="&bdquo;$2&rdquo;";
143                break;
144                case 'pt':
145                        $guilles="&laquo;$2&raquo;";
146                break;
147                case 'pt_br':
148                        $guilles="&laquo;$2&raquo;";
149                break;
150                case 'ro':
151                        $guilles="&bdquo;$2&rdquo;";
152                break;
153                case 'ru':
154                        $guilles="&laquo;$2&raquo;";
155                break;
156                case 'tr':
157                        $guilles="&laquo;$2&raquo;";
158                break;
159//              case 'vi':
160//                      $guilles="";
161//              break;
162                case 'zh':
163                        $guilles="&#12300;$2&#12301;"; // ou "&ldquo;$2&rdquo;" en chinois simplifie
164                break;
165                default:
166                        $guilles="&ldquo;$2&rdquo;";
167        }
168
169        // on echappe les " dans les tags ;
170        // attention ici \01 est le caractere chr(1), et $m[0] represente le tag
171        $texte = preg_replace_callback(',<[^>]*"[^>]*(>|$),msS', function($m) { return str_replace("\'", "'", str_replace('"',"\01", $m[0])); }, $texte);
172
173        // on corrige les guill restants, qui sont par definition hors des tags
174        // Un guill n'est pas pris s'il suit un caractere autre que espace, ou
175        // s'il est suivi par un caractere de mot (lettre, chiffre)
176        $texte = preg_replace('/(^|\s)"\s?([^"]*?)\s?"(\W|$)/S', '$1'.$guilles.'$3', $texte);
177
178        // et on remet les guill des tags
179        return str_replace("\01", '"', $texte);
180}
181
Note: See TracBrowser for help on using the repository browser.