diff --git a/repo.php b/repo.php index 88aeba27..191ca1fd 100644 --- a/repo.php +++ b/repo.php @@ -72,6 +72,8 @@ if (isset($config['cache'])) { $data = $repo->data($_REQUEST); +$repo->updateLang($data, $_REQUEST); + if (!array_key_exists('index', $data['categories'])) { $data['categories']['index'] = array( 'type' => 'index', diff --git a/src/RepositoryBase.php b/src/RepositoryBase.php index be639208..df0736bf 100644 --- a/src/RepositoryBase.php +++ b/src/RepositoryBase.php @@ -34,6 +34,42 @@ class RepositoryBase { return $data; } + function updateLang (&$data, $options) { + $lang = array_key_exists('lang', $options) ? $options['lang'] : 'en'; + + if (!is_array($data['lang'])) { + $data['lang'] = array(); + } + + foreach ($data['categories'] as $id => $category) { + $name = null; + if (array_key_exists("category:{$id}", $data['lang'])) { + $name = $data['lang']["category:{$id}"]; + + if ($name !== '' && $name !== null) { + $data['categories'][$id]['name'] = array( + $lang => $data['lang']["category:{$id}"], + ); + } + } + elseif (array_key_exists('name', $category)) { + if (array_key_exists($lang, $category['name'])) { + $name = $category['name'][$lang]; + } + elseif (array_key_exists('en', $category['name'])) { + $name = $category['name']['en']; + } + elseif (sizeof($category['name'])) { + $name = $category['name'][array_keys($category['name'])[0]]; + } + + $data['lang']["category:{$id}"] = $name; + + $data['categories'][$id]['name'] = array($lang => $name); + } + } + } + function isCategory ($data) { if (!array_key_exists('type', $data)) { return false;