|
Корректная работа с языковыми переменными |
|
|
Также, несмотря на то, что 5.8 уже практически поддерживает мультиязычность, но разработчики совсем упустили разделение управления языковыми переменными. То есть, у них по прежнему, если добавляешь переменную в один язык, то во второй её добавлять не даёт, так как проверка на существование данной переменной производится без учёта языка. То же и в удалении. Если выберешь какую-то переменную языковую на удаление в одном языке, он удалит её в обоих, что не есть правильно. Изменить нужно следующее: в файлах /admin/languages.php и /admin/languages_admin.php в переборе switch($_REQUEST['action']) в случаях case "deleteitem" : и case "newitem" : в запросе к БД нужно добавить условие выбора языка из нескольких существующих. Дефолтный запрос на удаление языковой переменной: $sql = $db->Query("DELETE FROM ".PREFIX."_languages WHERE name='$_REQUEST[id]'"); Исправленный: $sql = $db->Query("DELETE FROM ".PREFIX."_languages WHERE name='$_REQUEST[id]' AND code='$_REQUEST[language]'"); Дефолтный запрос проверки на существование языковой переменной при добавлении новой: $sql = $db->Query("SELECT name FROM ".PREFIX."_languages WHERE name='$vari'"); Исправленный: $sql = $db->Query("SELECT name FROM ".PREFIX."_languages WHERE name='$vari' AND code='$_REQUEST[language]'"); После этих изменений, всё будет работать корректно для каждого языка в отдельности.
|