osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [Résolu ]Nouveaux produits pour ......
francois21
posté 19 May 2012, 10:18
Message #1


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 210
Inscrit : 4-September 06
Lieu : dijon
Membre no 11890



Bonjour
Le sujet a déja ete abordé, j'ai bien regardé et j'ai toujours une erreur sur certains mois de l'année (mois avec accent).
J'ai tout passé mes fichiers language en utf_8
Ma bdd n'a plus d'erreur avec les accent et est bien en utf8 .
Je n'ai plus aucune erereur d'accent sur l'ensemble du site sauf pour ces quelque mois février, aôut
Ais je oublié quelque chose.

Ou se gere les %s que l'on trouve par exemple pour "Nouveaux produits pour %s"
ou encore pour "Bienvenue <span class="greetUser">%s!</span> Voudriez vous voir quels <a href="%s"><u>nouveaux produits</u></a> sont disponibles à la vente ?"

Merci d'avance

Ce message a été modifié par francois21 - 23 May 2012, 08:29.


--------------------
Francois

Osco 2.31 avec pas mal de modifs qui fonctionnent.
Go to the top of the page
 
Bonbec
posté 19 May 2012, 17:43
Message #2


Ceinture verte OSC
Icône de groupe

Groupe : Membres
Messages : 708
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour francois21,

Pour l'exemple donné, c'est dans le fichier includes/functions/general.php
Code
if (tep_session_is_registered('customer_first_name') && tep_session_is_registered('customer_id')) {
      $greeting_string = sprintf(TEXT_GREETING_PERSONAL, tep_output_string_protected($customer_first_name), tep_href_link(FILENAME_PRODUCTS_NEW));
    } else {
      $greeting_string = sprintf(TEXT_GREETING_GUEST, tep_href_link(FILENAME_LOGIN, '', 'SSL'), tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'));
    }

Et çà correspond à ton fichier de langue (ici english mais c'est le même principe dans le fichier french) :
Code
define('TEXT_GREETING_PERSONAL', 'Welcome back <span class="greetUser">%s!</span> Would you like to see which <a href="%s"><u>new products</u></a> are available to purchase?');


Sinon pour tes accents, je passe mon site MS2.2 en UTF-8 et j'ai eu aussi quelques problèmes avec des accents récalcitrants.
Il faut enregistrer les fichiers en utf-8 sans Bom et non pas en utf-8 tout court.
J'ai eu un fichier où les "é" et autres accents se transformaient en caractères extras planétaires malgré l'enregistrement en utf-8. La solution a été de réécrire les accents à l'identique dans le fichier avant de l'enregistrer et c'était tout bon ensuite.

Ce message a été modifié par Bonbec - 19 May 2012, 17:44.


--------------------
Config : Osc 2.2 très fortement modifié ... entièrement refait en mai 2012 (passage en UTF-8 et Php 5.3). Le passage à la 2.3 demanderait trop de travail mais je la teste en local ...
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + bidouilles persos pas très OsCommerce (erreurs de jeunesse)
En local j'utilise UwAmp, que du bonheur ...
Go to the top of the page
 
francois21
posté 20 May 2012, 18:24
Message #3


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 210
Inscrit : 4-September 06
Lieu : dijon
Membre no 11890



Bonsoir Bonbec
Merci pour ta réponse.
Je ne suis pas un grand cador en php, mais je me debrouille bien.
Ce que je voudrais savoir c'est comment sont créés ou interpretés les petits sigles %s

Ils y en a pas mal dans toutes la boutique et ils peuvent avoir comme valeur, une date, un nom, un lien ou je ne sais quoi encore.
Et c'est la que je seche, je ne comprend pas comment ça marche ou comment ils sont déclaré ou générés.
Je donnais l'exemple ci dessus parce que sur la page index on a :
"Nouveaux produits pour %s"
et la le petit %s c'est le mois encours.
Et plus bas on a
Bienvenue <span class="greetUser">%s!</span> Voudriez vous voir quels <a href="%s"><u>nouveaux produits</u></a> sont disponibles à la vente ?"
Et la c'est le nom du client logger et plus loin c'est le lien vers les nouveaux produits.

Ce message a été modifié par francois21 - 20 May 2012, 18:25.


--------------------
Francois

Osco 2.31 avec pas mal de modifs qui fonctionnent.
Go to the top of the page
 
Bonbec
posté 20 May 2012, 19:49
Message #4


Ceinture verte OSC
Icône de groupe

Groupe : Membres
Messages : 708
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Re,

C'est la fonction Php sprintf qui est utilisée, elle permet de formater une chaîne de sortie en remplaçant les :
%d : l'argument est traité comme un entier, et présenté comme un nombre décimal signé.
%s : l'argument est traité et présenté comme une chaîne de caractères.
par les variables passées dans l'ordre.

Prenons l'exemple suivant :
$greeting_string = sprintf(TEXT_GREETING_PERSONAL, tep_output_string_protected($customer_first_name), tep_href_link(FILENAME_PRODUCTS_NEW));
TEXT_GREETING_PERSONAL = La chaîne à formater.
define('TEXT_GREETING_PERSONAL', 'Bienvenue <span class="greetUser">%s!</span> Voudriez vous voir quels <a href="%s"><u>nouveaux produits</u></a> sont disponibles à la vente ?');
tep_output_string_protected($customer_first_name) = argument de remplacement traité comme une chaîne de caractère (contient le nom du client)
tep_href_link(FILENAME_PRODUCTS_NEW) = argument de remplacement traité comme une chaîne de caractère (contient le lien vers les nouveaux produits)

A priori ce qui t'intéresse, c'est :
"Nouveaux produits pour %s" et là le petit %s c'est le mois encours."
Puisque tu cherches à afficher correctement les mois avec accents happy.gif

Il y a un define contenant la chaîne à formater dans includes/languages/french/index.php
define('TABLE_HEADING_NEW_PRODUCTS', 'Nouveaux produits pour %s');
Du coup, je cherche où TABLE_HEADING_NEW_PRODUCTS est appelé :
Dans includes/modules/new_products.php :
<h2><?php echo sprintf(TABLE_HEADING_NEW_PRODUCTS, strftime('%B')); ?></h2>
L'argument passé est strftime('%B').
Dans la doc Php strftime le %B formate le nom complet du mois, suivant la locale définie.
La locale définie se trouve dans includes/languages/french.php
Perso chez moi c'est ceci qui "fonctionne" (parfois j'ai la date en texte en langue anglaise mais c'est "logique", voir l'avertissement setlocale) :
setlocale(LC_TIME, "fr_FR.UTF-8");
mb_internal_encoding("UTF-8");
A toi de voir chez ton hébergeur la syntaxe du setlocale qui fonctionne.
J'espère que çà t'aidera un peu happy.gif

PS : je ne suis pas un cador non plus et je n'en ai pas la prétention, mais la doc Php m'aide beaucoup et je commence à être habitué aux jeux de pistes dans le code ...

Ce message a été modifié par Bonbec - 20 May 2012, 20:15.


--------------------
Config : Osc 2.2 très fortement modifié ... entièrement refait en mai 2012 (passage en UTF-8 et Php 5.3). Le passage à la 2.3 demanderait trop de travail mais je la teste en local ...
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + bidouilles persos pas très OsCommerce (erreurs de jeunesse)
En local j'utilise UwAmp, que du bonheur ...
Go to the top of the page
 
francois21
posté 21 May 2012, 06:48
Message #5


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 210
Inscrit : 4-September 06
Lieu : dijon
Membre no 11890



Bonjour
Un grand merci pour ce cour et ton aide.
Je comprend enfin comment ça marche.
ENCORE MERCI


--------------------
Francois

Osco 2.31 avec pas mal de modifs qui fonctionnent.
Go to the top of the page
 
Bonbec
posté 21 May 2012, 08:51
Message #6


Ceinture verte OSC
Icône de groupe

Groupe : Membres
Messages : 708
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour francois21,

Je suis en train de penser à un truc ... vu qu'il y a parfois des problèmes avec strftime
Dans includes/modules/new_products.php, remplacer :
Code
<h2><?php echo sprintf(TABLE_HEADING_NEW_PRODUCTS, strftime('%B')); ?></h2>

par :
Code
<h2><?php echo sprintf(TABLE_HEADING_NEW_PRODUCTS, $mois[date("n")]); ?></h2>

avec précédemment défini dans le fichier includes/languages/french.php :
Code
$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");

Idem en traduit pour les autres langues si tu les utilises.
Pas testé mais logiquement cela devrait résoudre le problème.

Ce message a été modifié par Bonbec - 21 May 2012, 08:59.


--------------------
Config : Osc 2.2 très fortement modifié ... entièrement refait en mai 2012 (passage en UTF-8 et Php 5.3). Le passage à la 2.3 demanderait trop de travail mais je la teste en local ...
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + bidouilles persos pas très OsCommerce (erreurs de jeunesse)
En local j'utilise UwAmp, que du bonheur ...
Go to the top of the page
 
francois21
posté 23 May 2012, 08:28
Message #7


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 210
Inscrit : 4-September 06
Lieu : dijon
Membre no 11890



Bonjour
MERCI Bonbec pour les explications et la deniere solution.
Je met donc ce post résolu.


--------------------
Francois

Osco 2.31 avec pas mal de modifs qui fonctionnent.
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 19th May 2013 - 06:29
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)