Как заставить CakePHP работать с мультиязычностью - PullRequest
0 голосов
/ 16 мая 2019

Я работаю с cakephp 2.x

У меня есть сайт со статическими страницами (многоязычный) и cacheAction.

Кэш не распознает язык и кэширует страницу на самом современном языке ....

Любая идея, как решить (часть из отключения кэша?) Спасибо, Massimo

class PagesController extends AppController {

/**
* This controller does not use a model
*
* @var array
*/
public $uses = array();
public $helpers = ['Cache','AbTest.AbTest'];
public $cacheAction = '1 month';
public $components = array('AbTest.AbTest');

....

if ($locale && file_exists(APP . 'View' . $theme_path . DS .     $this->viewPath . DS . $locale .DS. implode('/', $path) . $this->ext )) 
    {       
        array_unshift($path,$locale);
    }

    try {
        $this->render(implode('/', $path));
    } catch (MissingViewException $e) {
        if (Configure::read('debug')) {
            throw $e;
        }
        throw new NotFoundException();
    }

Я ожидаю, что кеш представит мне ита / pages / who и eng / pages / who как разные страницы, в то время как он всегда выводит ita / pages /который

1 Ответ

1 голос
/ 30 мая 2019

Для этого есть опция, которая называется Cache.viewPrefix. Вы не упомянули, как вы управляете языками на своем сайте, но основная логика заключается в том, что вы можете установить префикс файла кэша с языком, и таким образом у вас будут отдельные файлы кэша для каждого языка. Например, вы можете сделать это в вашем PagesController или AppController, например

Configure::write('Cache.viewPrefix', /* place the language here */);

...