2009-07-10 9 views
1

Bonsoir,Classe PHP multilingue - fonction de raccourci

Dans mon application que je développe actuellement, j'ai une classe qui gère le multilinguisme. Il le fait en chargeant à l'extérieur d'un tableau associatif, où une source de traduction serait défini comme ceci:

'Source input' => 'Zdroj vstupního' 

Actuellement cela fonctionne parfaitement en abordant et en utilisant la classe de la façon suivante:

$lang = new Lang('Czech'); 
print $lang->_('Source input'); // output: "zdroj vstupního" 

Cependant , Je veux avoir ceci dans une fonction de raccourci qui ne dépend pas d'une instance de la classe "Lang". J'ai essayé d'expérimenter avec des méthodes statiques, mais jusqu'ici je n'ai pas de chance.

Pseudo code de ce que je veux réaliser.

$lang = new Lang('Czech'); 
$lang->setCurrent('contact_us'); // loads the language file for contact_us 
<p> 
    <?php print _('Source input'); ?> // output: "zdroj vstupního" 
</p> 

Un point dans la bonne direction serait génial. Merci!

Répondre

4

Vous pouvez accéder à la variable $lang globale de votre fonction _ si vous utilisez une instruction global $lang:

<?php 
    class Lang 
    { 
     function _($str) 
     { 
      return 'Zdroj vstupního'; 
     } 
    } 

    function _($str) 
    { 
     global $lang; 
     return $lang->_($str); 
    } 

    $lang = new Lang('Czech'); 
    print _('Source input'); 
?> 

Sinon, vous pouvez utiliser une place variable de static dans la classe Lang de créer une instance de la classe. C'est un peu plus propre de cette façon car vous évitez d'avoir à créer une variable $lang dans l'espace de noms global.

<?php 
    class Lang 
    { 
     static $lang; 

     function setCurrent($lang) 
     { 
      self::$lang = $lang; 
     } 
    } 

    function _($str) 
    { 
     if (Lang::$lang == 'Czech') 
     { 
      return 'Zdroj vstupního'; 
     } 
    } 

    Lang::setCurrent('Czech'); 
    print _('Source input'); 
?> 
+0

La meilleure réponse que je pouvais obtenir. Merci beaucoup, John! :-) – subZero