Teknik pembuatannya diambil dari situs wiki Yii. Namun di post kali ini kita buat sedikit berbeda!.
Ubah main.php
'behaviors'=>array( 'onBeginRequest' => array( 'class' => 'application.components.behaviors.BeginRequest' ), ), ... 'components'=>array( 'request'=>array( 'enableCookieValidation'=>true, 'enableCsrfValidation'=>true, ), ... 'params'=>array( ... 'languages'=>array('id'=>'Bahasa', 'en'=>'English'), ),
buat folder widgets di protected/component dan buat file dengan isian
LanguageSelector.php
<?php class LanguageSelector extends CWidget { public function run() { $currentLang = Yii::app()->language; $languages = Yii::app()->params->languages; $this->render('languageSelector', array('currentLang' => $currentLang, 'languages'=>$languages)); } }isi kode di views/LanguageSelector.php
<?php echo CHtml::form(); ?> <div id="language-select"> <?php if(sizeof($languages) < 4) { $lastElement = end($languages); foreach($languages as $key=>$lang) { if($key != $currentLang) { echo CHtml::ajaxLink($lang,'', array( 'type'=>'post', 'data'=>'_lang='.$key.'&YII_CSRF_TOKEN='.Yii::app()->request->csrfToken, 'success' => 'function(data) {window.location.reload();}' ), array() ); } else echo '<b>'.$lang.'</b>'; if($lang != $lastElement) echo ' | '; } } else { echo CHtml::dropDownList('_lang', $currentLang, $languages, array( 'submit' => '', 'csrf'=>true, ) ); } ?> </div> <?php echo CHtml::endForm(); ?>
pada folder protected/components/behaviors (kalo belum ada buat foldernya)
<?php class BeginRequest extends CBehavior { // The attachEventHandler() mathod attaches an event handler to an event. // So: onBeginRequest, the handleBeginRequest() method will be called. public function attach($owner) { $owner->attachEventHandler('onBeginRequest', array($this, 'handleBeginRequest')); } public function handleBeginRequest($event) { $app = Yii::app(); $user = $app->user; if (isset($_POST['_lang'])) { $app->language = $_POST['_lang']; $app->user->setState('_lang', $_POST['_lang']); $cookie = new CHttpCookie('_lang', $_POST['_lang']); $cookie->expire = time() + (60*60*24*365); // (1 year) Yii::app()->request->cookies['_lang'] = $cookie; } else if ($app->user->hasState('_lang')) $app->language = $app->user->getState('_lang'); else if(isset(Yii::app()->request->cookies['_lang'])) $app->language = Yii::app()->request->cookies['_lang']->value; else $app->language = 'en'; } }
buka layout tema (protected/views/layouts/main.php)
isikan kode di bawah (letak kode disesuaikan dengan keinginan anda), kalo aye sih di bawah header
<?php $this->widget('application.widgets.LanguageSelector'); ?>Jika telah selesai, maka kita akan mencoba menerjemahkan Navigation Menu heloyii. Mari kita ubah layout main.php
<?php $this->widget('zii.widgets.CMenu',array( 'items'=>array( array('label'=>Yii::t('general','_HOME_'), 'url'=>array('/site/index')), array('label'=>Yii::t('general','_ABOUT_'), 'url'=>array('/site/page', 'view'=>'about')), array('label'=>Yii::t('general','_CONTACT_'), 'url'=>array('/site/contact')), array('label'=>Yii::t('general','_LOGIN_'), 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest), array('label'=>Yii::t('general','_LOGOUT_').'('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest) ), )); ?>Buat file di protected/messages/en.php
<?php return array( '_HOME_'=>'Home', '_ABOUT_'=>'About Us', '_CONTACT_'=>'Contact Us', '_LOGIN_'=>'Login', '_LOGOUT_'=>'Logout', );dan file id.php
<?php return array( '_HOME_'=>'Beranda', '_ABOUT_'=>'Tentang Kami', '_CONTACT_'=>'Hubungi Kami', '_LOGIN_'=>'Masuk', '_LOGOUT_'=>'Keluar', );Jika berhasil maka menu akan berubah jika di klik link Bahasa tersebut
Tampilan Multibahasa |
Nah situs multibahasa telah siap.Nantikan tutorial selanjutnya !
No comments:
Post a Comment