Jump to content

Ελληνικά pop up messages σε Javascript Alerts


mitsos1os
 Share

Recommended Posts

Καλησπέρα παιδιά.

Έχω πρόβλημα με τα μηνύματα popup που πετάγονται με javascript alerts στο Prestashop σε διάφορα σημεία στο site, όπως για παράδειγμα όταν πας να προσθέσεις στη λίστα προϊόντων ένα προϊόν που δεν έχει απόθεμα και πετάει το μήνυμα There isn't enough product in stock στα αγγλικά και το ανάλογο ελληνικό στη μετάφραση, ενώ θα έπρεπε να βγάλει

"Δεν υπάρχουν αρκετά προϊόντα σε απόθεμα",

βγάζει

"Δεν υπάρχου&nu....... κλπ"

 

Είδα αρκετά παρόμοια θέματα και στον Prestashop Issue Tracker, αλλά δυστυχώς χωρία κάποια ουσιώδη λύση. Μάλιστα άνοιξα και ένα issue εγώ εδώ:

http://forge.prestashop.com/browse/PSCFV-8851

 

Κοιτώντας τον κώδικα javascript βλέπω ότι το μήνυμα έρχεται ήδη λάθος στο alert με τη μεταβλητή jsonData.error. Δεν το χαλάει η javascript δηλαδή. Άρα λογικά κάπου χαλάει στην παραγωγή του με php. Δυστυχώς όμως δεν μπορώ να το βρώ πουθενά που παράγεται.

 

Είδα κάποιους με το ίδιο πρόβλημα στον tracker που αναφέρουν ότι λύθηκε το πρόβλημα με την έκδοση του 3.1.13 του smarty, όμως έχω ήδη αυτήν λόγω της αναβάθμισης σε prestashop 1.5.4

 

Κάθε βοήθεια δεκτή. Είναι αρκετά επείγον το θέμα...

Κάθε βοήθεια και συμβουλή ευπρόσδεκτη.

Ευχαριστώ πολύ.

Share this post


Link to post
Share on other sites

Παιδιά βρήκα τη λύση.

Το πρόβλημα είναι ότι η Javascript στα alert δεν μπορεί να μεταφράσει χαρακτήρες htmlentity χωρίς escape χαρακτήρες όπως τους δίνει το Prestashop, οπότε τα δείχνει ως έχουν. Εγώ έλυσα το πρόβλημά μου, κάνοντας override την default alert συνάρτηση της Javascript, ώστε με την χρήση του jQuery να δέχεται απευθείας το τελικό κείμενο και όχι σε htmlentity μορφή.

Πρόσθεσα στον κώδικα του header.tpl του θέματός μου, τον κώδικα αυτόν μέσα στο <head>

 

<script type="text/javascript">
var old_alert=window.alert;
window.alert=function(msg){
old_alert($('<div/>').html(msg).text());
};
</script>

 

Για περισσότερες πληροφορίες μπορείτε να δείτε την απάντησή μου εδώ στον issue tracker: http://forge.prestashop.com/browse/PSCFV-8851?focusedCommentId=72078#comment-72078

 

Ελπίζω να βοήθησα...

  • Like 1

Share this post


Link to post
Share on other sites

  • 1 month later...
Παιδιά βρήκα τη λύση. Το πρόβλημα είναι ότι η Javascript στα alert δεν μπορεί να μεταφράσει χαρακτήρες htmlentity χωρίς escape χαρακτήρες όπως τους δίνει το Prestashop, οπότε τα δείχνει ως έχουν. Εγώ έλυσα το πρόβλημά μου, κάνοντας override την default alert συνάρτηση της Javascript, ώστε με την χρήση του jQuery να δέχεται απευθείας το τελικό κείμενο και όχι σε htmlentity μορφή. Πρόσθεσα στον κώδικα του header.tpl του θέματός μου, τον κώδικα αυτόν μέσα στο
 

Για περισσότερες πληροφορίες μπορείτε να δείτε την απάντησή μου εδώ στον issue tracker: http://forge.prestashop.com/browse/PSCFV-8851?focusedCommentId=72078#comment-72078 Ελπίζω να βοήθησα...

 

Για το block cart, σε ποιο αρχείο πρέπει να γίνει η προσθήκη;

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Καλησπέρα φίλε μου. Όπως λέω στο bug tracker στο Link που παραπέμπω στο post μου, για να κάνεις override την alert συνάρτηση και να τα βγάζει σωστά τα μηνύματα στα ελληνικά, αρκεί να προσθέσεις τον κώδικα

<script type="text/javascript">
var old_alert=window.alert;
window.alert=function(msg){ old_alert($('<div/>').html(msg).text()); };
</script>

στο αρχείο header.tpl του template Που χρησιμοποιείς. Αυτό θα βρίσκεται στη διαδρομή:

/themes/"ONOMA TEMPLATE"/header.tpl

Εκεί βάλτο κατά προτίμηση αμέσως πριν από το tag {$HOOK_HEADER}

Share this post


Link to post
Share on other sites

Αν το έκανες σωστά θα έπιασε.... Εφόσον βέβαια μιλάμε για το ίδιο πρόβλημα έτσι.... Αν θες στείλε μου το αρχείο του template Που χρησιμοποιείς και θα στο κάνω εγώ.... Κάντο attach εδώ σε μήνυμα

Share this post


Link to post
Share on other sites

Σ' ευχαριστώ για τη βοήθεια!!!

 

{*

* 2007-2013 PrestaShop

*

* NOTICE OF LICENSE

*

* This source file is subject to the Academic Free License (AFL 3.0)

* that is bundled with this package in the file LICENSE.txt.

* It is also available through the world-wide-web at this URL:

* http://opensource.org/licenses/afl-3.0.php

* If you did not receive a copy of the license and are unable to

* obtain it through the world-wide-web, please send an email

* to license@prestashop.com so we can send you a copy immediately.

*

* DISCLAIMER

*

* Do not edit or add to this file if you wish to upgrade PrestaShop to newer

* versions in the future. If you wish to customize PrestaShop for your

* needs please refer to http://www.prestashop.com for more information.

*

* @author PrestaShop SA <contact@prestashop.com>

* @copyright 2007-2013 PrestaShop SA

* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)

* International Registered Trademark & Property of PrestaShop SA

*}

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7 " lang="{$lang_iso}"> <![endif]-->

<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8 ie7" lang="{$lang_iso}"> <![endif]-->

<!--[if IE 8]><html class="no-js lt-ie9 ie8" lang="{$lang_iso}"> <![endif]-->

<!--[if gt IE 8]> <html class="no-js ie9" lang="{$lang_iso}"> <![endif]-->

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$lang_iso}">

<head>

<title>{$meta_title|escape:'htmlall':'UTF-8'}</title>

{if isset($meta_description) AND $meta_description}

<meta name="description" content="{$meta_description|escape:html:'UTF-8'}" />

{/if}

{if isset($meta_keywords) AND $meta_keywords}

<meta name="keywords" content="{$meta_keywords|escape:html:'UTF-8'}" />

{/if}

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

<meta http-equiv="content-language" content="{$meta_language}" />

<meta name="generator" content="PrestaShop" />

<meta name="robots" content="{if isset($nobots)}no{/if}index,{if isset($nofollow) && $nofollow}no{/if}follow" />

<link rel="icon" type="image/vnd.microsoft.icon" href="{$favicon_url}?{$img_update_time}" />

<link rel="shortcut icon" type="image/x-icon" href="{$favicon_url}?{$img_update_time}" />

<script type="text/javascript">

var baseDir = '{$content_dir}';

var baseUri = '{$base_uri}';

var static_token = '{$static_token}';

var token = '{$token}';

var priceDisplayPrecision = {$priceDisplayPrecision*$currency->decimals};

var priceDisplayMethod = {$priceDisplay};

var roundMode = {$roundMode};

</script>

{if isset($css_files)}

{assign var=forcount value=1}

{foreach from=$css_files key=css_uri item=media name=css}

{assign var=cssfile value=$css_uri|substr:-30}

{assign var=cssfile2 value=$css_uri|substr:-20}

{if $cssfile != 'actinfos/blockcontactinfos.css' and

$cssfile != '/modules/blockcms/blockcms.css' and

$cssfile != '/blockcontact/blockcontact.css' and

$cssfile != 'facturer/blockmanufacturer.css' and

$cssfile != 'countfooter/blockmyaccount.css' and

$cssfile != 'es/blocksocial/blocksocial.css' and

$cssfile != '/homefeatured/homefeatured.css' and

$cssfile != 'les/blockreinsurance/style.css' and

$cssfile != 'es/blocksearch/blocksearch.css' and

$cssfile != 'lockuserinfo/blockuserinfo.css' and

$cssfile != 'odules/blockcart/blockcart.css' and

$cssfile != 'tlinks/blockpermanentlinks.css' and

$cssfile2 != 'css/product_list.css' and

$cssfile != 'mplete/jquery.autocomplete.css' and

$cssfile != 'odules/blocktags/blocktags.css'

}

{assign var=forcount value=$forcount+1}

<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />

{/if}

{/foreach}

{/if}

<link href="{$css_dir}responsive-tables.css" rel="stylesheet" type="text/css" media="screen" />

<link href="{$css_dir}custom.css" rel="stylesheet" type="text/css" media="screen" />

 

{if isset($js_files)}

{foreach from=$js_files item=js_uri}

<script type="text/javascript" src="{$js_uri}"></script>

{/foreach}

{/if}

<script type="text/javascript" src="{$js_dir}respond.min.js"></script>

<script type="text/javascript" src="{$js_dir}imgSizer.js"></script>

<script type="text/javascript" src="{$js_dir}jQuery.equalHeights.js"></script>

<script type="text/javascript" src="{$js_dir}breakpoints.js"></script>

<script type="text/javascript" src="{$js_dir}responsive-tables.js"></script>

<script type="text/javascript" src="{$js_dir}responsive.js"></script>

 

 

 

 

 

 

<script type="text/javascript">

var old_alert=window.alert;

window.alert=function(msg){ old_alert($('<div/>').html(msg).text()); };

</script>

 

{$HOOK_HEADER}

</head>

 

<body class="width2 {if $hide_left_column}hide-left-column{/if} {if $hide_right_column}hide-right-column{/if} {if $content_only} content_only {/if}" {if isset($page_name)}id="{$page_name|escape:'htmlall':'UTF-8'}"{/if}>

{if !$content_only}

{if isset($restricted_country_mode) && $restricted_country_mode}

<div id="restricted-country">

<p>{l s='You cannot place a new order from your country.'} <span class="bold">{$geolocation_country}</span></p>

</div>

{/if}

<div id="layout" class="clearfix margin1">

 

<!-- Header -->

<div id="header">

<div id="header_right">

<div id="logo_wrapper">

<a id="header_logo" href="{$base_dir}" title="{$shop_name|escape:'htmlall':'UTF-8'}">

<img class="logo" src="{$logo_url}" alt="{$shop_name|escape:'htmlall':'UTF-8'}" />

</a>

</div>

{$HOOK_TOP}

</div>

</div>

 

<div id="columns" class="clearfix">

<!-- Left -->

<div id="left_column" class="column">

{if (isset($page_name) and $page_name == 'index')}{$HOOK_LEFT_COLUMN}{elseif (isset($page_name) and $page_name == 'category')}{$HOOK_LEFT_COLUMN}{elseif (isset($page_name) and $page_name == 'product')}{$HOOK_LEFT_COLUMN}{else}{$HOOK_LEFT_COLUMN}{/if}

</div>

 

<!-- Center -->

<div id="center_column" class="{if (isset($page_name) and $page_name == 'index')}{elseif (isset($page_name) and $page_name == 'category')}{elseif (isset($page_name) and $page_name == 'product')} columnWide2{else}{/if}">

{/if}

Share this post


Link to post
Share on other sites

Α μάλιστα..... Το πρόβλημα είναι ότι εγώ χρησιμοποιώ το jquery για να το πετύχω αυτή την μετατροπή που λέω. ενώ για κάποιο λόγο το πρότυπό σου δεν φαίνεται να το φορτώνει στο header... Οπότε λογικά με την προσθήκη της γραμμής

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script> επίσης θα δουλέψει....

Συνολικά δηλαδή έχουμε αυτό το περιεχόμενο

{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.or...ses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA
* @license http://opensource.or...ses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7 " lang="{$lang_iso}"> <![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8 ie7" lang="{$lang_iso}"> <![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9 ie8" lang="{$lang_iso}"> <![endif]-->
<!--[if gt IE 8]> <html class="no-js ie9" lang="{$lang_iso}"> <![endif]-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$lang_iso}">
<head>
<title>{$meta_title|escape:'htmlall':'UTF-8'}</title>
{if isset($meta_description) AND $meta_description}
<meta name="description" content="{$meta_description|escape:html:'UTF-8'}" />
{/if}
{if isset($meta_keywords) AND $meta_keywords}
<meta name="keywords" content="{$meta_keywords|escape:html:'UTF-8'}" />
{/if}
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="content-language" content="{$meta_language}" />
<meta name="generator" content="PrestaShop" />
<meta name="robots" content="{if isset($nobots)}no{/if}index,{if isset($nofollow) && $nofollow}no{/if}follow" />
<link rel="icon" type="image/vnd.microsoft.icon" href="{$favicon_url}?{$img_update_time}" />
<link rel="shortcut icon" type="image/x-icon" href="{$favicon_url}?{$img_update_time}" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type="text/javascript">
  var old_alert=window.alert;
  window.alert=function(msg){
  old_alert($('<div/>').html(msg).text());
  };
</script>
<script type="text/javascript">
var baseDir = '{$content_dir}';
var baseUri = '{$base_uri}';
var static_token = '{$static_token}';
var token = '{$token}';
var priceDisplayPrecision = {$priceDisplayPrecision*$currency->decimals};
var priceDisplayMethod = {$priceDisplay};
var roundMode = {$roundMode};
</script>
{if isset($css_files)}
{assign var=forcount value=1}
{foreach from=$css_files key=css_uri item=media name=css}
{assign var=cssfile value=$css_uri|substr:-30}
{assign var=cssfile2 value=$css_uri|substr:-20}
{if $cssfile != 'actinfos/blockcontactinfos.css' and
$cssfile != '/modules/blockcms/blockcms.css' and
$cssfile != '/blockcontact/blockcontact.css' and
$cssfile != 'facturer/blockmanufacturer.css' and
$cssfile != 'countfooter/blockmyaccount.css' and
$cssfile != 'es/blocksocial/blocksocial.css' and
$cssfile != '/homefeatured/homefeatured.css' and
$cssfile != 'les/blockreinsurance/style.css' and
$cssfile != 'es/blocksearch/blocksearch.css' and
$cssfile != 'lockuserinfo/blockuserinfo.css' and
$cssfile != 'odules/blockcart/blockcart.css' and
$cssfile != 'tlinks/blockpermanentlinks.css' and
$cssfile2 != 'css/product_list.css' and
$cssfile != 'mplete/jquery.autocomplete.css' and
$cssfile != 'odules/blocktags/blocktags.css'
}
{assign var=forcount value=$forcount+1}
<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />
{/if}
{/foreach}
{/if}
<link href="{$css_dir}responsive-tables.css" rel="stylesheet" type="text/css" media="screen" />
<link href="{$css_dir}custom.css" rel="stylesheet" type="text/css" media="screen" />
{if isset($js_files)}
{foreach from=$js_files item=js_uri}
<script type="text/javascript" src="{$js_uri}"></script>
{/foreach}
{/if}
<script type="text/javascript" src="{$js_dir}respond.min.js"></script>
<script type="text/javascript" src="{$js_dir}imgSizer.js"></script>
<script type="text/javascript" src="{$js_dir}jQuery.equalHeights.js"></script>
<script type="text/javascript" src="{$js_dir}breakpoints.js"></script>
<script type="text/javascript" src="{$js_dir}responsive-tables.js"></script>
<script type="text/javascript" src="{$js_dir}responsive.js"></script>
{$HOOK_HEADER}
</head>
<body class="width2 {if $hide_left_column}hide-left-column{/if} {if $hide_right_column}hide-right-column{/if} {if $content_only} content_only {/if}" {if isset($page_name)}id="{$page_name|escape:'htmlall':'UTF-8'}"{/if}>
{if !$content_only}
{if isset($restricted_country_mode) && $restricted_country_mode}
<div id="restricted-country">
<p>{l s='You cannot place a new order from your country.'} <span class="bold">{$geolocation_country}</span></p>
</div>
{/if}
<div id="layout" class="clearfix margin1">
<!-- Header -->
<div id="header">
<div id="header_right">
<div id="logo_wrapper">
<a id="header_logo" href="{$base_dir}" title="{$shop_name|escape:'htmlall':'UTF-8'}">
<img class="logo" src="{$logo_url}" alt="{$shop_name|escape:'htmlall':'UTF-8'}" />
</a>
</div>
{$HOOK_TOP}
</div>
</div>
<div id="columns" class="clearfix">
<!-- Left -->
<div id="left_column" class="column">
{if (isset($page_name) and $page_name == 'index')}{$HOOK_LEFT_COLUMN}{elseif (isset($page_name) and $page_name == 'category')}{$HOOK_LEFT_COLUMN}{elseif (isset($page_name) and $page_name == 'product')}{$HOOK_LEFT_COLUMN}{else}{$HOOK_LEFT_COLUMN}{/if}
</div>
<!-- Center -->
<div id="center_column" class="{if (isset($page_name) and $page_name == 'index')}{elseif (isset($page_name) and $page_name == 'category')}{elseif (isset($page_name) and $page_name == 'product')} columnWide2{else}{/if}">
{/if}

 

Δοκίμασέ το και πες μου να δουλέψει!

Share this post


Link to post
Share on other sites

Δυστυχώς δεν έπιασε. :/ (Ευχαριστώ, όμως.)

Αυτό το jquery τι είναι, - να το χρησιμοποιήσω; Είναι κάτι απλό;

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More