developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Ticket #569: 569-jLocale-support-multiline-rendering-in-strings.3.diff

File 569-jLocale-support-multiline-rendering-in-strings.3.diff, 5.1 KB (added by Julien, 13 years ago)

fixed patch for multiline strings in properties files

  • build/manifests/testapp.mn

     
    110110cd testapp/modules/jelix_tests/locales/en_EN
    111111  tests1.UTF-8.properties
    112112  tests3.UTF-8.properties
     113  tests4.UTF-8.properties
    113114cd testapp/modules/jelix_tests/templates
    114115  menu.tpl
    115116  test_plugin_counter_init_allarg_noexeption.tpl
  • testapp/modules/jelix_tests/locales/en_EN/tests4.UTF-8.properties

     
     1string.with.line.break = This sentence has a line break\n after the word "break"
     2
     3multiline.string.with.line.break = This multiline sentence\n has two\
     4line breaks\n after the words "sentence" and "breaks"
     5 No newline at end of file
  • testapp/modules/jelix_tests/tests/core.jlocale.html_cli.php

     
    178178        }
    179179        $GLOBALS['gJConfig']->charset = 'UTF-8';
    180180    }
    181 
     181   
     182    function testLineBreak(){
     183        $this->assertEqual("This sentence has a line break\n after the word \"break\"",jLocale::get('tests4.string.with.line.break',null,'en_EN','UTF-8'));
     184    }
     185   
     186    function testLineBreakWithMultiLineString(){
     187        $this->assertEqual("This multiline sentence\n has two line breaks\n after the words \"sentence\" and \"breaks\"",jLocale::get('tests4.multiline.string.with.line.break',null,'en_EN','UTF-8'));
     188    }
     189   
    182190}
    183191
    184192?>
     193 No newline at end of file
  • lib/jelix/plugins/tpl/html/function.jlocale.php

     
    33* @package    jelix
    44* @subpackage jtpl_plugin
    55* @author     Jouanneau Laurent
    6 * @contributor
     6* @contributor Julien Issler
    77* @copyright  2005-2007 Jouanneau laurent
     8* @copyright 2008 Julien Issler
    89* @link        http://www.jelix.org
    910* @licence    GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
    1011*/
     
    2021{
    2122     if(func_num_args() == 3 && is_array(func_get_arg(2))){
    2223         $param = func_get_arg(2);
    23          echo htmlspecialchars(jLocale::get($locale, $param));
     24         echo nl2br(htmlspecialchars(jLocale::get($locale, $param)));
    2425     }elseif(func_num_args() > 2){
    2526         $params = func_get_args();
    2627         unset($params[0]);
    2728         unset($params[1]);
    28          echo htmlspecialchars(jLocale::get($locale, $params));
     29         echo nl2br(htmlspecialchars(jLocale::get($locale, $params)));
    2930     }else{
    30          echo htmlspecialchars(jLocale::get($locale));
     31         echo nl2br(htmlspecialchars(jLocale::get($locale)));
    3132     }
    3233}
    3334
  • lib/jelix/core/jLocale.class.php

     
    44* @subpackage core
    55* @author     Laurent Jouanneau
    66* @author     Gerald Croes
    7 * @contributor
     7* @contributor Julien Issler
    88* @copyright  2001-2005 CopixTeam, 2005-2007 Laurent Jouanneau
    99* Some parts of this file are took from Copix Framework v2.3dev20050901, CopixI18N.class.php, http://www.copix.org.
    1010* copyrighted by CopixTeam and released under GNU Lesser General Public Licence.
    1111* initial authors : Gerald Croes, Laurent Jouanneau.
    1212* enhancement by Laurent Jouanneau for Jelix.
     13* @copyright 2008 Julien Issler
    1314* @link        http://www.jelix.org
    1415* @licence    GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
    1516*/
     
    120121                        if(preg_match("/^\s*(.*)\s*(\\\\?)$/U", $line, $match)){
    121122                            $sp = preg_split('/(?<!\\\\)\#/', $match[1], -1 ,PREG_SPLIT_NO_EMPTY);
    122123                            $multiline= ($match[2] =="\\");
    123                             $this->_strings[$charset][$key].=' '.trim(str_replace('\#','#',$sp[0]));
     124                            $this->_strings[$charset][$key].=' '.trim(str_replace(array('\#','\n'),array('#',"\n"),$sp[0]));
    124125                        }else{
    125126                            throw new Exception('Syntaxe error in file properties '.$fichier.' line '.$linenumber,210);
    126127                        }
     
    138139                            $value='';
    139140                        }
    140141
    141                         $this->_strings[$charset][$key] =$value;
     142                        $this->_strings[$charset][$key] = str_replace(array('\#','\n'),array('#',"\n"),$value);
    142143
    143144                    }elseif(preg_match("/^\s*(\#.*)?$/",$line, $match)){
    144145                        // ok, juste un commentaire