Как раз и навсегда решить проблемы с локализацией.
Переводим всю БД и все таблицы БД в utf8_general_ci
ALTER TABLE `table_name` CONVERT TO CHARACTER SET 'utf8';
Определяем UTF-8 в функции подключения к БД:
mysql_functions.php
Изменить это:
function dbconnect($dbhost, $dbuser, $dbpass, $dbname ) {
$mysql_access = mysql_connect($dbhost, $dbuser, $dbpass);
if(!$mysql_access) {
include(_BASEDIR."languages/en.php");
die(_FATALERROR." "._NOTCONNECTED);
}
mysql_select_db($dbname, $mysql_access);
return $mysql_access;
}
На это:
function dbconnect($dbhost, $dbuser, $dbpass, $dbname ) {
$mysql_access = mysql_connect($dbhost, $dbuser, $dbpass);
if(!$mysql_access) {
include(_BASEDIR."languages/en.php");
die(_FATALERROR." "._NOTCONNECTED);
}
mysql_select_db($dbname, $mysql_access);
mysql_set_charset("utf8", $mysql_access);
return $mysql_access;
}
mysqli_functions.php
Изменить это:
function dbconnect($dbhost, $dbuser, $dbpass, $dbname ) {
$mysql_access = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if(mysqli_connect_error()) {
include(_BASEDIR."languages/en.php"); // Because we haven't got a language set yet.
die(_FATALERROR." "._NOTCONNECTED);
}
return $mysql_access;
}
На это:
function dbconnect($dbhost, $dbuser, $dbpass, $dbname ) {
$mysql_access = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if(mysqli_connect_error()) {
include(_BASEDIR."languages/en.php"); // Because we haven't got a language set yet.
die(_FATALERROR." "._NOTCONNECTED);
}
mysqli_set_charset($mysql_access, "utf8");
return $mysql_access;
}
В файле локализации прописываем:
define ("_CHARSET", "utf-8");
Готовый ru.php для eFiction 3.5.3
В файле storyform.php (строка 48) меняем htmlentities() на htmlspecialchars()
В файле javascript.js меняем все вызовы unescape() на decodeURI()
categorylist.php
Изменить это:
$find = array ('"', chr(150), chr(147), chr(148), chr(146));
$replace = array ('"', "-", """, """, "'");
На это:
$find = array (' ');
$replace = array ('+');
characterlist.php
Изменить это:
//header("Content-Type: text/html; charset=".CHARSET,true);
На это:
header("Content-Type: text/html; charset="._CHARSET,true);
А также это:
$find = array ('"', chr(150), chr(147), chr(148), chr(146));
$replace = array ('"', "-", """, """, "'");
На это:
$find = array (' ');
$replace = array ('+');
Разрешаем логины в UTF-8 (ники кириллицей):
В файлах:
user/editbio.php
user/login.php
Меняем все вхождения этого:
"!^[-a-z0-9_ ]{3,30}$!i"
На это:
"!^[-a-zа-я0-9_ ]{3,30}$!iu"
Исправляем подсчёт слов
В файле:
stories.php
Меняем все вхождения этого:
$pattern = "/[^(w|d|'|"|.|!|?|;|,|\|/|--|:|&|@)]+/";
На это:
$pattern = "/[^(w|а-я|ё|d|'|"|.|!|?|;|,|\|/|--|:|&|@)]+/iu";
(Строка 174 и 501)
Это решает все проблемы с локализацией.
P.S. Автор, выпускай апдейт!