My solution for multilanguage products
-
- Phoca Member
- Posts: 18
- Joined: 05 Jun 2018, 13:10
Re: My solution for multilanguage products
Hey Jan,
I already tried to change the output with content.prepare in various files, but unfortunately I can't get it to work.
I already tried to change the output with content.prepare in various files, but unfortunately I can't get it to work.
- Jan
- Phoca Hero
- Posts: 48402
- Joined: 10 Nov 2007, 18:23
- Location: Czech Republic
- Contact:
Re: My solution for multilanguage products
This reads the content plugins so the question is if the translation feature is based on content or system plugins?
Jan
Jan
If you find Phoca extensions useful, please support the project
-
- Phoca Member
- Posts: 18
- Joined: 05 Jun 2018, 13:10
Re: My solution for multilanguage products
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;
}
}
- Jan
- Phoca Hero
- Posts: 48402
- Joined: 10 Nov 2007, 18:23
- Location: Czech Republic
- Contact:
Re: My solution for multilanguage products
Hi, hmmm, so I think, this cannot be somehow managed as the system plugin applies after the content output is ready
Jan
Jan
If you find Phoca extensions useful, please support the project
-
- Phoca Member
- Posts: 18
- Joined: 05 Jun 2018, 13:10
Re: My solution for multilanguage products
Can't we just take the replace-function and put it where the mail-output is created?
- Jan
- Phoca Hero
- Posts: 48402
- Joined: 10 Nov 2007, 18:23
- Location: Czech Republic
- Contact:
Re: My solution for multilanguage products
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
Jan
Jan
If you find Phoca extensions useful, please support the project
- Jan
- Phoca Hero
- Posts: 48402
- Joined: 10 Nov 2007, 18:23
- Location: Czech Republic
- Contact:
Re: My solution for multilanguage products
Hi, the only idea for now is:
Add this method to the system plugin:
plugins\system\multilanguagesck\multilanguagesck.php
and in:
administrator\components\com_phocacart\libraries\phocacart\order\status.php
line cca 480:
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
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;
}
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));
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
-
- Phoca Member
- Posts: 18
- Joined: 05 Jun 2018, 13:10
Re: My solution for multilanguage products
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
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
- Jan
- Phoca Hero
- Posts: 48402
- Joined: 10 Nov 2007, 18:23
- Location: Czech Republic
- Contact:
Re: My solution for multilanguage products
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
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
-
- Phoca Member
- Posts: 18
- Joined: 05 Jun 2018, 13:10
Re: My solution for multilanguage products
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:
Could you extend the plugin to these fields aswell?
Cheers
Frank
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:
Could you extend the plugin to these fields aswell?
Cheers
Frank