IP.Board:Адаптирование английской версии IP.Board под русский язык и кириллическое написание символов (v2.3.x)
Материал из CSI
Данная статья позволяет вам адаптировать английскую версию форума IP.Board под русский язык и кириллическое написание символов.
Английская версия форума не была разработана с учётом языков не-английского происхождения. Поэтому, я сделал следующую инструкцию для тех, кто захочет отказаться от русской версии IP.Board и воспользоваться чисто английской версией.
1. Открыть ./ips_kernel/class_db.php
Найти:
'use_debug_log' => 0 ,
Добавить ниже:
'mysql_codepage' => 'cp1251' ,
Найти:
var $error_no = "";
Добавить ниже:
var $error_codepage = "windows_1251";
2. Открыть ./ips_kernel/class_db_mysql_client.php Найти:
function sql_can_subquery()
Добавить выше:
function sql_set_collation_and_cp() { $this->sql_get_version(); if ( $this->mysql_version >= 40101 ) { $res = mysql_query( "SHOW CHARSET LIKE '" . $this->obj['mysql_codepage'] . "'", $this->connection_id ); $charset = mysql_fetch_row($res); mysql_query( "SET NAMES " . $this->obj['mysql_codepage'], $this->connection_id ); mysql_query( "SET CHARACTER SET " . $this->obj['mysql_codepage'], $this->connection_id ); mysql_query( "SET character_set_connection = " . $this->obj['mysql_codepage'], $this->connection_id ); mysql_query( "SET collation_connection = " . $charset[2], $this->connection_id ); } unset( $this->obj['sql_host'] ); unset( $this->obj['sql_user'] ); unset( $this->obj['sql_pass'] ); return TRUE; }
Найти:
unset( $this->obj['sql_host'] ); unset( $this->obj['sql_user'] ); unset( $this->obj['sql_pass'] );
Заменить на:
$this->sql_set_collation_and_cp();
3. Открыть ./ips_kernel/class_db_mysqli_client.php Найти:
function sql_can_subquery()
Добавить выше:
function sql_set_collation_and_cp() { $this->sql_get_version(); if ( $this->mysql_version >= 40101 ) { $res = mysqli_query( $this->connection_id, "SHOW CHARSET LIKE '" . $this->obj['mysql_codepage'] . "'"); $charset = mysqli_fetch_row($res); mysqli_query( $this->connection_id, "SET NAMES " . $this->obj['mysql_codepage'] ); mysqli_query( $this->connection_id, "SET CHARACTER SET " . $this->obj['mysql_codepage'] ); mysqli_query( $this->connection_id, "SET character_set_connection = " . $this->obj['mysql_codepage'] ); mysqli_query( $this->connection_id, "SET collation_connection = " . $charset[2] ); } return TRUE; }
Найти:
mysqli_autocommit( $this->connection_id, TRUE );
Добавить выше:
$this->sql_set_collation_and_cp();
4. Открыть conf_global.php В самый низ добавить:
$INFO['mysql_codepage'] = 'cp1251';
5. Открыть ./sources/ipsclass.php Найти:
$this->DB->obj['force_new_connection'] = isset($this->vars['sql_force_new_connection']) ? $this->vars['sql_force_new_connection'] : 0;
Добавить после:
if ( isset( $this->vars['mysql_codepage'] ) ) { $this->DB->obj['mysql_codepage'] = $this->vars['mysql_codepage']; }
Найти:
$this->vars['gb_char_set'] = $this->vars['gb_char_set'] ? $this->vars['gb_char_set'] : 'iso-8859-1';
Заменить на:
$this->vars['gb_char_set'] = $this->vars['gb_char_set'] ? $this->vars['gb_char_set'] : 'windows-1251';
6. Открыть ./sources/classes/class_email.php Найти:
var $char_set = 'iso-8859-1';
Заменить на:
var $char_set = 'windows-1251';
7. Открыть ./sources/action_public/rssout.php Найти:
$this->xml_header = '<?xml version="1.0" encoding="ISO-8859-1"?'.'>';
Заменить на:
$this->xml_header = '<?xml version="1.0" encoding="WINDOWS-1251"?'.'>';
8. Открыть ./sources/action_admin/xmlout.php Найти:
$this->xml_header = '<?xml version="1.0" encoding="ISO-8859-1"?'.'>';
Заменить на:
$this->xml_header = '<?xml version="1.0" encoding="WINDOWS-1251"?'.'>';
9. Открыть ./jscripts/folder_rte_files/module_bbcodeloader.php Найти:
<title>Insert Custom BBCode</title>
Добавить выше:
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
10. Открыть ./ips_kernel/class_xml.php Найти:
var $lite_parser = 0;
Заменить на:
var $lite_parser = 1;
Найти:
var $doc_type = 'ISO-8859-1';
Заменить на:
var $doc_type = 'WINDOWS-1251';
11. Открыть ./ips_kernel/class_ajax.php Найти:
@header( "Content-type: text/xml" );
Заменить на:
@header( "Content-type: text/xml;charset={$this->ipsclass->vars['gb_char_set']}" );
12. Открыть ./sources/action_public/xmlout.php Найти:
$name = $this->class_ajax->convert_and_make_safe( $this->ipsclass->input['name'], 0 );
Заменить:
$name = $this->class_ajax->convert_and_make_safe( $this->ipsclass->input['name'], 1 );
13. Открыть init.php Найти:
define( 'IPB_ACP_ALLOW_TEMPLATE_PHP', 0 );
Добавить ниже:
/** * Allow UTF charset convertations for AJAX-based tools * @since 2.2.2.2007-02-25 */ define( 'IPB_ACP_AJAX_UTF_CONVERT', 1 );
14. Открыть ./sources/action_admin/acppermissions.php Найти:
print $this->html->acp_xml_wrap( $tab_html, $content );
Добавить выше:
if ( IPB_ACP_AJAX_UTF_CONVERT ) { $tab_html = $this->ipsclass->txt_convert_charsets($tab_html, $this->ipsclass->vars['gb_char_set'], 'utf-8'); $content = $this->ipsclass->txt_convert_charsets($content, $this->ipsclass->vars['gb_char_set'], 'utf-8'); }
15. Открыть ./sources/lib/admin_functions.php Найти:
if ( $this->ipsclass->can_use_fancy_js ) {
Добавить ниже:
if ( IPB_ACP_AJAX_UTF_CONVERT ) { $text = $this->ipsclass->txt_convert_charsets($text, $this->ipsclass->vars['gb_char_set'], 'utf-8'); }
Найти:
if ( $this->ipsclass->can_use_fancy_js ) {
Добавить ниже:
if ( IPB_ACP_AJAX_UTF_CONVERT ) { $text = $this->ipsclass->txt_convert_charsets($text, $this->ipsclass->vars['gb_char_set'], 'utf-8'); }
Найти:
$text = str_replace( "'", "\\'", $text );
Добавить ниже:
if ( IPB_ACP_AJAX_UTF_CONVERT ) { $text = $this->ipsclass->txt_convert_charsets($text, $this->ipsclass->vars['gb_char_set'], 'utf-8'); }
Times are changing for the beettr if I can get this online!