Multivendor version - Frontend Language Bar

Hi all,



I have got a question in regards to the language bar in shop front.



We were required to set Localizations for different languages in different areas.



There was no problem when we were setting up the Localization.



Shop front shows corrected selection of currencies, but the language bar is showing all the available languages that has been entered in the system.



e.g.

English, Spanish, French, Dutch, Danish, German are active in the backend.

I set the localization of languages for Germany only German and English.

End up the front end shows all the available languages and when I click on those “extra” languages, nothing had happened. But if I click on German, the page will then translated to German with no problem.



[attachment=6440:shopfront.png]

[attachment=6439:backend.png]



I turned on the Template debugging console in “Setting” → “General”, the $languages variable only contains English and German.



Any one has thoughts in regards to this matter?



Thanks in advanced



Ray

backend.png

shopfront.png

No one is experiencing the same situation?

Hello Raymond,



Thank you for your message.



In order to fix this issue, please replace the following part of code:


function fn_get_languages($include_hidden = false)
{
$language_condition = $include_hidden ? "WHERE status <> 'D'" : "WHERE status = 'A'";
return db_get_hash_array("SELECT lang_code, name FROM ?:languages ?p", 'lang_code', $language_condition);
}




with this one:


function fn_get_languages($include_hidden = false, $check_localization = false)
{
$language_condition = $include_hidden ? "WHERE status <> 'D'" : "WHERE status = 'A'";
$languages = db_get_hash_array("SELECT lang_code, name FROM ?:languages ?p", 'lang_code', $language_condition);

if (defined('CART_LOCALIZATION') && $check_localization = true) {
$loc_data = fn_get_localization_data(CART_LOCALIZATION, CART_LANGUAGE, true);

foreach ($languages as $lang_code => $array) {
if (!array_key_exists($lang_code, $loc_data['languages'])) {
unset($languages[$lang_code]);
}
}
}

return $languages;
}




in the fn.cms.php file located in the core directory of your CS-Cart installation. After this, please replace the following line of code:


'function' => array('fn_get_languages'),



with this one:


'function' => array('fn_get_languages', true),



in the blocks.php file located in the schemas/block_manager directory of your CS-Cart installation and clear the template cache. In order to do it, open this link in your browser: http://www.your_doma…om/admin.php?cc where www.your_domain.com is the address of your store, and where admin.php is a script file for the administration panel of your store, which was renamed for security reasons.Before cleaning the template cache you should be logged in to the administration panel of your store.



Please apply these changes and check the result.



Thank you.





Pavel Zyukin

CS-Cart Support team