Перейти к контенту
  • 0

IPB 1.3 pdr3 на нескольких языках с флажками


comvirus

Вопрос

theIggs помоги подогнать под новую версию

 

то что ты писал цытирую.

F cvsckПробуем так:

 

Идеи digilog.de

Упрощено для IPB v1.2 theIggs 

 

Часть 1. В зависимости от языка загружаем разную графику.

Открыть index.php

Найти:

 

 

Код

$ibforums->vars['img_url'] = 'style_images/' . $ibforums->skin['img_dir'];

 

 

Вырезать к чёртовой матери!

Найти:

 

 

Код

$ibforums->lang = $std->load_words($ibforums->lang, 'lang_global', $ibforums->lang_id);

 

 

Ниже добавить:

 

 

Код

$ibforums->skin['img_dir'] .= '/' . $ibforums->lang_id;

$ibforums->vars['img_url'] = 'style_images/' . $ibforums->skin['img_dir'];

 

 

Теперь в папке style_images, в каждой подпапке (т.е. для каждого скина) нужно создать подпапки с такими же именами, как у установленных языков.

Например: для дефолтного скина вся графика хранится в папке style_images/1.

Установлены языки: английский (папка lang/en), русский (папка lang/2), немецкий (папка lang/4).

Нужно создать папки style_images/1/en, style_images/1/2, style_images/1/4 и поместить в каждую из них графику для соответствующего языка.

 

 

Часть 2, необязательная. Быстрое переключение языков с помощью флажков.

Распространяется на гостей с помощью cookies.

Открыть index.php

Найти:

 

 

Код

$ibforums->lang = $std->load_words($ibforums->lang, 'lang_global', $ibforums->lang_id);

 

 

Ниже добавить:

 

 

Код

if ( $HTTP_GET_VARS['langid'] ) {

$ibforums->lang_id = $HTTP_GET_VARS['langid'];

if ( $ibforums->member['id'] != 0 ) {

$DB->query("UPDATE ibf_members SET language='".$HTTP_GET_VARS['langid']."' where id=".$ibforums->member['id']);

}

} else {

if ( $ibforums->member['id'] != 0 ){

$ibforums->lang_id = $ibforums->member['language'] ? $ibforums->member['language'] : $ibforums->vars['default_language'];

}else{

$ibforums->lang_id = $HTTP_COOKIE_VARS['language'] ? $HTTP_COOKIE_VARS['language'] : $ibforums->vars['default_language'];

}

}

 

if ( $ibforums->lang_id != $ibforums->vars['default_language'] ) {

setcookie('language', $ibforums->lang_id, time()+60*60*24*10, '/');

} else {

if ($HTTP_COOKIE_VARS['language']) setcookie('language', "", time()-999, '/');

}

$DB->query("SELECT lname, ldir FROM ibf_languages ORDER BY lid");

$ibforums->langlist = "";

$qstr = preg_replace("/&?langid=[^&]*/i", "", $HTTP_SERVER_VARS['QUERY_STRING']);

while( $getlang = $DB->fetch_row() ) {

$ibforums->langlist .= "<a href=\"index.php?langid=".$getlang['ldir']."\">".

"<img src='style_images/".$ibforums->skin['img_dir']."/".$getlang['ldir']."/flag.gif' alt='".$getlang['lname']."' border='0' vspace='5'></a>  ";

}

 

 

Открыть Skin/s*/skin_global.php

Найти:

 

 

Код

<a href='{$ibforums->base_url}' title='Board Home'><img src='{$ibforums->vars['img_url']}/logo4.gif' alt='Powered by Invision Power Board' border="0" /></a>

 

 

Заменить на:

 

 

Код

<table width='100%'><tr><td>

<a href='{$ibforums->base_url}' title='Board Home'><img src='{$ibforums->vars['img_url']}/logo4.gif' alt='Powered by Invision Power Board' border="0" /></a>

</td><td align='right'>{$ibforums->langlist}</td></tr></table>

 

 

PS Желательно зайти в Админцентр -> Skins & Templates -> |-- HTML Templates и нажать знаменитую кнопочку Run Tool.

 

Теперь нужно закинуть файл flag.gif в папку графики для соответствующих языков.

Например: берём русский флажок, переименовываем его во flag.gif и закидываем в style_images/1/2.

Берём английский флажок, переименовываем его во flag.gif и закидываем в style_images/1/en.

 

 

А что вы хотели от мода, сделанного на скорую руку?.. 

 

В посте выше следует читать:

 

Найти:

 

 

Код

$ibforums->lang = $std->load_words($ibforums->lang, 'lang_global', $ibforums->lang_id);

 

 

Выше добавить:

 

 

Код

if ( $HTTP_GET_VARS['langid'] ) {

$ibforums->lang_id = $HTTP_GET_VARS['langid'];

if ( $ibforums->member['id'] != 0 ) {

$DB->query("UPDATE ibf_members SET language='".$HTTP_GET_VARS['langid']."' where id=".$ibforums->member['id']);

}

} else {

if ( $ibforums->member['id'] != 0 ){

$ibforums->lang_id = $ibforums->member['language'] ? $ibforums->member['language'] : $ibforums->vars['default_language'];

}else{

$ibforums->lang_id = $HTTP_COOKIE_VARS['language'] ? $HTTP_COOKIE_VARS['language'] : $ibforums->vars['default_language'];

}

}

 

if ( $ibforums->lang_id != $ibforums->vars['default_language'] ) {

setcookie('language', $ibforums->lang_id, time()+60*60*24*10, '/');

} else {

if ($HTTP_COOKIE_VARS['language']) setcookie('language', "", time()-999, '/');

}

$DB->query("SELECT lname, ldir FROM ibf_languages ORDER BY lid");

$ibforums->langlist = "";

$qstr = preg_replace("/&?langid=[^&]*/i", "", $HTTP_SERVER_VARS['QUERY_STRING']);

while( $getlang = $DB->fetch_row() ) {

$ibforums->langlist .= "<a href=\"index.php?langid=".$getlang['ldir']."\">".

"<img src='style_images/".$ibforums->skin['img_dir']."/".$getlang['ldir']."/flag.gif' alt='".$getlang['lname']."' border='0' vspace='5'></a>  ";

}

 

 

И ещё небольшое дополнение.

Сразу бросается в глаза, что надпись Site Home не переводится - это так и должно быть, т.к. в этой строчке показывается название сайта, а оно считается языконезависимым.

Можно сделать и языкозависимым - для этого в skin_global.php найти

 

Код

{$ibforums->vars['home_name']}

 

и заменить на

 

Код

{$ibforums->lang['home_name']}

 

А в lang_global.php добавить строчку

 

Код

'home_name' => "Крутой сайт",

 

для русского языка или

 

Код

'home_name' => "Cool Site",

 

- для английского. Для других языков - по аналогии.

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

mv4u

посмотреть можно у меня на форуме 1.2 Final c I-pack comvirus's bord

 

theIggs

спасибо большое

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

а какие ты моды собираешься себе на 1.3 ставить?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

Огромное спасибо, пошел ставить :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

Привет, С наступающим!

Все получилось великолепно! но теперь появились парочка проблем.

Флажки и и макросы для разных языков я поменял и все это поставил на новый Русский Модифицированный IPB v1.3 Final . все работало за исключением тестового топика сверху выводится ошибка

Parse error: parse error, unexpected ';', expecting ')' in F:\Apache\Apache2\htdocs\bord\lang\en\lang_topic.php on line 67

 

Warning: Invalid argument supplied for foreach() in F:\Apache\Apache2\htdocs\bord\sources\functions.php on line 1274

как я понял это из за языков. что я зделал: стянул немецкий для 1.3 и кинул в папку для немецкого, ошибки исчезли, но! вступление или приветствие(не знаю как правильно "Welcomm") исчезло, к тому же исчезли линки на Архив и на Главную страницу.

пример здесь: Форум

какие мне нужно файлы переписать с английского языка в немецкую папку чтобы отображалось приветствие как в английском и линки были такими же?

 

 

Зарание огромное спасибо!

:D

 

ЗЫ: Нашел еще одну ошибку, при перемене разных языков форум берет картинки некоторые с папки EN а некоторые напрямую с style_images\1

получается несовпадение языков... наверно какая то ошибка в переключениях картинок...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

comvirus

И тебя с наступающим! :D

Parse error: parse error, unexpected ';', expecting ')' in F:\Apache\Apache2\htdocs\bord\lang\en\lang_topic.php on line 67

Кинь сюда содержимое своего en\lang_topic.php, можно только строчки с 57ой по 77ую с выделением жирным шрифтом 67ой...

к тому же исчезли линки на Архив и на Главную страницу.

Значит, неполная локализация. Допиши руками прямо в ланг-файл. Посмотри в русском или английском ланге, где соответствующая пропавшим местам строчка. Скопируй её в соответствующий немецкий файл, попутно переведя. ;)

не знаю как правильно "Welcomm"

Wilkommen :)

ЗЫ: Нашел еще одну ошибку, при перемене разных языков форум берет картинки некоторые с папки EN а некоторые напрямую с style_images\1

Значит, надо отредактировать соответствующие макросы в админке. Разберись сначала с ланг-файлами, а потом и это посмотрим.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

'active_users_detail'  => "%s Guests and %s Anonymous Users",

'active_users_title'   => "%s User(s) are reading this topic",

'active_users_members' => "%s Members:",

 

'go_new_post' => "Go to first unread post",

'edited_by'   => "This post has been edited by <b>%s</b> on %s",

 

// Хак Online-Offline.

 

$lang['M_On_T']          =  "<#S_PRE#> <font color='<#ON_COLOR#>'>Online</font>";

$lang['M_Off_T']         =  "<#S_PRE#> <font color='<#OFF_COLOR#>'>Offline</font>";

$lang['M_On_I']          =  "<br><#S_PRE#> <img src='<#ON_IMAGE#>' alt='<#U_NAME#> is Online'>";

$lang['M_Off_I']         =  "<br><#S_PRE#> <img src='<#OFF_IMAGE#>' alt='<#U_NAME#> is Offline'>";

 

// Хак Online-Offline. Конец.

 

'UNSUBBIT'   => "Unsubscribe all from topic",

 

EDIT_TOPIC     => "Edit Topic Title",

forum_jump     => "Forum Jump",

 

 

а в каком из лангвич файлах смотреть различия? или там во всех по немногу?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

$lang['M_On_T']          =  "<#S_PRE#> <font color='<#ON_COLOR#>'>Online</font>";
$lang['M_Off_T']         =  "<#S_PRE#> <font color='<#OFF_COLOR#>'>Offline</font>";
$lang['M_On_I']          =  "<br><#S_PRE#> <img src='<#ON_IMAGE#>' alt='<#U_NAME#> is Online'>";
$lang['M_Off_I']         =  "<br><#S_PRE#> <img src='<#OFF_IMAGE#>' alt='<#U_NAME#> is Offline'>";

Мдяяяяя......................

Исправь это всё.

Замени

$lang['blabla']  =

на

'blabla' =>

и точку с запятой в конце на запятую.

 

Например, вместо

$lang['M_Off_T']         =  "<#S_PRE#> <font color='<#OFF_COLOR#>'>Offline</font>";

будет

'M_Off_T'         =>  "<#S_PRE#> <font color='<#OFF_COLOR#>'>Offline</font>",

 

Краткое пояснение: есть два способа записи языковых файлов. В языковом файле хранится массив, состоящий из строчек. Можно задавать массив целиком:

$lang = array( 'element1' => 'value1', 'element2' => 'value2' );

а можно поэлементно

$lang['element1'] = 'value1';
$lang['element2'] = 'value2';

Вот только совмещать эти формы записи нельзя. :D

 

а в каком из лангвич файлах смотреть различия? или там во всех по немногу?

Видимо, во всех понемногу. ;) То, что есть на каждой странице (типа "Поиск", "Участники") - в lang_global.php. То, что на главной странице борды - в lang_boards.php. То, что только в темах (типа "Рейтинг", "Сообщений" и т.п.) - в lang_topic.php. Всё вроде логично.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

спасибо, все заработало нормально!

Welcom Panel нашел в lang_bords.php теперь пытаюсь на немецкий перевести.

 

а что делать с кнопками, чтобы они все со свой папки вставлялись?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
что делать с кнопками, чтобы они все со свой папки вставлялись?

Давай так - на каких кнопках это замечено, и приводи из админцентра соответствующий этой кнопке шаблон.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

Замечено на всех кнопках и картинках, кроме Report и Ответить

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Vanish

глобальная тема, не думаю что меня только заинтересует.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Глобальня тема. Всех интересует но общаются тут только двое.

Так быстро в приват, результат, отлаженный нормально, на публику. Все вопрос исчерпан. Претензии в приват. Тема закрыта.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

comvirus

Ты отредактировал только макрос A_REPLY

<img src='style_images/<#IMG_DIR#>/<#LANG_ID#>/t_reply.gif' border='0'  alt='Ответ в тему'  />

Нужно отредактировать таким же образом все макросы, кнопки которых будут на разных языках. Например, вместо

<img src='style_images/<#IMG_DIR#>/t_new.gif' border='0'  alt='Создание новой темы' />

в A_POST должно быть

<img src='style_images/<#IMG_DIR#>/<#LANG_ID#>/t_new.gif' border='0'  alt='Создание новой темы' />

и т.д.

В описании установки мода A_REPLY приведён только в качестве примера... :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

Я в свое время конструкцию

<img src='style_images/<#IMG_DIR#>/t_reply.gif' border='0'  alt='Reply to this topic' />

заменил на

<b>ОТВЕТИТЬ</b>

 

Посоветуй, как теперь сделать, чтобы в зависимости от языка появлялось

<b>ОТВЕТИТЬ</b> или <b>REPLY</b>

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.