Класс Translations.php
Класс Translations
Предназначен для работы с переводами клиентского шаблона.
Функция write_translations()
private function write_translations($lang_label, $translations) { if (empty($lang_label)) { return; } $dir = __DIR__.'/../design/'.$this->settings->theme.'/lang/'; if (file_exists($dir)) { $content = "<?php\n\n"; $content .= "\$lang = array();\n"; foreach($translations as $label=>$value) { $content .= "\$lang['".$label."'] = \"".addcslashes($value, "\n\r\\\"")."\";\n"; } $file = fopen($dir.$lang_label.'.php', 'w'); fwrite($file, $content); fclose($file); } }
Функция записыват перевод в файл, который лежит в активной теме сайта
Функция принимает два аргумента $lang_label, $translations
Параметры которые содержит функция:
- $lang_label - языковая метка (двузначная, ru,en,ua)
- $translations - массив с переменными переводов, который редактирует клиент
Функция записывает результат своей работы в файл
Функция init_one()
private function init_one($label = "") { if (empty($label)) { return false; } if (!isset($this->vars[$label])) { $file = __DIR__.'/../design/'.$this->settings->theme.'/lang/'.$label.'.php'; if (file_exists($file)) { $lang = array(); require_once $file; $this->vars[$label] = $lang; } else { $this->vars[$label] = array(); } } return $this->vars[$label]; }
Функция инициализации файла переводов для клиентского шаблона
Функция принимает один аргумент $label
Параметры которые содержит функция:
- $label - метка языка, перевод которого следует подключить
Функция возвращает объект с переводами шаблона
Функция init_translations()
private function init_translations() { foreach ($this->languages->get_languages() as $l) { $this->init_one($l->label); } return $this->vars; }
Фукнция инициализации переводов
Функция get_translation()
public function get_translation($id) { $translation = array(); foreach ($this->languages->get_languages() as $l) { $result = $this->init_one($l->label); if (isset($result[$id])) { $translation['lang_' . $l->label] = $result[$id]; } } if (count($translation) > 0) { $translation['id'] = $id; $translation['label'] = $id; return (object)$translation; } return false; }
Фукнция для выбора конкретной переменной перевода
Функция принимает один аргумент $id
Параметры которые содержит функция:
- $id - id выбираемого перевода
Функция возвращает объект с переводом переменной,в случае, если они есть
Функция get_translations()
public function get_translations($filter = array()) { if (!empty($filter['lang'])) { $result = $this->init_one($filter['lang']); } else { $result = array(); die('get_translations empty(filter["lang"])'); } if (!empty($filter['sort'])) { switch ($filter['sort']) { case 'label': ksort($result); break; case 'label_desc': krsort($result); break; case 'date_desc': $result = array_reverse($result); break; case 'translation': asort($result); break; case 'translation_desc': arsort($result); break; } } return (object)$result; }
Фукнция выборки всех переводов текущего языка (для клиентской части)
Функция принимает один аргумент $filter
Параметры которые содержит функция:
- $filter['lang'] - язык, для которого нужно выбрать переменные с переводами
Функция возвращает объект с результатами
Функция update_translation()
public function update_translation($id, $data) { $data = (array)$data; $this->init_translations(); foreach ($this->vars as $lang_label=>&$translations) { if ($id != $data['label']) { unset($translations[$id]); } $translations[$data['label']] = $data['lang_'.$lang_label]; $this->write_translations($lang_label, $translations); } return $data['label']; }
Фукнция обновления перевода
Функция принимает два аргумента $id, $data
Параметры которые содежит функция:
- $id - id переменной перевода
- $data - данные для обновления
Функция возвращает обновленные данные (переводы)
Функция delete_translation()
public function delete_translation($id) { if(!empty($id)) { $this->init_translations(); foreach ($this->vars as $lang_label=>&$translations) { unset($translations[$id]); $this->write_translations($lang_label, $translations); } } }
Фукнция удаления перевода
Функция принимает один аргумент $id
Параметры которые содержит функция:
- $id - id переменной перевода, которую следует удалить
Функция copy_translations()
public function copy_translations($label_src, $label_dest) { if (empty($label_src) || empty($label_dest) || $label_src == $label_dest) { return; } $themes_dir = __DIR__.'/../design/'; foreach (glob($themes_dir.'*', GLOB_ONLYDIR) as $theme) { if (file_exists($theme.'/lang/')) { $src = $theme.'/lang/'.$label_src.'.php'; $dest = $theme.'/lang/'.$label_dest.'.php'; if (file_exists($src) && !file_exists($dest)) { copy($src, $dest); @chmod($dest, 0664); } } } }
Фукнция копирования файлов перевода (при создании новой темы)
Функция принимает два аргумента $label_src, $label_dest
Параметры которые содержит функция:
- $label_src - источник, откуда следует копировать переводы
- $label_dest - директория назначения, куда следует поместить файлы переводов