I think you sould try to store `$this->lang_path` in a local var, before changing it and after the call just set it back to the local var:

				else if ($this->lang_name == basename($config['default_lang']))
				{
					// Fall back to the English Language
					$reset_lang_name = $this->lang_name;
					$this->lang_name = 'en';
					$this->set_lang($lang, $help, $lang_file, $use_db, $use_help, $ext_name);
					$this->lang_name = $reset_lang_name;
				}
				else if ($this->lang_name == $this->data['user_lang'])
				{
					// Fall back to the board default language
					$reset_lang_name = $this->lang_name;
					$this->lang_name = basename($config['default_lang']);
					$this->set_lang($lang, $help, $lang_file, $use_db, $use_help, $ext_name);
					$this->lang_name = $reset_lang_name;
				}
				return;

Can you try this?