Перейти к содержанию
  • запись
    1
  • комментарий
    1
  • просмотров
    26

Языковые константы


freelancer

62 просмотра

Если открыть практически любой контроллер opencart, можно увидеть

как после загрузки языка

$this->load->language('catalog/product');

подгружаются языковые константы

 $data['text_list'] = $this->language->get('text_list');
 $data['text_no_results'] = $this->language->get('text_no_results');
 $data['text_confirm'] = $this->language->get('text_confirm');

 $data['column_name'] = $this->language->get('column_name');
 $data['column_attribute_group'] = $this->language->get('column_attribute_group');
 $data['column_sort_order'] = $this->language->get('column_sort_order');
 $data['column_action'] = $this->language->get('column_action');

и так для каждой константы.

 

что бы не прописывать каждый перевод можно было сделать такой трюк

 $data = array(); // тут мы инициируем переменную $data если она не задана ранее
 $data += $this->load->language('catalog/attribute'); // а тут копируем в неё все языковые константы

 

 

но это имело смысл только до версии 3.0

потому как с версии 3.0 добавили такую интересную штуку controller\event\language.php

	public function index(&$route, &$args) {
		foreach ($this->language->all() as $key => $value) {
			if (!isset($args[$key])) {
				$args[$key] = $value;
			}
		}
	}	

сами event'ы были и раньше, но language event добавили только в 3.0

 

а как же это работает? довольно просто:

всё начинается с того что в файле framework.php создается и регистрируется event, который в свою очередь регистрирует все ивенты из конфига

// Event
$event = new Event($registry);
$registry->set('event', $event);

// Event Register
if ($config->has('action_event')) {
	foreach ($config->get('action_event') as $key => $value) {
		foreach ($value as $priority => $action) {
			$event->register($key, new Action($action), $priority);
		}
	}
}

в конфиге среди прочих есть такие строчки
 

$_['action_event'] = array(

...
    'view/*/before' => array(
        999  => 'event/language',

...

таким образом перед каждым вызовом $this->load->view загружаются соответствующие языковые константы

1 Комментарий


Рекомендуемые комментарии

Гость
Добавить комментарий...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...