Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu] Problème avec capitalize et accent

Posted by benjamin on 01/25/2008 17:21

Bonjour,

dans un fichier de locale, j'ai un texte qui est "édition". Je réutilise ce texte dans un template auquel j'applique le modificateur "|capitalize". J'espérais obtenir "Édition" ou au moins "Edition" mais "édition" reste en minuscule. En revanche si je mets "edition" j'obtiens bien le résultat attendu : "Edition"...

Merci

NB : j'en profite aussi pour demander s'il y a un modifier qui permet de mettre en majuscule la 1ère lettre du 1er mot (et pas de chaque mot contrairement à capitalize) se basant sur la fonction php 'ucfirst'?


Jelix 1.0.2 - mise en production réussie : http://www.autolux.ca

  [Opened] Re: Problème avec capitalize et accent

Reply #1 Posted by laurentj on 01/25/2008 22:37

Bonjour,

Le modificateur "capitalize" est en fait la fonction ucwords de PHP. Donc je ne peux pas y faire grand chose. (aaah php et tout ses bugs...).

Sinon non, il n'y a pas de modificateur similaire à ucfirst. Mais ce n'est pas bien compliqué à faire, et tu l'ajoutes dans le répertoire plugins de ton appli.

  [Opened] Re: Problème avec capitalize et accent

Reply #2 Posted by benjamin on 01/25/2008 22:41

Ok, merci.

Si ça peut servir à quelqu'un, voilà mon plugin :

 <?php
 /**
  * Plugin from smarty project and adapted for jtpl
  * @package    jelix
  * @subpackage jtpl_plugin
  * @author
  * @contributor Benjamin Cartereau (utf8 compliance)
  * @copyright  
  * @link http://smarty.php.net/
  * @link http://jelix.org/
  * @licence    GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  */
 
 /**
  * Modifier plugin : uppercase the first letter
  *
  * Capitalize the first letter of a string (unicode aware), optionally converting
  * the rest of the string to lower case, and using the $encoding character encoding.
  * <pre>{$mytext|ucfirst}
  * {$mytext|ucfirst:true}
  * {$mytext|ucfirst:true:'ISO-8859-15'}
  * </pre>
  * @param string
  * @param bool $lc_remaining
  * @param string $encoding
  * @return string
  */
 function jtpl_modifier_common_ucfirst($string, $lc_remaining = false, $encoding = "utf-8")
 {
     $ucfirst_string = '';
     if (!empty($string))
     {
         $firstletter = mb_substr($string, 0, 1, $encoding);
         $stringTail = mb_substr($string, 1, strlen($string), $encoding);
         $ucfirst_string =  mb_strtoupper($firstletter, $encoding) . ($lc_remaining?mb_strtolower($stringTail, $encoding):$stringTail);
     }
     return $ucfirst_string;
 }
 ?>

Jelix 1.0.2 - mise en production réussie : http://www.autolux.ca

 
Page
  1. [Résolu] Problème avec capitalize et accent