2010-10-01 10 views
3

Ceci est mon codeEst-ce que Zend Translate détecte automatiquement la langue?

$locale = new Zend_Locale('en_US'); 
Zend_Registry::set('Zend_Locale', $locale); 

$GLOBALS['translate'] = new Zend_Translate(
    array(
     'adapter' => 'array', 
     'content' => array('Hello' => 'Hi'), 
     'locale' => 'en_US' 
    ) 
); 

gb('translate')->addTranslation(
    array(
     'content' => array('Hello' => 'Xin chào'), 
     'locale' => 'vi' 
    ) 
); 

gb('translate')->_('Hello'); //always print Xin chào 

Il est toujours imprimer 'Xin chào' même j'utiliser le proxy web (à partir des États-Unis) pour demander la page.

Répondre

4

Zend_Translate est conscient locale , ce qui signifie qu'il utilisera l'instance Zend_Locale stockée dans le Zend_Registry:

$locale = new Zend_Locale('en_US'); 
Zend_Registry::set('Zend_Locale', $locale); 

Si vous n'utilisez pas le Zend_Registry, il va essayer d'obtenir les paramètres régionaux à partir du web de l'utilisateur le navigateur (si disponible), les informations de l'environnement du serveur hôte et les paramètres de Zend Framework. Pour éviter cela, vous devez définir les paramètres régionaux explicitement:

$translator->setLocale($locale); 

Voir le chapitre Automatic Handling of Languages dans le guide de référence pour Zend_Translate