Jump to content

  • You cannot start a new topic
  • You cannot reply to this topic

Multivendor version - Frontend Language Bar Rate Topic   - - - - -

 
  • Raymond
  • Newbie
  • Members
  • Join Date: 31-Jan 13
  • 3 posts

Posted 05 February 2013 - 01:51 AM #1

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.

shopfront.png
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

 
  • Raymond
  • Newbie
  • Members
  • Join Date: 31-Jan 13
  • 3 posts

Posted 14 February 2013 - 10:39 AM #2

No one is experiencing the same situation?

 
  • CS-Cart team
  • CS-Cart support team
  • Moderators
  • Join Date: 04-Apr 11
  • 3810 posts

Posted 01 April 2013 - 02:13 PM #3

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

Sincerely yours, CS-Cart Support Team

 

User guide       |  Developer documentation  |  Core API documentation