Changeset 100689 in spip-zone


Ignore:
Timestamp:
Nov 26, 2016, 6:00:31 PM (3 years ago)
Author:
eric@…
Message:

On améliore la gestion des langues afin de distinguer les langues supportées par chaque service et le choix d'une langue spip aleternative si la langue courante n'est pas fournie par le service.
Par contre, faut-il utiliser spip_lang ou lang ?
On supprime ainsi des fonctions par service en factorisant en une seule la fonction de construction du cache.

Location:
_plugins_/rainette/trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rainette/trunk/inc/charger_meteo.php

    r97957 r100689  
    1919 * périodicité est compatible avec le service; cette fonction ne retourne donc que des erreurs de chargement.
    2020 *
     21 * @uses service2cache()
    2122 * @uses service2donnees()
    2223 * @uses indice2risque_uv()
     
    8990
    9091        // Construire le nom du fichier cache
    91         $cacher = "${service}_service2cache";
    92         $cache = $cacher($lieu, $mode, $periodicite, $configuration);
     92        include_spip('inc/rainette_normaliser');
     93        $cache = service2cache($service, $lieu, $mode, $periodicite, $configuration);
    9394
    9495        // Déterminer le système d'unité utilisé dans le cache et celui requis par la configuration.
     
    148149                        // -2- complément du tableau avec les données propres à chaque service
    149150                        // -3- complément du tableau avec les données communes à tous les services
    150                         include_spip('inc/rainette_normaliser');
    151151                        foreach ($flux as $_index_jour => $_flux_jour) {
    152152                                // Pour les informations et les conditions les données récupérées concernent toute la même "période".
  • _plugins_/rainette/trunk/inc/rainette_debusquer.php

    r100580 r100689  
    182182        return $texte;
    183183}
     184
     185
     186function trouver_langue_manquante() {
     187        include_spip('inc/lang_liste');
     188        include_spip('inc/rainette_normaliser');
     189        foreach ($GLOBALS['codes_langues'] as $code => $langue) {
     190                if (!array_key_exists($code, $GLOBALS['rainette_config']['langues_alternatives'])) {
     191                        echo "code manquant $code<br />";
     192                }
     193        }
     194}
  • _plugins_/rainette/trunk/inc/rainette_normaliser.php

    r100584 r100689  
    2626$GLOBALS['rainette_config']['infos'] = array(
    2727        // Lieu
    28         'ville'          => array('origine' => 'service', 'type_php' => 'string', 'type_unite' => '', 'groupe' => 'donnees_lieu'),
    29         'pays'           => array('origine' => 'service', 'type_php' => 'string', 'type_unite' => '', 'groupe' => 'donnees_lieu'),
    30         'pays_iso2'      => array('origine' => 'service', 'type_php' => 'string', 'type_unite' => '', 'groupe' => 'donnees_lieu'),
    31         'region'         => array('origine' => 'service', 'type_php' => 'string', 'type_unite' => '', 'groupe' => 'donnees_lieu'),
     28        'ville'     => array('origine' => 'service', 'type_php' => 'string', 'type_unite' => '', 'groupe' => 'donnees_lieu'),
     29        'pays'      => array('origine' => 'service', 'type_php' => 'string', 'type_unite' => '', 'groupe' => 'donnees_lieu'),
     30        'pays_iso2' => array('origine' => 'service', 'type_php' => 'string', 'type_unite' => '', 'groupe' => 'donnees_lieu'),
     31        'region'    => array('origine' => 'service', 'type_php' => 'string', 'type_unite' => '', 'groupe' => 'donnees_lieu'),
    3232        // Coordonnées géographiques
    33         'longitude'      => array('origine' => 'service', 'type_php' => 'float', 'type_unite' => 'angle', 'groupe' => 'donnees_coordonnees'),
    34         'latitude'       => array('origine' => 'service', 'type_php' => 'float', 'type_unite' => 'angle', 'groupe' => 'donnees_coordonnees'),
     33        'longitude' => array('origine' => 'service', 'type_php' => 'float', 'type_unite' => 'angle', 'groupe' => 'donnees_coordonnees'),
     34        'latitude'  => array('origine' => 'service', 'type_php' => 'float', 'type_unite' => 'angle', 'groupe' => 'donnees_coordonnees'),
    3535);
    3636
     
    102102        24 => array(24, 12),
    103103        12 => array(12),
    104         1  => array(1,3,6)
     104        1  => array(1, 3, 6)
    105105);
    106106
     107$GLOBALS['rainette_config']['langues_alternatives'] = array(
     108        'aa'           => array(),     // afar
     109        'ab'           => array(),     // abkhaze
     110        'af'           => array('en'), // afrikaans
     111        'am'           => array(),     // amharique
     112        'an'           => array('es'), // aragonais
     113        'ar'           => array(),     // arabe
     114        'as'           => array(),     // assamais
     115        'ast'          => array('es'), // asturien - iso 639-2
     116        'ay'           => array(),     // aymara
     117        'az'           => array('ru'), // azeri
     118        'ba'           => array(),     // bashkir
     119        'be'           => array('ru'), // bielorusse
     120        'ber_tam'      => array('ar'), // berbère
     121        'ber_tam_tfng' => array('ar'), // berbère tifinagh
     122        'bg'           => array(),     // bulgare
     123        'bh'           => array(),     // langues biharis
     124        'bi'           => array(),     // bichlamar
     125        'bm'           => array(),     // bambara
     126        'bn'           => array(),     // bengali
     127        'bo'           => array(),     // tibétain
     128        'br'           => array('fr'), // breton
     129        'bs'           => array(),     // bosniaque
     130        'ca'           => array('es'), // catalan
     131        'co'           => array('fr'), // corse
     132        'cpf'          => array('fr'), // créole réunionais
     133        'cpf_dom'      => array('es'), // créole ???
     134        'cpf_hat'      => array('fr'), // créole haïtien
     135        'cs'           => array(),     // tchèque
     136        'cy'           => array('en'), // gallois
     137        'da'           => array(),     // danois
     138        'de'           => array(),     // allemand
     139        'dz'           => array(),     // dzongkha
     140        'el'           => array(),     // grec moderne
     141        'en'           => array(),     // anglais
     142        'en_hx'        => array('en'), // anglais hacker
     143        'en_sm'        => array('en'), // anglais smurf
     144        'eo'           => array(),     // esperanto
     145        'es'           => array(),     // espagnol
     146        'es_co'        => array('es'), // espagnol colombien
     147        'es_mx_pop'    => array('es'), // espagnol mexicain
     148        'et'           => array(),     // estonien
     149        'eu'           => array('fr'), // basque
     150        'fa'           => array(),     // persan (farsi)
     151        'ff'           => array(),     // peul
     152        'fi'           => array('sv'), // finnois
     153        'fj'           => array('en'), // fidjien
     154        'fo'           => array('da'), // féroïen
     155        'fon'          => array(),     // fon
     156        'fr'           => array(),     // français
     157        'fr_fem'       => array('fr'), // français féminin
     158        'fr_sc'        => array('fr'), // français schtroumpf
     159        'fr_lpc'       => array('fr'), // français langue parlée
     160        'fr_lsf'       => array('fr'), // français langue des signes
     161        'fr_spl'       => array('fr'), // français simplifié
     162        'fr_tu'        => array('fr'), // français copain
     163        'fy'           => array('de'), // frison occidental
     164        'ga'           => array('en'), // irlandais
     165        'gd'           => array('en'), // gaélique écossais
     166        'gl'           => array('es'), // galicien
     167        'gn'           => array(),     // guarani
     168        'grc'          => array('el'), // grec ancien
     169        'gu'           => array(),     // goudjrati
     170        'ha'           => array(),     // haoussa
     171        'hac'          => array('ku'), // Kurdish-Horami
     172        'hbo'          => array('il'), // hebreu classique ou biblique
     173        'he'           => array(),     // hébreu
     174        'hi'           => array(),     // hindi
     175        'hr'           => array(),     // croate
     176        'hu'           => array(),     // hongrois
     177        'hy'           => array(),     // armenien
     178        'ia'           => array(),     // interlingua (langue auxiliaire internationale)
     179        'id'           => array(),     // indonésien
     180        'ie'           => array(),     // interlingue
     181        'ik'           => array(),     // inupiaq
     182        'is'           => array(),     // islandais
     183        'it'           => array(),     // italien
     184        'it_fem'       => array('it'), // italien féminin
     185        'iu'           => array(),     // inuktitut
     186        'ja'           => array(),     // japonais
     187        'jv'           => array(),     // javanais
     188        'ka'           => array(),     // géorgien
     189        'kk'           => array(),     // kazakh
     190        'kl'           => array('da'), // groenlandais
     191        'km'           => array(),     // khmer central
     192        'kn'           => array(),     // Kannada
     193        'ko'           => array(),     // coréen
     194        'kok'          => array(),     // konkani (macrolangage)
     195        'ks'           => array(),     // kashmiri
     196        'ku'           => array(),     // kurde
     197        'ky'           => array(),     // kirghiz
     198        'la'           => array('fr'), // latin
     199        'lb'           => array('fr'), // luxembourgeois
     200        'ln'           => array(),     // lingala
     201        'lo'           => array(),     // lao
     202        'lt'           => array(),     // lituanien
     203        'lu'           => array(),     // luba-katanga
     204        'lv'           => array(),     // letton
     205        'man'          => array(),     // mandingue
     206        'mfv'          => array(),     // manjaque - iso-639-3
     207        'mg'           => array('fr'), // malgache
     208        'mi'           => array(),     // maori
     209        'mk'           => array(),     // macédonien
     210        'ml'           => array(),     // malayalam
     211        'mn'           => array('zh'), // mongol
     212        'mo'           => array('ro'), // moldave ??? normalement c'est ro comme le roumain
     213        'mos'          => array(),     // moré - iso 639-2
     214        'mr'           => array(),     // marathe
     215        'ms'           => array(),     // malais
     216        'mt'           => array('en'), // maltais
     217        'my'           => array(),     // birman
     218        'na'           => array(),     // nauruan
     219        'nap'          => array('it'), // napolitain - iso 639-2
     220        'ne'           => array(),     // népalais
     221        'nqo'          => array(),     // n’ko - iso 639-3
     222        'nl'           => array(),     // néerlandais
     223        'no'           => array(),     // norvégien
     224        'nb'           => array('no'), // norvégien bokmål
     225        'nn'           => array('no'), // norvégien nynorsk
     226        'oc'           => array('fr'), // occitan
     227        'oc_lnc'       => array('oc', 'fr'), // occitan languedocien
     228        'oc_ni'        => array('oc', 'fr'), // occitan niçard
     229        'oc_ni_la'     => array('oc', 'fr'), // occitan niçard larg
     230        'oc_ni_mis'    => array('oc', 'fr'), // occitan niçard mistralenc
     231        'oc_prv'       => array('oc', 'fr'), // occitan provençal
     232        'oc_gsc'       => array('oc', 'fr'), // occitan gascon
     233        'oc_lms'       => array('oc', 'fr'), // occitan limousin
     234        'oc_auv'       => array('oc', 'fr'), // occitan auvergnat
     235        'oc_va'        => array('oc', 'fr'), // occitan vivaro-alpin
     236        'om'           => array(),     // galla
     237        'or'           => array(),     // oriya
     238        'pa'           => array(),     // pendjabi
     239        'pbb'          => array(),     // Nasa Yuwe (páez) - iso 639-3
     240        'pl'           => array(),     // polonais
     241        'prs'          => array(),     // Dari (Afghanistan) - iso 639-3
     242        'ps'           => array(),     // pachto
     243        'pt'           => array(),     // portugais
     244        'pt_br'        => array('pt'), // portugais brésilien
     245        'qu'           => array('es'), // quechua
     246        'rm'           => array('fr'), // romanche
     247        'rn'           => array(),     // rundi
     248        'ro'           => array(),     // roumain
     249        'roa'          => array('fr'), // langues romanes (ch'ti) - iso 639-2
     250        'ru'           => array(),     // russe
     251        'rw'           => array(),     // rwanda
     252        'sa'           => array(),     // sanskrit
     253        'sc'           => array('it'), // sarde
     254        'scn'          => array('it'), // sicilien - iso 639-2
     255        'sd'           => array(),     // sindhi
     256        'sg'           => array(),     // sango
     257        'sh'           => array('sh'), // serbo-croate
     258        'sh_latn'      => array('sh'), // serbo-croate latin
     259        'sh_cyrl'      => array('sh'), // serbo-croate cyrillique
     260        'si'           => array(),     // singhalais
     261        'sk'           => array(),     // slovaque
     262        'sl'           => array(),     // slovène
     263        'sm'           => array('en'), // samoan
     264        'sn'           => array(),     // shona
     265        'so'           => array(),     // somali
     266        'sq'           => array(),     // albanais
     267        'sr'           => array(),     // serbe
     268        'src'          => array('it'), // sarde logoudorien - iso 639-3
     269        'sro'          => array('it'), // sarde campidanien - iso 639-3
     270        'ss'           => array(),     // swati
     271        'st'           => array(),     // sotho du Sud
     272        'su'           => array(),     // soundanais
     273        'sv'           => array(),     // suédois
     274        'sw'           => array(),     // swahili
     275        'ta'           => array(),     // tamoul
     276        'te'           => array(),     // télougou
     277        'tg'           => array(),     // tadjik
     278        'th'           => array(),     // thaï
     279        'ti'           => array(),     // tigrigna
     280        'tk'           => array(),     // turkmène
     281        'tl'           => array(),     // tagalog
     282        'tn'           => array(),     // tswana
     283        'to'           => array('en'), // tongan (Îles Tonga)
     284        'tr'           => array(),     // turc
     285        'ts'           => array(),     // tsonga
     286        'tt'           => array(),     // tatar
     287        'tw'           => array(),     // twi
     288        'ty'           => array('fr'), // tahitien
     289        'ug'           => array(),     // ouïgour
     290        'uk'           => array('ru'), // ukrainien
     291        'ur'           => array(),     // ourdou
     292        'uz'           => array(),     // ouszbek
     293        'vi'           => array(),     // vietnamien
     294        'vo'           => array(),     // volapük
     295        'wa'           => array('fr'), // wallon
     296        'wo'           => array(),     // wolof
     297        'xh'           => array(),     // xhosa
     298        'yi'           => array('he'), // yiddish
     299        'yo'           => array(),     // yoruba
     300        'za'           => array('zh'), // zhuang
     301        'zh'           => array(),     // chinois (ecriture simplifiee)
     302        'zh_tw'        => array('zh'), // chinois taiwan (ecriture traditionnelle)
     303        'zu'           => array()      // zoulou
     304);
    107305
    108306
     
    125323                foreach (array_keys($GLOBALS['rainette_config'][$mode]) as $_donnee) {
    126324                        if ((($periode == -1)
    127                                 and (empty($GLOBALS['rainette_config'][$mode][$_donnee]['rangement'])
    128                                         or ($GLOBALS['rainette_config'][$mode][$_donnee]['rangement'] == 'jour')))
    129                         or (($periode > -1)     and ($GLOBALS['rainette_config'][$mode][$_donnee]['rangement'] == 'heure'))) {
     325                                 and (empty($GLOBALS['rainette_config'][$mode][$_donnee]['rangement'])
     326                                          or ($GLOBALS['rainette_config'][$mode][$_donnee]['rangement'] == 'jour')))
     327                                or (($periode > -1) and ($GLOBALS['rainette_config'][$mode][$_donnee]['rangement'] == 'heure'))
     328                        ) {
    130329                                if ($GLOBALS['rainette_config'][$mode][$_donnee]['origine'] == 'service') {
    131330                                        // La donnée est fournie par le service. Elle n'est jamais calculée par le plugin
     
    289488
    290489        if (isset($GLOBALS['rainette_config']['periodicite'][$type_modele])
    291         and in_array($periodicite, $GLOBALS['rainette_config']['periodicite'][$type_modele])) {
     490                and in_array($periodicite, $GLOBALS['rainette_config']['periodicite'][$type_modele])
     491        ) {
    292492                $compatible = true;
    293493        }
    294494
    295495        return $compatible;
     496}
     497
     498
     499/**
     500 * Construit le nom du cache en fonction du servide, du lieu, du type de données et de la langue utilisée par le site.
     501 *
     502 * @param string $service
     503 *        Le nom abrégé du service :
     504 *        - `weather` pour le weather.com, la valeur par défaut car elle ne nécessite aucune inscription
     505 *        - `wwo` pour World Weather Online
     506 *        - `wunderground` pour Wunderground
     507 *        - `owm` pour Open Weather Map
     508 * @param string $lieu
     509 *        Lieu pour lequel on requiert le nom du cache.
     510 * @param string $mode
     511 *        Type de données météorologiques. Les valeurs possibles sont `infos`, `conditions` ou `previsions`.
     512 * @param int    $periodicite
     513 *        La périodicité horaire des prévisions :
     514 *        - `24`, `12`, `6`, `3` ou `1`, pour le mode `previsions`
     515 *        - `0`, pour les modes `conditions` et `infos`
     516 * @param array  $config_service
     517 *        Configuration complète du service, statique et utilisateur.
     518 *
     519 * @return string
     520 *        Chemin complet du fichier cache.
     521 */
     522function service2cache($service, $lieu, $mode, $periodicite, $config_service) {
     523
     524        // Identification de la langue du resume.
     525        $code_langue = trouver_langue_service($service, $config_service);
     526
     527        // Construction du chemin du fichier cache
     528        $fichier_cache = normaliser_cache($service, $lieu, $mode, $periodicite, $code_langue);
     529
     530        return $fichier_cache;
     531}
     532
     533
     534function trouver_langue_service($service, $config_service) {
     535
     536        if ($config_service['condition'] == $service) {
     537                // Langue SPIP : soit celle de la page soit celle en cours pour l'affichage
     538                // TODO : cela a-t-il du sens ?
     539                $langue_spip = $GLOBALS['lang'] ? $GLOBALS['lang'] : $GLOBALS['spip_lang'];
     540
     541                // On cherche si le service fournit la langue utilisée par le site.
     542                // -- Pour cela on utilise la configuration du service qui fournit un tableau des langues disponibles
     543                //    sous le format [code de langue du service] = code de langue spip.
     544                $langue_service = array_search($langue_spip, $config_service['langues']['disponibles']);
     545                if ($langue_service === false) {
     546                        // La langue utilisée par SPIP n'est pas supportée par le service.
     547                        // -- On cherche si il existe une langue SPIP utilisable meilleure que la langue par défaut du service.
     548                        // -- Pour ce faire on a défini pour chaque code de langue spip, un ou deux codes de langue SPIP à utiliser
     549                        //    en cas d'absence de la langue concernée dans un ordre de priorité (index 0, puis index 1).
     550                        $langue_service = $config_service['langues']['defaut'];
     551                        if ($GLOBALS['rainette_config']['langues_alternatives'][$langue_spip]) {
     552                                foreach ($GLOBALS['rainette_config']['langues_alternatives'][$langue_spip] as $_langue_alternative) {
     553                                        $langue_service = array_search($_langue_alternative, $config_service['langues']['disponibles']);
     554                                        if ($langue_service !== false) {
     555                                                break;
     556                                        }
     557                                }
     558                        }
     559                }
     560        } else {
     561                $langue_service = $config_service['langues']['defaut'];
     562        }
     563
     564        return $langue_service;
     565}
     566
     567
     568function normaliser_cache($service, $lieu, $mode, $periodicite, $code_langue) {
     569
     570        // Création et/ou détermination du dossier de destination du cache en fonction du service
     571        $dossier_cache = sous_repertoire(_DIR_CACHE, 'rainette');
     572        $dossier_cache = sous_repertoire($dossier_cache, $service);
     573
     574        // Le nom du fichier cache est composé comme suit, chaque élement étant séparé par un underscore :
     575        // -- le nom du lieu normalisé (sans espace et dont tous les caractères non alphanumériques sont remplacés par un tiret
     576        // -- le nom du mode (infos, conditions ou previsions) accolé à la périodicité du cache pour les prévisions uniquement
     577        // -- la langue du résumé si il existe ou rien si aucune traduction n'est fournie par le service
     578        list($lieu_normalise,) = normaliser_lieu($lieu);
     579        $fichier_cache = $dossier_cache
     580                                         . str_replace(array(' ', ',', '+', '.', '/'), '-', $lieu_normalise)
     581                                         . '_' . $mode
     582                                         . ($periodicite ? strval($periodicite) : '')
     583                                         . ($code_langue ? '_' . strtolower($code_langue) : '')
     584                                         . '.txt';
     585
     586        return $fichier_cache;
    296587}
    297588
     
    321612        return array($lieu_normalise, $format_lieu);
    322613}
    323 
    324 
    325 function normaliser_cache($service, $lieu, $mode, $periodicite, $code_langue) {
    326 
    327         // Création et/ou détermination du dossier de destination du cache en fonction du service
    328         $dossier_cache = sous_repertoire(_DIR_CACHE, 'rainette');
    329         $dossier_cache = sous_repertoire($dossier_cache, $service);
    330 
    331         // Le nom du fichier cache est composé comme suit, chaque élement étant séparé par un underscore :
    332         // -- le nom du lieu normalisé (sans espace et dont tous les caractères non alphanumériques sont remplacés par un tiret
    333         // -- le nom du mode (infos, conditions ou previsions) accolé à la périodicité du cache pour les prévisions uniquement
    334         // -- la langue du résumé si il existe ou rien si aucune traduction n'est fournie par le service
    335         list($lieu_normalise,) = normaliser_lieu($lieu);
    336         $fichier_cache = $dossier_cache
    337                                          . str_replace(array(' ', ',', '+', '.', '/'), '-', $lieu_normalise)
    338                                          . '_' . $mode
    339                                          . ($periodicite ? strval($periodicite) : '')
    340                                          . ($code_langue ? '_' . strtolower($code_langue) : '')
    341                                          . '.txt';
    342 
    343         return $fichier_cache;
    344 }
  • _plugins_/rainette/trunk/paquet.xml

    r100584 r100689  
    22        prefix="rainette"
    33        categorie="divers"
    4         version="3.0.17"
     4        version="3.0.18"
    55        etat="test"
    66        compatibilite="]3.1.3;3.2.*]"
  • _plugins_/rainette/trunk/services/owm.php

    r100584 r100689  
    3232                'lien'  => 'http://openweathermap.org/',
    3333        ),
    34         'langue_service' => 'EN'
     34        'langues' => array(
     35                'disponibles' => array(
     36                        'bg' => 'bg',
     37                        'ca' => 'ca',
     38                        'de' => 'de',
     39                        'en' => 'en',
     40                        'es' => 'es',
     41                        'fi' => 'fi',
     42                        'fr' => 'fr',
     43                        'hr' => 'hr',
     44                        'it' => 'it',
     45                        'nl' => 'nl',
     46                        'pl' => 'pl',
     47                        'pt' => 'pt',
     48                        'ro' => 'ro',
     49                        'ru' => 'ru',
     50                        'sv' => 'sv',
     51                        'tr' => 'tr',
     52                        'uk' => 'uk',
     53                        'zh' => 'zh',
     54                        'zh_tw' => 'zh_tw',
     55                ),
     56                'defaut'      => 'en'
     57        )
    3558);
    3659
     
    155178}
    156179
    157 /**
    158  * @param string $lieu
    159  * @param string $mode
    160  * @param        $periodicite
    161  * @param        $configuration
    162  *
    163  * @return string
    164  */
    165 function owm_service2cache($lieu, $mode, $periodicite, $configuration) {
    166 
    167         // Identification de la langue du resume.
    168         $code_langue = ($configuration['condition'] == 'owm')
    169                 ? langue2code_owm($GLOBALS['spip_lang'])
    170                 : $configuration['langue_service'];
    171 
    172         // Construction du chemin du fichier cache
    173         include_spip('inc/rainette_normaliser');
    174         $fichier_cache = normaliser_cache('owm', $lieu, $mode, $periodicite, $code_langue);
    175 
    176         return $fichier_cache;
    177 }
    178180
    179181/**
     
    196198        // Le choix de la langue n'a d'interet que si on utilise le resume natif du service. Si ce n'est pas le cas
    197199        // on ne la precise pas et on laisse l'API renvoyer la langue par defaut
    198         $code_langue = ($configuration['condition'] == 'owm')
    199                 ? langue2code_owm($GLOBALS['spip_lang'])
    200                 : $configuration['langue_service'];
     200        include_spip('inc/rainette_normaliser');
     201        $code_langue = trouver_langue_service('owm', $configuration);
    201202
    202203        // On normalise le lieu et on récupère son format.
    203204        // Le service accepte la format ville,pays et le format latitude,longitude
    204         include_spip('inc/rainette_normaliser');
    205205        list($lieu_normalise, $format_lieu) = normaliser_lieu($lieu);
    206206        if ($format_lieu == 'latitude_longitude') {
     
    226226}
    227227
     228
    228229/**
    229230 * @param array $tableau
     
    237238        return $tableau;
    238239}
     240
    239241
    240242/**
     
    392394        return $icone;
    393395}
    394 
    395 /**
    396  * @param $langue
    397  *
    398  * @return string
    399  */
    400 function langue2code_owm($langue) {
    401         static $langue2owm = array(
    402                 'aa'           => array('', ''),      // afar
    403                 'ab'           => array('', ''),      // abkhaze
    404                 'af'           => array('', ''),      // afrikaans
    405                 'am'           => array('', ''),      // amharique
    406                 'an'           => array('', 'sp'),    // aragonais
    407                 'ar'           => array('', ''),      // arabe
    408                 'as'           => array('', ''),      // assamais
    409                 'ast'          => array('', 'sp'),    // asturien - iso 639-2
    410                 'ay'           => array('', ''),      // aymara
    411                 'az'           => array('', 'ru'),    // azeri
    412                 'ba'           => array('', ''),      // bashkir
    413                 'be'           => array('', 'ru'),    // bielorusse
    414                 'ber_tam'      => array('', ''),      // berbère
    415                 'ber_tam_tfng' => array('', ''),      // berbère tifinagh
    416                 'bg'           => array('bg', ''),    // bulgare
    417                 'bh'           => array('', ''),      // langues biharis
    418                 'bi'           => array('', ''),      // bichlamar
    419                 'bm'           => array('', ''),      // bambara
    420                 'bn'           => array('', ''),      // bengali
    421                 'bo'           => array('', ''),      // tibétain
    422                 'br'           => array('', 'fr'),    // breton
    423                 'bs'           => array('', ''),      // bosniaque
    424                 'ca'           => array('', 'sp'),    // catalan
    425                 'co'           => array('', 'fr'),    // corse
    426                 'cpf'          => array('', 'fr'),    // créole réunionais
    427                 'cpf_dom'      => array('', 'sp'),    // créole ???
    428                 'cpf_hat'      => array('', 'fr'),    // créole haïtien
    429                 'cs'           => array('cz', ''),    // tchèque
    430                 'cy'           => array('', 'en'),    // gallois
    431                 'da'           => array('', ''),      // danois
    432                 'de'           => array('de', ''),    // allemand
    433                 'dz'           => array('', ''),      // dzongkha
    434                 'el'           => array('', ''),      // grec moderne
    435                 'en'           => array('en', ''),    // anglais
    436                 'en_hx'        => array('', 'en'),    // anglais hacker
    437                 'en_sm'        => array('', 'en'),    // anglais smurf
    438                 'eo'           => array('', ''),      // esperanto
    439                 'es'           => array('sp', ''),    // espagnol
    440                 'es_co'        => array('', 'sp'),    // espagnol colombien
    441                 'es_mx_pop'    => array('', 'sp'),    // espagnol mexicain
    442                 'et'           => array('', ''),      // estonien
    443                 'eu'           => array('', 'fr'),    // basque
    444                 'fa'           => array('', ''),      // persan (farsi)
    445                 'ff'           => array('', ''),      // peul
    446                 'fi'           => array('fi', ''),    // finnois
    447                 'fj'           => array('', 'en'),    // fidjien
    448                 'fo'           => array('', ''),      // féroïen
    449                 'fon'          => array('', ''),      // fon
    450                 'fr'           => array('fr', ''),    // français
    451                 'fr_sc'        => array('', 'fr'),    // français schtroumpf
    452                 'fr_lpc'       => array('', 'fr'),    // français langue parlée
    453                 'fr_lsf'       => array('', 'fr'),    // français langue des signes
    454                 'fr_spl'       => array('', 'fr'),    // français simplifié
    455                 'fr_tu'        => array('', 'fr'),    // français copain
    456                 'fy'           => array('', 'de'),    // frison occidental
    457                 'ga'           => array('', 'en'),    // irlandais
    458                 'gd'           => array('', 'en'),    // gaélique écossais
    459                 'gl'           => array('', 'sp'),    // galicien
    460                 'gn'           => array('', ''),      // guarani
    461                 'grc'          => array('', ''),      // grec ancien
    462                 'gu'           => array('', ''),      // goudjrati
    463                 'ha'           => array('', ''),      // haoussa
    464                 'hac'          => array('', ''),      // Kurdish-Horami
    465                 'hbo'          => array('', ''),      // hebreu classique ou biblique
    466                 'he'           => array('', ''),      // hébreu
    467                 'hi'           => array('', ''),      // hindi
    468                 'hr'           => array('', ''),      // croate
    469                 'hu'           => array('', ''),      // hongrois
    470                 'hy'           => array('', ''),      // armenien
    471                 'ia'           => array('', ''),      // interlingua (langue auxiliaire internationale)
    472                 'id'           => array('', ''),      // indonésien
    473                 'ie'           => array('', ''),      // interlingue
    474                 'ik'           => array('', ''),      // inupiaq
    475                 'is'           => array('', ''),      // islandais
    476                 'it'           => array('it', ''),    // italien
    477                 'it_fem'       => array('', 'it'),    // italien féminin
    478                 'iu'           => array('', ''),      // inuktitut
    479                 'ja'           => array('', ''),      // japonais
    480                 'jv'           => array('', ''),      // javanais
    481                 'ka'           => array('', ''),      // géorgien
    482                 'kk'           => array('', ''),      // kazakh
    483                 'kl'           => array('', ''),      // groenlandais
    484                 'km'           => array('', ''),      // khmer central
    485                 'kn'           => array('', ''),      // Kannada
    486                 'ko'           => array('', ''),      // coréen
    487                 'ks'           => array('', ''),      // kashmiri
    488                 'ku'           => array('', ''),      // kurde
    489                 'ky'           => array('', ''),      // kirghiz
    490                 'la'           => array('', ''),      // latin
    491                 'lb'           => array('', 'fr'),    // luxembourgeois
    492                 'ln'           => array('', ''),      // lingala
    493                 'lo'           => array('', ''),      // lao
    494                 'lt'           => array('', ''),      // lituanien
    495                 'lu'           => array('', ''),      // luba-katanga
    496                 'lv'           => array('', ''),      // letton
    497                 'man'          => array('', ''),      // mandingue
    498                 'mfv'          => array('', ''),      // manjaque - iso-639-3
    499                 'mg'           => array('', ''),      // malgache
    500                 'mi'           => array('', ''),      // maori
    501                 'mk'           => array('', ''),      // macédonien
    502                 'ml'           => array('', ''),      // malayalam
    503                 'mn'           => array('', ''),      // mongol
    504                 'mo'           => array('', 'ro'),    // moldave ??? normalement c'est ro comme le roumain
    505                 'mos'          => array('', ''),      // moré - iso 639-2
    506                 'mr'           => array('', ''),      // marathe
    507                 'ms'           => array('', ''),      // malais
    508                 'mt'           => array('', 'en'),    // maltais
    509                 'my'           => array('', ''),      // birman
    510                 'na'           => array('', ''),      // nauruan
    511                 'nap'          => array('', 'it'),    // napolitain - iso 639-2
    512                 'ne'           => array('', ''),      // népalais
    513                 'nqo'          => array('', ''),      // n’ko - iso 639-3
    514                 'nl'           => array('nl', ''),    // néerlandais
    515                 'no'           => array('', ''),      // norvégien
    516                 'nb'           => array('', ''),      // norvégien bokmål
    517                 'nn'           => array('', ''),      // norvégien nynorsk
    518                 'oc'           => array('', 'fr'),    // occitan
    519                 'oc_lnc'       => array('', 'fr'),    // occitan languedocien
    520                 'oc_ni'        => array('', 'fr'),    // occitan niçard
    521                 'oc_ni_la'     => array('', 'fr'),    // occitan niçard
    522                 'oc_prv'       => array('', 'fr'),    // occitan provençal
    523                 'oc_gsc'       => array('', 'fr'),    // occitan gascon
    524                 'oc_lms'       => array('', 'fr'),    // occitan limousin
    525                 'oc_auv'       => array('', 'fr'),    // occitan auvergnat
    526                 'oc_va'        => array('', 'fr'),    // occitan vivaro-alpin
    527                 'om'           => array('', ''),      // galla
    528                 'or'           => array('', ''),      // oriya
    529                 'pa'           => array('', ''),      // pendjabi
    530                 'pbb'          => array('', ''),      // Nasa Yuwe (páez) - iso 639-3
    531                 'pl'           => array('pl', ''),    // polonais
    532                 'ps'           => array('', ''),      // pachto
    533                 'pt'           => array('pt', ''),    // portugais
    534                 'pt_br'        => array('', 'pt'),    // portugais brésilien
    535                 'qu'           => array('', ''),      // quechua
    536                 'rm'           => array('', ''),      // romanche
    537                 'rn'           => array('', ''),      // rundi
    538                 'ro'           => array('ro', ''),    // roumain
    539                 'roa'          => array('', 'fr'),    // langues romanes (ch'ti) - iso 639-2
    540                 'ru'           => array('ru', ''),    // russe
    541                 'rw'           => array('', ''),      // rwanda
    542                 'sa'           => array('', ''),      // sanskrit
    543                 'sc'           => array('', 'it'),    // sarde
    544                 'scn'          => array('', 'it'),    // sicilien - iso 639-2
    545                 'sd'           => array('', ''),      // sindhi
    546                 'sg'           => array('', ''),      // sango
    547                 'sh'           => array('', ''),      // serbo-croate
    548                 'sh_latn'      => array('', ''),      // serbo-croate latin
    549                 'sh_cyrl'      => array('', ''),      // serbo-croate cyrillique
    550                 'si'           => array('', ''),      // singhalais
    551                 'sk'           => array('', ''),      // slovaque
    552                 'sl'           => array('', ''),      // slovène
    553                 'sm'           => array('', 'en'),    // samoan
    554                 'sn'           => array('', ''),      // shona
    555                 'so'           => array('', ''),      // somali
    556                 'sq'           => array('', ''),      // albanais
    557                 'sr'           => array('', ''),      // serbe
    558                 'src'          => array('', 'it'),    // sarde logoudorien - iso 639-3
    559                 'sro'          => array('', 'it'),    // sarde campidanien - iso 639-3
    560                 'ss'           => array('', ''),      // swati
    561                 'st'           => array('', ''),      // sotho du Sud
    562                 'su'           => array('', ''),      // soundanais
    563                 'sv'           => array('se', ''),    // suédois
    564                 'sw'           => array('', ''),      // swahili
    565                 'ta'           => array('', ''),      // tamoul
    566                 'te'           => array('', ''),      // télougou
    567                 'tg'           => array('', ''),      // tadjik
    568                 'th'           => array('', ''),      // thaï
    569                 'ti'           => array('', ''),      // tigrigna
    570                 'tk'           => array('', ''),      // turkmène
    571                 'tl'           => array('', ''),      // tagalog
    572                 'tn'           => array('', ''),      // tswana
    573                 'to'           => array('', ''),      // tongan (Îles Tonga)
    574                 'tr'           => array('tr', ''),    // turc
    575                 'ts'           => array('', ''),      // tsonga
    576                 'tt'           => array('', ''),      // tatar
    577                 'tw'           => array('', ''),      // twi
    578                 'ty'           => array('', 'fr'),    // tahitien
    579                 'ug'           => array('', ''),      // ouïgour
    580                 'uk'           => array('ua', ''),    // ukrainien
    581                 'ur'           => array('', ''),      // ourdou
    582                 'uz'           => array('', ''),      // ouszbek
    583                 'vi'           => array('', ''),      // vietnamien
    584                 'vo'           => array('', ''),      // volapük
    585                 'wa'           => array('', 'fr'),    // wallon
    586                 'wo'           => array('', ''),      // wolof
    587                 'xh'           => array('', ''),      // xhosa
    588                 'yi'           => array('', ''),      // yiddish
    589                 'yo'           => array('', ''),      // yoruba
    590                 'za'           => array('', 'zh_cn'), // zhuang
    591                 'zh'           => array('zh_cn', ''), // chinois (ecriture simplifiee)
    592                 'zh_tw'        => array('zh_tw', ''), // chinois taiwan (ecriture traditionnelle)
    593                 'zu'           => array('', '')       // zoulou
    594         );
    595 
    596         $code = $GLOBALS['rainette_owm_config']['service']['langue_service'];
    597         if (array_key_exists($langue, $langue2owm)) {
    598                 if ($c0 = $langue2owm[$langue][0]) {
    599                         $code = strtolower($c0);
    600                 } elseif ($c1 = $langue2owm[$langue][1]) {
    601                         $code = strtolower($c1);
    602                 }
    603         }
    604 
    605         return $code;
    606 }
  • _plugins_/rainette/trunk/services/weather.php

    r100584 r100689  
    2929                'lien'  => 'http://www.weather.com/',
    3030        ),
    31         'langue_service' => 'en'
     31        'langues' => array(
     32                'disponibles' => array(),
     33                'defaut'      => 'en'
     34        )
    3235);
    3336
     
    151154 * @return string
    152155 */
    153 function weather_service2cache($lieu, $mode, $periodicite, $configuration) {
    154 
    155         // Identification de la langue du resume : pas de traduction pour ce service
    156         // le résumé est toujours en anglais.
    157         $code_langue = $configuration['langue_service'];
    158 
    159         // Construction du chemin du fichier cache
    160         include_spip('inc/rainette_normaliser');
    161         $fichier_cache = normaliser_cache('weather', $lieu, $mode, $periodicite, $code_langue);
    162         return $fichier_cache;
    163 }
    164 
    165 
    166 /**
    167  * @param $lieu
    168  * @param $mode
    169  * @param $periodicite
    170  * @param $configuration
    171  *
    172  * @return string
    173  */
    174156function weather_service2url($lieu, $mode, $periodicite, $configuration) {
    175157
  • _plugins_/rainette/trunk/services/wunderground.php

    r100584 r100689  
    2727// Ces valeurs sont applicables à tous les modes.
    2828$GLOBALS['rainette_wunderground_config']['service'] = array(
    29         'defauts'        => array(
     29        'defauts' => array(
    3030                'inscription' => '',
    3131                'unite'       => 'm',
     
    3333                'theme'       => 'a',
    3434        ),
    35         'credits'        => array(
    36                 'titre' => null,
    37                 'logo'  => 'wunderground-126.png',
    38                 'lien'  => 'http://www.wunderground.com/',
    39         ),
    40         'langue_service' => 'EN'
     35        'credits' => array(
     36                'titre'       => null,
     37                'logo'        => 'wunderground-126.png',
     38                'lien'        => 'http://www.wunderground.com/',
     39        ),
     40        'langues' => array(
     41                'disponibles' => array(
     42                        'AF' => 'af',
     43                        'AR' => 'ar',
     44                        'AZ' => 'az',
     45                        'BY' => 'be',
     46                        'BU' => 'bg',
     47                        'CA' => 'ca',
     48                        'HT' => 'cpf_hat',
     49                        'CZ' => 'cs',
     50                        'CY' => 'cy',
     51                        'DK' => 'da',
     52                        'DL' => 'de',
     53                        'GR' => 'el',
     54                        'EN' => 'en',
     55                        'EO' => 'eo',
     56                        'SP' => 'es',
     57                        'ET' => 'et',
     58                        'EU' => 'eu',
     59                        'FA' => 'fa',
     60                        'FI' => 'fi',
     61                        'FR' => 'fr',
     62                        'IR' => 'ga',
     63                        'GZ' => 'gl',
     64                        'GU' => 'gu',
     65                        'IL' => 'he',
     66                        'HI' => 'hi',
     67                        'CR' => 'hr',
     68                        'HU' => 'hu',
     69                        'HY' => 'hy',
     70                        'ID' => 'id',
     71                        'IS' => 'is',
     72                        'IT' => 'it',
     73                        'JP' => 'ja',
     74                        'JW' => 'jv',
     75                        'KA' => 'ka',
     76                        'KM' => 'km',
     77                        'KR' => 'ko',
     78                        'KU' => 'ku',
     79                        'LA' => 'la',
     80                        'LT' => 'lt',
     81                        'LV' => 'lv',
     82                        'GM' => 'man',
     83                        'MI' => 'mi',
     84                        'MK' => 'mk',
     85                        'MN' => 'mn',
     86                        'MR' => 'mr',
     87                        'MT' => 'mt',
     88                        'MY' => 'my',
     89                        'NL' => 'nl',
     90                        'NO' => 'no',
     91                        'OC' => 'oc',
     92                        'PA' => 'pa',
     93                        'PL' => 'pl',
     94                        'PS' => 'ps',
     95                        'BR' => 'pt',
     96                        'RO' => 'ro',
     97                        'RU' => 'ru',
     98                        'SK' => 'sk',
     99                        'SL' => 'sl',
     100                        'AL' => 'sq',
     101                        'SR' => 'sr',
     102                        'SW' => 'sv',
     103                        'SI' => 'sw',
     104                        'TH' => 'th',
     105                        'TK' => 'tk',
     106                        'TL' => 'tl',
     107                        'TR' => 'tr',
     108                        'TT' => 'tt',
     109                        'UA' => 'uk',
     110                        'UZ' => 'uz',
     111                        'VU' => 'vi',
     112                        'SN' => 'wo',
     113                        'YI' => 'yi',
     114                        'CN' => 'zh',
     115                        'TW' => 'zh_tw',
     116                ),
     117                'defaut'      => 'EN'
     118        )
    41119);
    42120
     
    161239
    162240/**
    163  * Construit le nom du cache en fonction du lieu, du type de données et de la langue utilisée par le site.
    164  *
    165  * @api
    166  *
    167  * @param string $lieu
    168  *        Lieu pour lequel on requiert le nom du cache.
    169  * @param string $mode
    170  *        Type de données météorologiques. Les valeurs possibles sont `infos`, `conditions` ou `previsions`.
    171  * @param int    $periodicite
    172  *        La périodicité horaire des prévisions :
    173  *            - `24`, ou `1`, pour le mode `previsions`
    174  *            - `0`, pour les modes `conditions` et `infos`
    175  * @param array  $configuration
    176  *        Configuration complète du service, statique et utilisateur.
    177  *
    178  * @return string
    179  *        Chemin complet du fichier cache.
    180  */
    181 function wunderground_service2cache($lieu, $mode, $periodicite, $configuration) {
    182 
    183         // Identification de la langue du resume.
    184         $code_langue = ($configuration['condition'] == 'wunderground')
    185                 ? langue2code_wunderground($GLOBALS['spip_lang'])
    186                 : $configuration['langue_service'];
    187 
    188         // Construction du chemin du fichier cache
    189         include_spip('inc/rainette_normaliser');
    190         $fichier_cache = normaliser_cache('wunderground', $lieu, $mode, $periodicite, $code_langue);
    191 
    192         return $fichier_cache;
    193 }
    194 
    195 /**
    196241 * Contruit l'url de la requête en fonction du lieu, du mode et de la périodicité demandés.
    197242 *
     
    251296        // Le choix de la langue n'a d'interet que si on utilise le resume natif du service. Si ce n'est pas
    252297        // le cas on demande à l'API de renvoyer la langue par defaut
    253         $code_langue = ($configuration['condition'] == 'wunderground')
    254                 ? langue2code_wunderground($GLOBALS['spip_lang'])
    255                 : $configuration['langue_service'];
     298        $code_langue = trouver_langue_service('wunderground', $configuration);
    256299
    257300        $url = _RAINETTE_WUNDERGROUND_URL_BASE_REQUETE
     
    452495        return $icone;
    453496}
    454 
    455 /**
    456  * @param $langue
    457  *
    458  * @return string
    459  */
    460 function langue2code_wunderground($langue) {
    461         static $langue2wunderground = array(
    462                 'aa'           => array('', ''),     // afar
    463                 'ab'           => array('', ''),     // abkhaze
    464                 'af'           => array('AF', ''),   // afrikaans
    465                 'am'           => array('', ''),     // amharique
    466                 'an'           => array('', 'SP'),   // aragonais
    467                 'ar'           => array('AR', ''),   // arabe
    468                 'as'           => array('', ''),     // assamais
    469                 'ast'          => array('', 'SP'),   // asturien - iso 639-2
    470                 'ay'           => array('', ''),     // aymara
    471                 'az'           => array('AZ', ''),   // azeri
    472                 'ba'           => array('', ''),     // bashkir
    473                 'be'           => array('BY', ''),   // bielorusse
    474                 'ber_tam'      => array('', ''),     // berbère
    475                 'ber_tam_tfng' => array('', ''),     // berbère tifinagh
    476                 'bg'           => array('BU', ''),   // bulgare
    477                 'bh'           => array('', ''),     // langues biharis
    478                 'bi'           => array('', ''),     // bichlamar
    479                 'bm'           => array('', ''),     // bambara
    480                 'bn'           => array('', ''),     // bengali
    481                 'bo'           => array('', ''),     // tibétain
    482                 'br'           => array('', 'FR'),   // breton
    483                 'bs'           => array('', ''),     // bosniaque
    484                 'ca'           => array('CA', ''),   // catalan
    485                 'co'           => array('', 'FR'),   // corse
    486                 'cpf'          => array('', 'FR'),   // créole réunionais
    487                 'cpf_dom'      => array('', 'FR'),   // créole ???
    488                 'cpf_hat'      => array('HT', ''),   // créole haïtien
    489                 'cs'           => array('CZ', ''),   // tchèque
    490                 'cy'           => array('CY', ''),   // gallois
    491                 'da'           => array('DK', ''),   // danois
    492                 'de'           => array('DL', ''),   // allemand
    493                 'dz'           => array('', ''),     // dzongkha
    494                 'el'           => array('GR', ''),   // grec moderne
    495                 'en'           => array('EN', ''),   // anglais
    496                 'en_hx'        => array('', 'EN'),   // anglais hacker
    497                 'en_sm'        => array('', 'EN'),   // anglais smurf
    498                 'eo'           => array('EO', ''),   // esperanto
    499                 'es'           => array('SP', ''),   // espagnol
    500                 'es_co'        => array('', 'SP'),   // espagnol colombien
    501                 'es_mx_pop'    => array('', 'SP'),   // espagnol mexicain
    502                 'et'           => array('ET', ''),   // estonien
    503                 'eu'           => array('EU', ''),   // basque
    504                 'fa'           => array('FA', ''),   // persan (farsi)
    505                 'ff'           => array('', ''),     // peul
    506                 'fi'           => array('FI', ''),   // finnois
    507                 'fj'           => array('', 'EN'),   // fidjien
    508                 'fo'           => array('', 'DK'),   // féroïen
    509                 'fon'          => array('', ''),     // fon
    510                 'fr'           => array('FR', ''),   // français
    511                 'fr_sc'        => array('', 'FR'),   // français schtroumpf
    512                 'fr_lpc'       => array('', 'FR'),   // français langue parlée
    513                 'fr_lsf'       => array('', 'FR'),   // français langue des signes
    514                 'fr_spl'       => array('', 'FR'),   // français simplifié
    515                 'fr_tu'        => array('', 'FR'),   // français copain
    516                 'fy'           => array('', 'DL'),   // frison occidental
    517                 'ga'           => array('IR', ''),   // irlandais
    518                 'gd'           => array('', 'EN'),   // gaélique écossais
    519                 'gl'           => array('GZ', ''),   // galicien
    520                 'gn'           => array('', ''),     // guarani
    521                 'grc'          => array('', 'GR'),   // grec ancien
    522                 'gu'           => array('GU', ''),   // goudjrati
    523                 'ha'           => array('', ''),     // haoussa
    524                 'hac'          => array('', 'KU'),   // Kurdish-Horami
    525                 'hbo'          => array('', 'IL'),   // hebreu classique ou biblique
    526                 'he'           => array('IL', ''),   // hébreu
    527                 'hi'           => array('HI', ''),   // hindi
    528                 'hr'           => array('CR', ''),   // croate
    529                 'hu'           => array('HU', ''),   // hongrois
    530                 'hy'           => array('HY', ''),   // armenien
    531                 'ia'           => array('', ''),     // interlingua (langue auxiliaire internationale)
    532                 'id'           => array('ID', ''),   // indonésien
    533                 'ie'           => array('', ''),     // interlingue
    534                 'ik'           => array('', ''),     // inupiaq
    535                 'is'           => array('IS', ''),   // islandais
    536                 'it'           => array('IT', ''),   // italien
    537                 'it_fem'       => array('', 'IT'),   // italien féminin
    538                 'iu'           => array('', ''),     // inuktitut
    539                 'ja'           => array('JP', ''),   // japonais
    540                 'jv'           => array('JW', ''),   // javanais
    541                 'ka'           => array('KA', ''),   // géorgien
    542                 'kk'           => array('', ''),     // kazakh
    543                 'kl'           => array('', 'DK'),   // groenlandais
    544                 'km'           => array('KM', ''),   // khmer central
    545                 'kn'           => array('', ''),     // Kannada
    546                 'ko'           => array('KR', ''),   // coréen
    547                 'ks'           => array('', ''),     // kashmiri
    548                 'ku'           => array('KU', ''),   // kurde
    549                 'ky'           => array('', ''),     // kirghiz
    550                 'la'           => array('LA', ''),   // latin
    551                 'lb'           => array('', 'FR'),   // luxembourgeois
    552                 'ln'           => array('', ''),     // lingala
    553                 'lo'           => array('', ''),     // lao
    554                 'lt'           => array('LT', ''),   // lituanien
    555                 'lu'           => array('', ''),     // luba-katanga
    556                 'lv'           => array('LV', ''),   // letton
    557                 'man'          => array('GM', ''),   // mandingue
    558                 'mfv'          => array('', ''),     // manjaque - iso-639-3
    559                 'mg'           => array('', ''),     // malgache
    560                 'mi'           => array('MI', ''),   // maori
    561                 'mk'           => array('MK', ''),   // macédonien
    562                 'ml'           => array('', ''),     // malayalam
    563                 'mn'           => array('MN', ''),   // mongol
    564                 'mo'           => array('', 'RO'),   // moldave ??? normalement c'est ro comme le roumain
    565                 'mos'          => array('', ''),     // moré - iso 639-2
    566                 'mr'           => array('MR', ''),   // marathe
    567                 'ms'           => array('', ''),     // malais
    568                 'mt'           => array('MT', ''),   // maltais
    569                 'my'           => array('MY', ''),   // birman
    570                 'na'           => array('', ''),     // nauruan
    571                 'nap'          => array('', 'IT'),   // napolitain - iso 639-2
    572                 'ne'           => array('', ''),     // népalais
    573                 'nqo'          => array('', ''),     // n’ko - iso 639-3
    574                 'nl'           => array('NL', ''),   // néerlandais
    575                 'no'           => array('NO', ''),   // norvégien
    576                 'nb'           => array('', 'NO'),   // norvégien bokmål
    577                 'nn'           => array('', 'NO'),   // norvégien nynorsk
    578                 'oc'           => array('OC', ''),   // occitan
    579                 'oc_lnc'       => array('', 'OC'),   // occitan languedocien
    580                 'oc_ni'        => array('', 'OC'),   // occitan niçard
    581                 'oc_ni_la'     => array('', 'OC'),   // occitan niçard
    582                 'oc_prv'       => array('', 'OC'),   // occitan provençal
    583                 'oc_gsc'       => array('', 'OC'),   // occitan gascon
    584                 'oc_lms'       => array('', 'OC'),   // occitan limousin
    585                 'oc_auv'       => array('', 'OC'),   // occitan auvergnat
    586                 'oc_va'        => array('', 'OC'),   // occitan vivaro-alpin
    587                 'om'           => array('', ''),     // galla
    588                 'or'           => array('', ''),     // oriya
    589                 'pa'           => array('PA', ''),   // pendjabi
    590                 'pbb'          => array('', ''),     // Nasa Yuwe (páez) - iso 639-3
    591                 'pl'           => array('PL', ''),   // polonais
    592                 'ps'           => array('PS', ''),   // pachto
    593                 'pt'           => array('BR', ''),   // portugais
    594                 'pt_br'        => array('', 'BR'),   // portugais brésilien
    595                 'qu'           => array('', ''),     // quechua
    596                 'rm'           => array('', ''),     // romanche
    597                 'rn'           => array('', ''),     // rundi
    598                 'ro'           => array('RO', ''),   // roumain
    599                 'roa'          => array('chti', ''), // langues romanes (ch'ti) - iso 639-2
    600                 'ru'           => array('RU', ''),   // russe
    601                 'rw'           => array('', ''),     // rwanda
    602                 'sa'           => array('', ''),     // sanskrit
    603                 'sc'           => array('', 'IT'),   // sarde
    604                 'scn'          => array('', 'IT'),   // sicilien - iso 639-2
    605                 'sd'           => array('', ''),     // sindhi
    606                 'sg'           => array('', ''),     // sango
    607                 'sh'           => array('', 'SR'),   // serbo-croate
    608                 'sh_latn'      => array('', 'SR'),   // serbo-croate latin
    609                 'sh_cyrl'      => array('', 'SR'),   // serbo-croate cyrillique
    610                 'si'           => array('', ''),     // singhalais
    611                 'sk'           => array('SK', ''),   // slovaque
    612                 'sl'           => array('SL', ''),   // slovène
    613                 'sm'           => array('', ''),     // samoan
    614                 'sn'           => array('', ''),     // shona
    615                 'so'           => array('', ''),     // somali
    616                 'sq'           => array('AL', ''),   // albanais
    617                 'sr'           => array('SR', ''),   // serbe
    618                 'src'          => array('', 'IT'),   // sarde logoudorien - iso 639-3
    619                 'sro'          => array('', 'IT'),   // sarde campidanien - iso 639-3
    620                 'ss'           => array('', ''),     // swati
    621                 'st'           => array('', ''),     // sotho du Sud
    622                 'su'           => array('', ''),     // soundanais
    623                 'sv'           => array('SW', ''),   // suédois
    624                 'sw'           => array('SI', ''),   // swahili
    625                 'ta'           => array('', ''),     // tamoul
    626                 'te'           => array('', ''),     // télougou
    627                 'tg'           => array('', ''),     // tadjik
    628                 'th'           => array('TH', ''),   // thaï
    629                 'ti'           => array('', ''),     // tigrigna
    630                 'tk'           => array('TK', ''),   // turkmène
    631                 'tl'           => array('TL', ''),   // tagalog
    632                 'tn'           => array('', ''),     // tswana
    633                 'to'           => array('', ''),     // tongan (Îles Tonga)
    634                 'tr'           => array('TR', ''),   // turc
    635                 'ts'           => array('', ''),     // tsonga
    636                 'tt'           => array('TT', ''),   // tatar
    637                 'tw'           => array('', ''),     // twi
    638                 'ty'           => array('', 'FR'),   // tahitien
    639                 'ug'           => array('', ''),     // ouïgour
    640                 'uk'           => array('UA', ''),   // ukrainien
    641                 'ur'           => array('', ''),     // ourdou
    642                 'uz'           => array('UZ', ''),   // ouszbek
    643                 'vi'           => array('VU', ''),   // vietnamien
    644                 'vo'           => array('', ''),     // volapük
    645                 'wa'           => array('', 'FR'),   // wallon
    646                 'wo'           => array('SN', ''),   // wolof
    647                 'xh'           => array('', ''),     // xhosa
    648                 'yi'           => array('YI', ''),   // yiddish
    649                 'yo'           => array('', ''),     // yoruba
    650                 'za'           => array('', 'CN'),   // zhuang
    651                 'zh'           => array('CN', ''),   // chinois (ecriture simplifiee)
    652                 'zh_tw'        => array('TW', ''),   // chinois taiwan (ecriture traditionnelle)
    653                 'zu'           => array('', '')      // zoulou
    654         );
    655 
    656         $code = $GLOBALS['rainette_wunderground_config']['service']['langue_service'];
    657         if (array_key_exists($langue, $langue2wunderground)) {
    658                 if ($c0 = $langue2wunderground[$langue][0]) {
    659                         $code = strtoupper($c0);
    660                 } elseif ($c1 = $langue2wunderground[$langue][1]) {
    661                         $code = strtoupper($c1);
    662                 }
    663         }
    664 
    665         return $code;
    666 }
  • _plugins_/rainette/trunk/services/wwo.php

    r100584 r100689  
    3030                'lien'  => 'http://www.worldweatheronline.com/',
    3131        ),
    32         'langue_service' => 'en',
     32        'langues' => array(
     33                'disponibles' => array(
     34                        'ar' => 'ar',
     35                        'bg' => 'bg',
     36                        'bn' => 'bn',
     37                        'cs' => 'cs',
     38                        'da' => 'da',
     39                        'de' => 'de',
     40                        'el' => 'el',
     41                        'en' => 'en',
     42                        'es' => 'es',
     43                        'fi' => 'fi',
     44                        'fr' => 'fr',
     45                        'hi' => 'hi',
     46                        'hu' => 'hu',
     47                        'it' => 'it',
     48                        'ja' => 'ja',
     49                        'jv' => 'jv',
     50                        'ko' => 'ko',
     51                        'mr' => 'mr',
     52                        'nl' => 'nl',
     53                        'pa' => 'pa',
     54                        'pl' => 'pl',
     55                        'pt' => 'pt',
     56                        'ro' => 'ro',
     57                        'ru' => 'ru',
     58                        'si' => 'si',
     59                        'sk' => 'sk',
     60                        'sr' => 'sr',
     61                        'sv' => 'sv',
     62                        'ta' => 'ta',
     63                        'te' => 'te',
     64                        'tr' => 'tr',
     65                        'uk' => 'uk',
     66                        'ur' => 'ur',
     67                        'vi' => 'vi',
     68                        'zh' => 'zh',
     69                        'zh_tw' => 'zh_tw',
     70                        'zu' => 'zu',
     71                ),
     72                'defaut'      => 'en'
     73        )
    3374);
    3475
     
    162203
    163204/**
    164  * Construit le nom du cache en fonction du lieu, du type de données et de la langue utilisée par le site.
    165  *
    166  * @api
    167  *
    168  * @param string $lieu
    169  *        Lieu pour lequel on requiert le nom du cache.
    170  * @param string $mode
    171  *        Type de données météorologiques. Les valeurs possibles sont `infos`, `conditions` ou `previsions`.
    172  * @param int    $periodicite
    173  *        La périodicité horaire des prévisions :
    174  *        - `24`, `12`, `6`, `3` ou `1`, pour le mode `previsions`
    175  *        - `0`, pour les modes `conditions` et `infos`
    176  * @param array  $configuration
    177  *        Configuration complète du service, statique et utilisateur.
    178  *
    179  * @return string
    180  *        Chemin complet du fichier cache.
    181  */
    182 function wwo_service2cache($lieu, $mode, $periodicite, $configuration) {
    183 
    184         // Identification de la langue du resume.
    185         $code_langue = ($configuration['condition'] == 'wwo')
    186                 ? langue2code_wwo($GLOBALS['spip_lang'])
    187                 : $configuration['langue_service'];
    188 
    189         // Construction du chemin du fichier cache
    190         include_spip('inc/rainette_normaliser');
    191         $fichier_cache = normaliser_cache('wwo', $lieu, $mode, $periodicite, $code_langue);
    192 
    193         return $fichier_cache;
    194 }
    195 
    196 
    197 /**
    198205 * Construit l'url de la requête correspondant au lieu, au type de données et à la configuration utilisateur
    199206 * du service (par exemple, le code d'inscription, le format des résultats...).
     
    219226
    220227        // Identification de la langue du resume.
    221         $code_langue = ($configuration['condition'] == 'wwo')
    222                 ? langue2code_wwo($GLOBALS['spip_lang'])
    223                 : $configuration['langue_service'];
     228        include_spip('inc/rainette_normaliser');
     229        $code_langue = trouver_langue_service('wwo', $configuration);
    224230
    225231        // On normalise le lieu et on récupère son format.
    226232        // Le service accepte la format ville,pays, le format latitude,longitude et le format adresse IP.
    227233        // Néanmoins, la query a toujours la même forme; il n'est donc pas nécessaire de gérer le format.
    228         include_spip('inc/rainette_normaliser');
    229234        list($lieu_normalise,) = normaliser_lieu($lieu);
    230235
     
    379384                }
    380385        }
    381 }
    382 
    383 /**
    384  * @param $langue
    385  *
    386  * @return string
    387  */
    388 function langue2code_wwo($langue) {
    389         static $langue2wwo = array(
    390                 'aa'           => array('', ''),      // afar
    391                 'ab'           => array('', ''),      // abkhaze
    392                 'af'           => array('', ''),      // afrikaans
    393                 'am'           => array('', ''),      // amharique
    394                 'an'           => array('', 'es'),    // aragonais
    395                 'ar'           => array('ar', ''),    // arabe
    396                 'as'           => array('', ''),      // assamais
    397                 'ast'          => array('', 'es'),    // asturien - iso 639-2
    398                 'ay'           => array('', ''),      // aymara
    399                 'az'           => array('', ''),      // azeri
    400                 'ba'           => array('', ''),      // bashkir
    401                 'be'           => array('', ''),      // bielorusse
    402                 'ber_tam'      => array('', ''),      // berbère
    403                 'ber_tam_tfng' => array('', ''),      // berbère tifinagh
    404                 'bg'           => array('bg', ''),    // bulgare
    405                 'bh'           => array('', ''),      // langues biharis
    406                 'bi'           => array('', ''),      // bichlamar
    407                 'bm'           => array('', ''),      // bambara
    408                 'bn'           => array('bn', ''),    // bengali
    409                 'bo'           => array('', ''),      // tibétain
    410                 'br'           => array('', 'fr'),    // breton
    411                 'bs'           => array('', ''),      // bosniaque
    412                 'ca'           => array('', 'es'),    // catalan
    413                 'co'           => array('', 'fr'),    // corse
    414                 'cpf'          => array('', 'fr'),    // créole réunionais
    415                 'cpf_dom'      => array('', 'fr'),    // créole ???
    416                 'cpf_hat'      => array('', ''),      // créole haïtien
    417                 'cs'           => array('cs', ''),    // tchèque
    418                 'cy'           => array('', 'en'),    // gallois
    419                 'da'           => array('', ''),      // danois
    420                 'de'           => array('de', ''),    // allemand
    421                 'dz'           => array('', ''),      // dzongkha
    422                 'el'           => array('el', ''),    // grec moderne
    423                 'en'           => array('en', ''),    // anglais
    424                 'en_hx'        => array('', 'en'),    // anglais hacker
    425                 'en_sm'        => array('', 'en'),    // anglais smurf
    426                 'eo'           => array('', ''),      // esperanto
    427                 'es'           => array('es', ''),    // espagnol
    428                 'es_co'        => array('', 'es'),    // espagnol colombien
    429                 'es_mx_pop'    => array('', 'es'),    // espagnol mexicain
    430                 'et'           => array('', ''),      // estonien
    431                 'eu'           => array('', ''),      // basque
    432                 'fa'           => array('', ''),      // persan (farsi)
    433                 'ff'           => array('', ''),      // peul
    434                 'fi'           => array('fi', ''),    // finnois
    435                 'fj'           => array('', ''),      // fidjien
    436                 'fo'           => array('', ''),      // féroïen
    437                 'fon'          => array('', ''),      // fon
    438                 'fr'           => array('fr', ''),    // français
    439                 'fr_sc'        => array('', 'fr'),    // français schtroumpf
    440                 'fr_lpc'       => array('', 'fr'),    // français langue parlée
    441                 'fr_lsf'       => array('', 'fr'),    // français langue des signes
    442                 'fr_spl'       => array('', 'fr'),    // français simplifié
    443                 'fr_tu'        => array('', 'fr'),    // français copain
    444                 'fy'           => array('', 'de'),    // frison occidental
    445                 'ga'           => array('', 'en'),    // irlandais
    446                 'gd'           => array('', 'en'),    // gaélique écossais
    447                 'gl'           => array('', 'es'),    // galicien
    448                 'gn'           => array('', ''),      // guarani
    449                 'grc'          => array('', 'el'),    // grec ancien
    450                 'gu'           => array('', ''),      // goudjrati
    451                 'ha'           => array('', ''),      // haoussa
    452                 'hac'          => array('', ''),      // Kurdish-Horami
    453                 'hbo'          => array('', ''),      // hebreu classique ou biblique
    454                 'he'           => array('', ''),      // hébreu
    455                 'hi'           => array('hi', ''),    // hindi
    456                 'hr'           => array('', ''),      // croate
    457                 'hu'           => array('hu', ''),    // hongrois
    458                 'hy'           => array('', ''),      // armenien
    459                 'ia'           => array('', ''),      // interlingua (langue auxiliaire internationale)
    460                 'id'           => array('', ''),      // indonésien
    461                 'ie'           => array('', ''),      // interlingue
    462                 'ik'           => array('', ''),      // inupiaq
    463                 'is'           => array('', ''),      // islandais
    464                 'it'           => array('it', ''),    // italien
    465                 'it_fem'       => array('', 'it'),    // italien féminin
    466                 'iu'           => array('', ''),      // inuktitut
    467                 'ja'           => array('ja', ''),    // japonais
    468                 'jv'           => array('jv', ''),    // javanais
    469                 'ka'           => array('', ''),      // géorgien
    470                 'kk'           => array('', ''),      // kazakh
    471                 'kl'           => array('', ''),      // groenlandais
    472                 'km'           => array('', ''),      // khmer central
    473                 'kn'           => array('', ''),      // Kannada
    474                 'ko'           => array('ko', ''),    // coréen
    475                 'ks'           => array('', ''),      // kashmiri
    476                 'ku'           => array('', ''),      // kurde
    477                 'ky'           => array('', ''),      // kirghiz
    478                 'la'           => array('', ''),      // latin
    479                 'lb'           => array('', 'fr'),    // luxembourgeois
    480                 'ln'           => array('', ''),      // lingala
    481                 'lo'           => array('', ''),      // lao
    482                 'lt'           => array('', ''),      // lituanien
    483                 'lu'           => array('', ''),      // luba-katanga
    484                 'lv'           => array('', ''),      // letton
    485                 'man'          => array('', ''),      // mandingue
    486                 'mfv'          => array('', ''),      // manjaque - iso-639-3
    487                 'mg'           => array('', ''),      // malgache
    488                 'mi'           => array('', ''),      // maori
    489                 'mk'           => array('', ''),      // macédonien
    490                 'ml'           => array('', ''),      // malayalam
    491                 'mn'           => array('', ''),      // mongol
    492                 'mo'           => array('', 'ro'),    // moldave ??? normalement c'est ro comme le roumain
    493                 'mos'          => array('', ''),      // moré - iso 639-2
    494                 'mr'           => array('mr', ''),    // marathe
    495                 'ms'           => array('', ''),      // malais
    496                 'mt'           => array('', ''),      // maltais
    497                 'my'           => array('', ''),      // birman
    498                 'na'           => array('', ''),      // nauruan
    499                 'nap'          => array('', 'it'),    // napolitain - iso 639-2
    500                 'ne'           => array('', ''),      // népalais
    501                 'nqo'          => array('', ''),      // n’ko - iso 639-3
    502                 'nl'           => array('nl', ''),    // néerlandais
    503                 'no'           => array('', ''),      // norvégien
    504                 'nb'           => array('', ''),      // norvégien bokmål
    505                 'nn'           => array('', ''),      // norvégien nynorsk
    506                 'oc'           => array('', 'fr'),    // occitan
    507                 'oc_lnc'       => array('', 'fr'),    // occitan languedocien
    508                 'oc_ni'        => array('', 'fr'),    // occitan niçard
    509                 'oc_ni_la'     => array('', 'fr'),    // occitan niçard
    510                 'oc_prv'       => array('', 'fr'),    // occitan provençal
    511                 'oc_gsc'       => array('', 'fr'),    // occitan gascon
    512                 'oc_lms'       => array('', 'fr'),    // occitan limousin
    513                 'oc_auv'       => array('', 'fr'),    // occitan auvergnat
    514                 'oc_va'        => array('', 'fr'),    // occitan vivaro-alpin
    515                 'om'           => array('', ''),      // galla
    516                 'or'           => array('', ''),      // oriya
    517                 'pa'           => array('pa', ''),    // pendjabi
    518                 'pbb'          => array('', ''),      // Nasa Yuwe (páez) - iso 639-3
    519                 'pl'           => array('pl', ''),    // polonais
    520                 'ps'           => array('', ''),      // pachto
    521                 'pt'           => array('pt', ''),    // portugais
    522                 'pt_br'        => array('', 'pt'),    // portugais brésilien
    523                 'qu'           => array('', 'es'),    // quechua
    524                 'rm'           => array('', 'fr'),    // romanche
    525                 'rn'           => array('', ''),      // rundi
    526                 'ro'           => array('ro', ''),    // roumain
    527                 'roa'          => array('', 'fr'),    // langues romanes (ch'ti) - iso 639-2
    528                 'ru'           => array('ru', ''),    // russe
    529                 'rw'           => array('', ''),      // rwanda
    530                 'sa'           => array('', ''),      // sanskrit
    531                 'sc'           => array('', 'it'),    // sarde
    532                 'scn'          => array('', 'it'),    // sicilien - iso 639-2
    533                 'sd'           => array('', ''),      // sindhi
    534                 'sg'           => array('', ''),      // sango
    535                 'sh'           => array('', 'sr'),    // serbo-croate
    536                 'sh_latn'      => array('', 'sr'),    // serbo-croate latin
    537                 'sh_cyrl'      => array('', 'sr'),    // serbo-croate cyrillique
    538                 'si'           => array('si', ''),    // singhalais
    539                 'sk'           => array('sk', ''),    // slovaque
    540                 'sl'           => array('', ''),      // slovène
    541                 'sm'           => array('', ''),      // samoan
    542                 'sn'           => array('', ''),      // shona
    543                 'so'           => array('', ''),      // somali
    544                 'sq'           => array('', ''),      // albanais
    545                 'sr'           => array('sr', ''),    // serbe
    546                 'src'          => array('', 'it'),    // sarde logoudorien - iso 639-3
    547                 'sro'          => array('', 'it'),    // sarde campidanien - iso 639-3
    548                 'ss'           => array('', ''),      // swati
    549                 'st'           => array('', ''),      // sotho du Sud
    550                 'su'           => array('', ''),      // soundanais
    551                 'sv'           => array('sv', ''),    // suédois
    552                 'sw'           => array('', ''),      // swahili
    553                 'ta'           => array('ta', ''),    // tamoul
    554                 'te'           => array('te', ''),    // télougou
    555                 'tg'           => array('', ''),      // tadjik
    556                 'th'           => array('', ''),      // thaï
    557                 'ti'           => array('', ''),      // tigrigna
    558                 'tk'           => array('', ''),      // turkmène
    559                 'tl'           => array('', ''),      // tagalog
    560                 'tn'           => array('', ''),      // tswana
    561                 'to'           => array('', ''),      // tongan (Îles Tonga)
    562                 'tr'           => array('tr', ''),    // turc
    563                 'ts'           => array('', ''),      // tsonga
    564                 'tt'           => array('', ''),      // tatar
    565                 'tw'           => array('', ''),      // twi
    566                 'ty'           => array('', 'fr'),    // tahitien
    567                 'ug'           => array('', ''),      // ouïgour
    568                 'uk'           => array('uk', ''),    // ukrainien
    569                 'ur'           => array('ur', ''),    // ourdou
    570                 'uz'           => array('', ''),      // ouszbek
    571                 'vi'           => array('vi', ''),    // vietnamien
    572                 'vo'           => array('', ''),      // volapük
    573                 'wa'           => array('', 'fr'),    // wallon
    574                 'wo'           => array('', ''),      // wolof
    575                 'xh'           => array('', ''),      // xhosa
    576                 'yi'           => array('', ''),      // yiddish
    577                 'yo'           => array('', ''),      // yoruba
    578                 'za'           => array('', 'zh'),    // zhuang
    579                 'zh'           => array('zh', ''),    // chinois (ecriture simplifiee)
    580                 'zh_tw'        => array('zh_tw', ''), // chinois taiwan (ecriture traditionnelle)
    581                 'zu'           => array('zu', '')     // zoulou
    582         );
    583 
    584         $code = $GLOBALS['rainette_wwo_config']['service']['langue_service'];
    585         if (array_key_exists($langue, $langue2wwo)) {
    586                 if ($c0 = $langue2wwo[$langue][0]) {
    587                         $code = strtolower($c0);
    588                 } elseif ($c1 = $langue2wwo[$langue][1]) {
    589                         $code = strtolower($c1);
    590                 }
    591         }
    592 
    593         return $code;
    594386}
    595387
Note: See TracChangeset for help on using the changeset viewer.