У меня есть мультиязычное приложение cakephp2
оно работало с трехбуквенной языковой строкой, но я изменил 3 буквы на 2 буквы (от англ до ан, до ар).
теперь не получается третий параметр при переключении языка, как
localhost/project1/posts/index
работает нормально
localhost/project1/posts/add
работает нормально
localhost/project1/posts/edit/1
не работает
localhost/project1/posts/view/1
не работает
при переключении языка на последних 2 ссылках он пропускает 1 из URL.означает, что он пропускает любой параметр, кроме контроллера и действия.
мой код такой
MyHtmlHelper
<?php
App::uses('HtmlHelper', 'View/Helper');
class MyHtmlHelper extends HtmlHelper {
public function url($url = null, $full = false){
if(!isset($url['language']) && isset($this->params['multilengual'])){
$url['language'] = $this->params['multilengual'];
}
return parent::url($url, $full);
}
}
AppController.php
class AppController extends Controller {
public $components = array('Cookie','Session');
public $helpers = array('Html' => array('className' => 'MyHtml'));
private function _setLanguage(){
if ($this->Cookie->read('lang') && !$this->Session->check('Config.language')){
$this->Session->write('Config.language', $this->Cookie->read('lang'));
}
else if (isset($this->params['language'])){
if ($this->params['language'] != $this->Session->read('Config.language')){
*****Added this for 2 letter lang string in url*********
switch( $this->params['language'] ) {
case 'ar':
$lang = 'are';
break;
case 'en':
default:
$lang = 'eng';
break;
}
*******
$this->Session->write('Config.language', $lang);
$this->Cookie->write('lang', $lang, false, '20 days');
}
}
}
public function beforeFilter(){
$this->_setLanguage();
}
}
Routs.php
Router::connect('/', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/:language/:controller/:action/*', array(), array('language' => 'en|ar'));
Router::connect('/:language/:controller', array('action' => 'index'), array('language' => 'en|ar'));
Router::connect('/:language', array('controller' => 'posts', 'action' => 'index'), array('language' => 'en|ar')) ;
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'index'));
CakePlugin::routes();