Bienvenue invité ( Connexion | Inscription )
![]() ![]() |
19 May 2012, 10:18
Message
#1
|
|
|
Ceinture orange OSC 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. |
|
|
19 May 2012, 17:43
Message
#2
|
|
![]() Ceinture verte OSC 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 ... |
|
|
20 May 2012, 18:24
Message
#3
|
|
|
Ceinture orange OSC 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. |
|
|
20 May 2012, 19:49
Message
#4
|
|
![]() Ceinture verte OSC 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 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 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 ... |
|
|
21 May 2012, 06:48
Message
#5
|
|
|
Ceinture orange OSC 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. |
|
|
21 May 2012, 08:51
Message
#6
|
|
![]() Ceinture verte OSC 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 ... |
|
|
23 May 2012, 08:28
Message
#7
|
|
|
Ceinture orange OSC 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. |
|
|
![]() ![]() |
|
Version bas débit | Nous sommes le : 19th May 2013 - 10:18 |
| Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |