Перейти к контенту
  • 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>

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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