My solution for multilanguage products

Phoca Cart - complex e-commerce extension
PixelZombie
Phoca Member
Phoca Member
Posts: 18
Joined: 05 Jun 2018, 13:10

Re: My solution for multilanguage products

Post by PixelZombie »

Hey Jan,

I already tried to change the output with content.prepare in various files, but unfortunately I can't get it to work. :-(
User avatar
Jan
Phoca Hero
Phoca Hero
Posts: 48402
Joined: 10 Nov 2007, 18:23
Location: Czech Republic
Contact:

Re: My solution for multilanguage products

Post by Jan »

This reads the content plugins so the question is if the translation feature is based on content or system plugins?

Jan
If you find Phoca extensions useful, please support the project
PixelZombie
Phoca Member
Phoca Member
Posts: 18
Joined: 05 Jun 2018, 13:10

Re: My solution for multilanguage products

Post by PixelZombie »

It's a system plugin

Code: Select all

jimport('joomla.plugin.plugin');

class plgSystemMultilanguagesck extends JPlugin
{

	function __construct(&$subject, $config) {
        parent :: __construct($subject, $config);
    }

	public function onAfterRender()
	{
		$app = JFactory::getApplication();
        $document = JFactory::getDocument();
        $doctype = $document->getType();
		$input = new JInput();

        // si pas en frontend, on sort
        if ($app->isAdmin()) {
            return false;
        }

        // si pas HTML, on sort
        if ($doctype !== 'html') {
            return;
        }
		
		if ($input->get('layout') == 'edit') {
			return;
		}

        // renvoie les données dans la page
        $body = JResponse::getBody();
		
		// debug mode
		// get attribute from system plugin params
		$plugin = JPluginHelper::getPlugin('system', 'multilanguagesck');
		$pluginParams = new JRegistry($plugin->params);
		if ($pluginParams->get('debugmode') == '1') {
			// get the language
			$lang = JFactory::getLanguage();
			$langtag = $lang->getTag(); // returns fr-FR or en-GB
			$debugmessage = '<p style="font-size:14px;color:red;">The actual language tag is : '.$langtag.'</p>';
			$body = str_replace("<body",$debugmessage."<body", $body);
		}
					
		$regex = "#{langck(.*?){/langck}#s"; // masque de recherche
		$body = preg_replace_callback($regex, 'self::checklanguageck', $body);
        
        JResponse::setBody($body);
    }
	
	
	function checklanguageck(&$matches) {

		// découpe l'expression pour récupérer les textes
		$patterns = "#{langck(.*)}(.*){/langck}#Uis";
		$result = preg_match($patterns, $matches[0], $results);

		// vérifie si des paramètres personnalisés existent
		$params = explode('=', $results[1]);

		// si pas de langue définie on sort
		if (!isset($params[1])) return $matches[0];
		
		$lang = JFactory::getLanguage();
		$langtag = $lang->getTag(); // returns fr-FR or en-GB
			
		// vérifie si ça colle avec la langue active
		if (($params[1] == $langtag) AND isset($results[2])) {
			$return = $results[2];
		} else {
			$return = '';
		}
			
		return $return;
	}
		
}
User avatar
Jan
Phoca Hero
Phoca Hero
Posts: 48402
Joined: 10 Nov 2007, 18:23
Location: Czech Republic
Contact:

Re: My solution for multilanguage products

Post by Jan »

Hi, hmmm, so I think, this cannot be somehow managed as the system plugin applies after the content output is ready :idea:

Jan
If you find Phoca extensions useful, please support the project
PixelZombie
Phoca Member
Phoca Member
Posts: 18
Joined: 05 Jun 2018, 13:10

Re: My solution for multilanguage products

Post by PixelZombie »

Can't we just take the replace-function and put it where the mail-output is created?
User avatar
Jan
Phoca Hero
Phoca Hero
Posts: 48402
Joined: 10 Nov 2007, 18:23
Location: Czech Republic
Contact:

Re: My solution for multilanguage products

Post by Jan »

The question is what should be replaced (if you want simulate the function of the whole system plugin or you somehow get the event for the system plugin), hard to say, I don't have any experiences regarding this :idea: :-(

Jan
If you find Phoca extensions useful, please support the project
User avatar
Jan
Phoca Hero
Phoca Hero
Posts: 48402
Joined: 10 Nov 2007, 18:23
Location: Czech Republic
Contact:

Re: My solution for multilanguage products

Post by Jan »

Hi, the only idea for now is:

Add this method to the system plugin:
plugins\system\multilanguagesck\multilanguagesck.php

Code: Select all

public function onChangeText(&$body) {
		// debug mode
		// get attribute from system plugin params
		$plugin = JPluginHelper::getPlugin('system', 'multilanguagesck');
		$pluginParams = new JRegistry($plugin->params);
		if ($pluginParams->get('debugmode') == '1') {
			// get the language
			$lang = JFactory::getLanguage();
			$langtag = $lang->getTag(); // returns fr-FR or en-GB
			$debugmessage = '<p style="font-size:14px;color:red;">The actual language tag is : '.$langtag.'</p>';
			$body = $body . $debugmessage;
		}
					
		$regex = "#{langck(.*?){/langck}#s"; // masque de recherche
		$body = preg_replace_callback($regex, 'self::checklanguageck', $body);
        
		return true;
    }
and in:
administrator\components\com_phocacart\libraries\phocacart\order\status.php

line cca 480:

Code: Select all

JPluginHelper::importPlugin( 'system' );
$dispatcher = JEventDispatcher::getInstance();
JPluginHelper::importPlugin('plgSystemMultilanguagesck'); 
$dispatcher->trigger('onChangeText', array(&$body));
$dispatcher->trigger('onChangeText', array(&$bodyOthers));
Please test and let me know.

Did you do some modifications to the system plugin?
Maybe we can contact the author of this plugin and ask to extend it about "manual" method to translate text. If this will be not possible we can do specific version for Phoca Cart.

Jan
If you find Phoca extensions useful, please support the project
PixelZombie
Phoca Member
Phoca Member
Posts: 18
Joined: 05 Jun 2018, 13:10

Re: My solution for multilanguage products

Post by PixelZombie »

Awesome Jan! That worked!
I think creating a phoca version of this multilanguge plugin would be the best way to do and maintain it. As I see it, the original plugin isn't maintained anymore since the last update is really old.

Cheers!

Frank
User avatar
Jan
Phoca Hero
Phoca Hero
Posts: 48402
Joined: 10 Nov 2007, 18:23
Location: Czech Republic
Contact:

Re: My solution for multilanguage products

Post by Jan »

Ok, see the link to the edited file here (at the bottom):

https://www.phoca.cz/download/category/ ... -component

Please install and check (the status.php file needs to be edited now, I will add it in the next version)

Jan
If you find Phoca extensions useful, please support the project
PixelZombie
Phoca Member
Phoca Member
Posts: 18
Joined: 05 Jun 2018, 13:10

Re: My solution for multilanguage products

Post by PixelZombie »

Hey Jan,

I just tested it out a little more and noticed that the payment title and the email-title are'nt translated by the plugin. The Mail-Description is fine. See the Screenshot for details:

Image

Could you extend the plugin to these fields aswell?

Cheers

Frank
Post Reply