Ignore:
Timestamp:
Jun 10, 2015, 10:39:38 PM (6 years ago)
Author:
kent1@…
Message:

Améliorer la gestion des .po

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk/formulaires/tradlang_importer_langue.php

    r90036 r90095  
    7474                                if(file_exists($dest_po)){
    7575                                        lire_fichier($dest_po,$contenu_po);
    76                                         preg_match_all(',(\#\, php-format|\#\, fuzzy\, php-format).*msgstr(.*)\#,Uims', $contenu_po,$matches);
     76                                        preg_match_all(',(\#\, php-format|\#\, fuzzy\, php-format).*msgstr "(.*)\n(\n|\Z),Uims', $contenu_po,$matches);
    7777                                        $array_po = array();
    7878                                        foreach($matches[0] as $match){
    7979                                                $statut = "OK";
    80                                                 preg_match(',\#\| msgid \"(.*)\"\n,Uims',$match,$matches);
    81                                                 preg_match(',msgstr \"(.*)\n\#,Uims',$match,$matches_str);
     80                                                preg_match(',msgstr \"(.*)\n(\n|\Z),Uims',$match,$matches_str);
    8281                                                $str = rtrim(trim($matches_str[1]),'"');
    8382                                                $str = trim(str_replace("\"\n\"","\n",$str));
     83                                                preg_match(',\#\| msgid \"(.*)\"\n,Uims',$match,$matches);
     84                                                if(!isset($matches[1]) || $matches[1] == ''){
     85                                                        preg_match(',\nmsgid \"(.*)\nmsgstr,Uims',$match,$matches_str_orig);
     86                                                        $str_orig = rtrim(trim($matches_str_orig[1]),'"');
     87                                                        $str_orig = trim(str_replace("\"\n\"","",$str_orig));
     88                                                        $matches[1] = sql_getfetsel('id','spip_tradlangs','id_tradlang_module='.intval($id_tradlang_module)." AND str=".sql_quote($str_orig));
     89                                                }
    8490                                                if(preg_match(',\#\, fuzzy\, php-format,',$match,$matches_statut))
    8591                                                        $statut = "MODIF";
    8692                                                if($str != '')
    87                                                         $array_po[$matches[1]] = array('str'=>$str,'statut'=>$statut);
     93                                                        $array_po[$matches[1]] = array('str'=>$str, 'statut'=>$statut);
    8894                                        }
    8995                                        $modifs = array();
     
    192198                                                else{
    193199                                                        lire_fichier($dest,$contenu_po);
    194                                                         preg_match_all(',(\#\, php-format|\#\, fuzzy\, php-format).*msgstr(.*)\#,Uims', $contenu_po,$matches);
     200                                                        preg_match_all(',(\#\, php-format|\#\, fuzzy\, php-format).*msgstr "(.*)\n(\n|\Z),Uims', $contenu_po,$matches);
    195201                                                        $array_po = array();
    196202                                                        foreach($matches[0] as $match){
    197203                                                                $statut = "OK";
    198                                                                 preg_match(',\#\| msgid \"(.*)\"\n,Uims',$match,$matches);
    199                                                                 preg_match(',msgstr \"(.*)\n\#,Uims',$match,$matches_str);
     204                                                                preg_match(',msgstr \"(.*)\n(\n|\Z),Uims',$match,$matches_str);
    200205                                                                $str = rtrim(trim($matches_str[1]),'"');
    201206                                                                $str = trim(str_replace("\"\n\"","\n",$str));
     207                                                                preg_match(',\#\| msgid \"(.*)\"\n,Uims',$match,$matches);
     208                                                                if(!isset($matches[1]) || $matches[1] == ''){
     209                                                                        preg_match(',\nmsgid \"(.*)\nmsgstr,Uims',$match,$matches_str_orig);
     210                                                                        $str_orig = rtrim(trim($matches_str_orig[1]),'"');
     211                                                                        $str_orig = trim(str_replace("\"\n\"","",$str_orig));
     212                                                                        $matches[1] = sql_getfetsel('id','spip_tradlangs','id_tradlang_module='.intval($id_tradlang_module)." AND str=".sql_quote($str_orig));
     213                                                                }
    202214                                                                if(preg_match(',\#\, fuzzy\, php-format,',$match,$matches_statut))
    203215                                                                        $statut = "MODIF";
    204216                                                                if($str != '')
    205                                                                         $array_po[$matches[1]] = array('str'=>$str,'statut'=>$statut);
     217                                                                        $array_po[$matches[1]] = array('str'=>$str, 'statut'=>$statut);
    206218                                                        }
    207219                                                        $langues_base = sql_allfetsel('id,str,statut','spip_tradlangs','id_tradlang_module='.intval($id_tradlang_module).' AND lang='.sql_quote($lang));
     
    227239                        $erreurs['fichier_langue'] = _T('tradlang:erreur_upload_aucune_modif');
    228240        }
    229         spip_log($modifs,'test.'._LOG_ERREUR);
    230241        return $erreurs;
    231242}
     
    264275        if(!count($modifs))
    265276                $erreurs['message_erreur'] = _T('tradlang:erreur_upload_choisir_une');
    266         spip_log($modifs,'test.'._LOG_ERREUR);
    267277        return $erreurs;
    268278}
     
    325335        else if(file_exists($dest = $dir_lang.$fichier_po)){
    326336                lire_fichier($dest,$contenu_po);
    327                 preg_match_all(',(\#\, php-format|\#\, fuzzy\, php-format).*msgstr(.*)\#,Uims', $contenu_po,$matches);
     337                preg_match_all(',(\#\, php-format|\#\, fuzzy\, php-format).*msgstr "(.*)\n(\n|\Z),Uims', $contenu_po,$matches);
    328338                $array_po = array();
    329339                foreach($matches[0] as $match){
    330340                        $statut = "OK";
    331                         preg_match(',\#\| msgid \"(.*)\"\n,Uims',$match,$matches);
    332                         preg_match(',msgstr \"(.*)\n\#,Uims',$match,$matches_str);
     341                        preg_match(',msgstr \"(.*)\n(\n|\Z),Uims',$match,$matches_str);
    333342                        $str = rtrim(trim($matches_str[1]),'"');
    334343                        $str = trim(str_replace("\"\n\"","\n",$str));
    335                         if(preg_match(',\#\, fuzzy\, php-format,',$match,$matches_statut)){
     344                        preg_match(',\#\| msgid \"(.*)\"\n,Uims',$match,$matches);
     345                        if(!isset($matches[1]) || $matches[1] == ''){
     346                                preg_match(',\nmsgid \"(.*)\nmsgstr,Uims',$match,$matches_str_orig);
     347                                $str_orig = rtrim(trim($matches_str_orig[1]),'"');
     348                                $str_orig = trim(str_replace("\"\n\"","",$str_orig));
     349                                $matches[1] = sql_getfetsel('id','spip_tradlangs','id_tradlang_module='.intval($id_tradlang_module)." AND str=".sql_quote($str_orig));
     350                        }
     351                        if(preg_match(',\#\, fuzzy\, php-format,',$match,$matches_statut))
    336352                                $statut = "MODIF";
    337                         }
    338353                        if($str != '')
    339                                 $array_po[$matches[1]] = array('str'=>$str,'statut'=>$statut);
     354                                $array_po[$matches[1]] = array('str'=>$str, 'statut'=>$statut);
    340355                }
    341356
Note: See TracChangeset for help on using the changeset viewer.