Topic: Language integration fix for punBB
If you use multiple languages in vldPersonals and have punBB added you will probably see the forum system language is the punBB default. This fix sets the punBB system language according to the members profile.
Tested on vldPersonals 2.6 with punBB 1.21/1.23.
Prerequisites:
-Respective languages as in vldPersonals must be installed in punBB (otherwise punBB default language is shown).
-Language names in vldPersonals must be equivalent to languages in punBB, i.e. written in English and first character must be written as capital. E.g. "German"; not "german" nor "Deutch".
Member must log out and in after changing his language in order to make the change(s) takes place in the forum.
Here goes:
Find the file:
yourdomain/includes/modules/forums/mod.punbb.php
AROUND LINE 92 FIND THIS:
$where_sql = "SET group_id = {$user_data['group_id']},
username = '{$user_data['username']}',
email = '{$user_data['email']}',
CHANGE IT TO:
// set commmon details
$where_sql = "SET group_id = {$user_data['group_id']},
language = '{$user_conf['language']}',
username = '{$user_data['username']}',
email = '{$user_data['email']}',
AROUND LINE 25-28 FIND THIS:
// fetch system member
$result = $DB->query("SELECT username, password, email, lastvisit, joindate, ipaddress FROM " . DB_PREFIX . "members WHERE member_id='{$params['member_id']}' LIMIT 1");
if ( !$DB->num_rows($result) ) return;
$user_data = $DB->fetch_array($result);
AFTER, ADD THIS:
////-------BOF LANGUAGE----------------------
///Added for the language update in PUNBB 1.2X, fix by Sitemaster 14 FEB 2011.
/// Member must log out and in in order to make the forum work after language change.
// fetch members language
$result_lang = $DB->query("SELECT language_id FROM " . DB_PREFIX . "members_conf WHERE conf_id='{$params['member_id']}' LIMIT 1");
if ( !$DB->num_rows($result_lang) ) return;
$user_data_lang = $DB->fetch_array($result_lang);
// We lookup up the language name
//Prerequisite: Language names MUST be in written in English and MUST start with capital. E.g. "German" is correct. "german" is wrong.
$result_lang2 = $DB->query("SELECT name FROM " . DB_PREFIX . "languages WHERE language_id='{$user_data_lang['language_id']}'");
if ( !$DB->num_rows($result_lang2) ) return;
$user_data_lang2 = $DB->fetch_array($result_lang2);
// language details
$user_conf['language'] = mysql_real_escape_string($user_data_lang2['name']);
//-----------EOF LANG---------------------
-----------------------
Thats all