Détail du message 70545.2

Message numéro 2 dans le sujet Création traduction produit .

  • 70545.2 en réponse à 70545.1 écrit par rbs@ecocea.com

    12/11/2012 17:16


    Gaël Port
    Titre : Développeur RBS Change
    Rang : Expert
    Alors pour traduire un document, il n'est pas du tout recommandé de passer directement par ces méthodes du persistentprovider.

    À la place il faut passer par les méthodes beginI18nWork et endI18nWork du RequestContext.

    L'utilisation de beginI18nWork permet de changer globalement la langue de travail. À partir de là, tous les getters et setters appelés sur des documents travailleront sur la traduction dans cette langue du document. Une fois le traitement terminée, endI18nWork permet de revenir à la langue de travail précédente (derrière on gère une pile de langues, on peut donc imbriquer plusieurs niveaux si nécessaire).

    Exemple :
    $rqc = RequestContext::getInstance();
    try 
    {
    	$rqc->beginI18nWork($lang);	
    
    	// Insérer votre code ici.
    
    	$rqc->endI18nWork();
    }
    catch (Exception $rce)
    {
    	$rqc->endI18nWork($rce);	
    }
    Attention, il est important de placer le try/catch autour car si jamais une exception intervient dans votre code, il faut tout de même revenir à la langue de travail d'origine. Notons que endI18nWork "rethrow" l'exception qu'il reçoit en paramètre.


    Dernière remarque : dans le cas où vous modifiez plusieurs traductions d'un même document successivement, il est recommandé de faire un save pour chaque langue. En effet, lors d'un save, toutes les traductions modifiées sont bien enregistrées mais les pre et post save ne sont exécutés que pour la langue courante.
 
1367 membres
Aucun membre connecté