Yii Framework Forum: Module Internationalisation Ne Fonctionne Pas - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Module Internationalisation Ne Fonctionne Pas Rate Topic: -----

#1 User is offline   guim 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 16-September 12

Posted 20 September 2012 - 07:12 AM

Bonjour,

j'ai implanté les fonctionnalités d'internationalisation sur mon site web, en suivant entièrement cet article et celui là. J'utilise donc deux tables pour stocker les messages à traduire et les messages traduits.

Cependant le mécanisme de traduction ne fonctionne pas, et aucun message d'erreur ne s'affiche à l'écran; en effet lorsque j'appelle l'instruction
echo Yii::t('Menu','tata');
dans le code de la vue, j'obtiens à l'écran le message
tata.


Voici le code de la vue:
<?php

$this->pageTitle=Yii::app()->name . ' - Chants';
$this->breadcrumbs=array(
        'Chants',
);

echo "<h1>Chants</h1>";
echo Yii::t('Menu','tata');
?>


Voici le code du fichier protected/viewslayouts/main.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

</head>

<body>

<div class="container" id="page">

        <div class="backgroundGeneral">
                <div id="mainmenu">
                        <?php $this->widget('zii.widgets.CMenu',array(
                                'items'=>array(
                                        array('label'=>'Accueil', 'url'=>array('/site/index')),
                                        array('label'=>'Curriculum vitae', 'url'=>array('/mespagesweb/cv', 'view'=>'cv')),
                                        array('label'=>'Enseignement et recherche', 'url'=>array('/mespagesweb/enseignementrecherche', 'view'=>'enseignementrecherche')),
                                        array('label'=>'Déconnexion ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest),
                                        array('label'=>'Forum', 'url'=>array('/site/pages/introduction.php')),
                                        array('label'=>'Divers', 'url'=>array('/mespagesweb/introduction')),
                                        array('label'=>'Contact', 'url'=>array('/site/contact')),
                                        array($this->widget('application.components.widgets.languageSelector')),
                                ),
                        )); ?>

                </div><!-- mainmenu -->

                <?php echo $content; ?>

                <div class="footer">
                        Copyright &copy; <?php echo "2003-", date('Y'); ?><br/>
                        Tous droits réservés.<br/>
                </div><!-- footer -->
        </div><!--backgroundGeneral-->

</div><!-- page -->

</body>
</html>


Merci par avance pour toute aide.
0

#2 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 20 September 2012 - 07:48 AM

Dans ton fichier de configuration (/config/main.php), il faut ajouté ceci :

'sourceLanguage' => 'en',
        'language'=>'fr',

0

#3 User is offline   guim 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 16-September 12

Posted 20 September 2012 - 07:59 AM

View PostCo-k-ine, on 20 September 2012 - 07:48 AM, said:

Dans ton fichier de configuration (/config/main.php), il faut ajouté ceci :

'sourceLanguage' => 'en',
        'language'=>'fr',



Bonjour Co-k-ine, merci pour ta réponse. J'avais déjà précisé les langages source et cible dans le fichier de configuration; voici le code du fichier de configuration:

<?php

// uncomment the following to define a path alias
// Yii::setPathOfAlias('local','path/to/local-folder');

// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
return array(
	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
	'name'=>'Mon site web',
	//gtf ... 'defaultController' => 'home',

	// preloading 'log' component
	'preload'=>array('log'),

	// autoloading model and component classes
	'import'=>array(
		'application.models.*',
		'application.components.*',
		'application.controllers.*', 
		'application.classes.*', 

	),

	'modules'=>array(
		// uncomment the following to enable the Gii tool
		
		'gii'=>array(
			'class'=>'system.gii.GiiModule',
			'password'=>'***************',
			// If removed, Gii defaults to localhost only. Edit carefully to taste.
			'ipFilters'=>array('127.0.0.1','::1'),
		),
		
	),

	// application components
	'components'=>array(
		'user'=>array(
			// enable cookie-based authentication
			'allowAutoLogin'=>true,
		),
		// uncomment the following to enable URLs in path-format
		
		'urlManager'=>array(
			'class'=>'application.components.UrlManager',
			'urlFormat'=>'path',
			'showScriptName'=>true,
			'rules'=>array(
				'<language:(fr|en)>/' => 'site/index',
				'<language:(fr|en)>/<action:(contact|login|logout)>/*' => 'site/<action>',
				'<language:(fr|en)>/<controller:\w+>/<id:\d+>'=>'<controller>/view',
				'<language:(fr|en)>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
				'<language:(fr|en)>/<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
			),
		),
		
		'db'=>array(
			'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
		),
		// uncomment the following to use a MySQL database
		
		'db'=>array(
			'connectionString' => 'mysql:host=localhost;dbname=gestionEmployes',
			'emulatePrepare' => true,
			'username' => 'root',
			'password' => 'root',
			'charset' => 'utf8',
		),

		'db' => array(
			'class' => 'CDbMessageSource',
			'connectionString' => 'mysql:host=localhost;dbname=internationalisation',
			'emulatePrepare' => true,
			'username' => 'root',
			'password' => 'root',
			'charset' => 'utf8',
		),

		'errorHandler'=>array(
			// use 'site/error' action to display errors
			'errorAction'=>'site/error',
		),
		'log'=>array(
			'class'=>'CLogRouter',
			'routes'=>array(
				array(
					'class'=>'CFileLogRoute',
					'levels'=>'error, warning',
				),
				// uncomment the following to show log messages on web pages
				
				/*array(
					'class'=>'CWebLogRoute',
				),*/
				
			),
		),
	),

	// application-level parameters that can be accessed
	// using Yii::app()->params['paramName']
	'params'=>array(
		// this is used in contact page
		'adminEmail'=>'tonguimferdinand@netscape.net',
	),

	'sourceLanguage' => 'en',
	'language' => 'fr', // the language that the user is using and the application should be targeted to

    'behaviors'=>array(
        'onBeginRequest' => array(
            'class' => 'application.components.behaviors.BeginRequest',
        ),
    ),

    // application components
    'components'=>array(
        'request'=>array(
            'enableCookieValidation'=>true,
		'class' => 'application.components.HttpRequest',
            'enableCsrfValidation'=>true,

        ),

        'session' => array(
		//'class'=>'application.components.CSSafeSession',
		'autoStart' => false,
		'timeout' => 86400,
	),
                // ...some other components here...
    ),
    // application-level parameters
    'params'=>array(
  	'languages'=>array('fr'=>'fr', 'en'=>'en'),
    ),
);

0

#4 User is offline   Co-k-ine 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 97
  • Joined: 29-March 10

Posted 21 September 2012 - 04:01 AM

Je ne vois pas le problème, désolé !

Il faut attendre que Raoul passe dans le coin, il s'y connait bien :)
0

#5 User is offline   Raoul 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 645
  • Joined: 29-November 08
  • Location:Paris, France

Posted 22 September 2012 - 06:31 AM

@co-k-ine : LOL ... ben en fait je m'y connais pas tant que ça sur le sujet, vu que j'ai utilisé uniquement le composant CPhpMessageSource (pas de DB donc).

@guim : Cela étant dit, d'après la config déjà, il semble bizarre d'avoir défini 3 composants dont le nom est 'db' !

En fait, je crois qu'il faut déclarer le composant message de la façon suivante :

'components' => array(
   'messages' => array(
  	'class' => 'CDbMessageSource',
   ),
),


Par défaut, le composant CDbMessageSource accèdera à la base en utilisant un composant dont le nom est 'db'. Si tu veux en changer, tu peux initialiser l'attribut 'connectionID'.
Par exemple :

'components' => array(
   'messages' => array(
  	'class' => 'CDbMessageSource',
  	'connectionID' => 'myDb'   // utilisera le composant 'myDb'
   ),
),


Pour tous les paramètres de config CDbMessageSource, tu peux te référer à http://www.yiiframew...DbMessageSource

Bonne chance ;)

8)
0

#6 User is offline   grandoom 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 11-July 12

Posted 24 September 2012 - 09:44 AM

slt,

Pour le multi-language sous Yii je te conseille pour démarrer l'utilisation d'une extension simple
qui utilise non pas un BDD mais des fichiers de langues php situés dans le repertoire 'messages'.
(Yii regorge d'extension très sympathiques toutes prêtes alors pourquoi s'en priver?)

en effet c'est ce que tu devrais faire lorsque tu emploies le code
echo Yii::t('Menu','tata');

pour que cela fonctionne il te faut disposer d'un fichier Menu.php situé dans le rep messages/fr
ce fichier Menu.php devra contenir
<?php
return array('tata' => 'mon message en FR',
);
?>


un fichier Menu.php situé en messages/en devra contenir
<?php
return array('tata' => 'my english message',
);
?>

pour assurer la traduction en anglais

etc...

l'extension que je te suggère pour commencer le multilanguage est
http://www.yiiframew.../languagepicker

Il en existe une autre plus récente et basée sur du bootstrap(très joli skin Html5) mais je n'ai pas testé...
http://www.yiiframew...uage-picker#hh2

bon courage!


NB : oui effectivement il faudrait revoir le config/main.php, des trois déclarations 'db' laquelle reste en vigueur au moment de l'exécution du code?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users