MyBB.support, le portail francophone de MyBB

Version complète : [Plugin] Traduire les dates en français
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour,

Je viens partager un petit plugin que j'ai écrit pour traduire les toutes dates de MyBB en français.
Il suffit de l'uploader dans le dossier /inc/plugins/ et de l'activer dans l'administration.

Une seule modification des fichiers interne de MyBB est requise pour traduire les dates de naissance dans les profils :
  • Ouvrez le fichier member.php
  • Trouvez ce code aux alentours de la ligne 1700 :
    Code PHP :
    else
    {
        
    $membday mktime(000$membday[1], $membday[0], 0);
        
    $membday date("F j"$membday);
        
    $membdayage '';

  • Remplacez par :
    Code PHP :
    else
    {
        
    $membday mktime(000$membday[1], $membday[0], 0);
        
    $membday date("F j"$membday);
        
    $membday frenchdate_convert($membday);
        
    $membdayage '';


Toutes les dates devraient maintenant être en français.
Marche pas pour moi Big Grin
(15-02-2012, 23:08)FriendlyCraft a écrit : [ -> ]Marche pas pour moi Big Grin

Vraiment ? Peut-tu m'envoyer un screen par MP ?
Merci du partage je vais essayer.
J'lai mi sur mon forum et il ne marche que à moitié ^^
J'ai bien les mois en Français, mais pas les jours : "Saturday, 4Th Février, 2012 08:43" ^^
En effet, il ne traduit que les mois. Je vais ajouter le support des jours. Merci pour la suggestion.
Bon ba nickel, j'attends ça Smile
Merci à toi o/
C'est fait. Ça devrait fonctionner pour les jours aussi. Smile
Re-télécharge le fichier.
°°
Nan mais je pensais pas y avoir ce soir ^^"
Je teste ça de suite alors o//
Yohohohoho, ça fonctionne sans problème, merci à toi o//
Hmmm, je reviens t'embêter un peu ^^
Je cherche à ce que l'on puisse choisir (ou même carrément le mettre par défaut) le format de date suivant :
Jour 15 Mois, HH:mm
Or ce n'est pas possible actuellement et je n'ai pas trouvé le fichier dans lequel ça allait chercher tout ça :/
J'ai bien essayé le functions.php car Spyto en parlait dans un tuto pour afficher les dates en français mais rien trouvé et pareil dans le fichier functions_time.php (qui calcule les dates et heures si j'ai bien compris ^^).

Merci d'avance à ceux qui me donneront ne serait-ce qu'une piste ;-)
Tout ça me dit quelque chose, vérifie dans ton panel admin je crois bien qu'il y a un paramètre du genre "format de date et heure" Wink
Héhé, j'étais passé par là bas mais j'avais pas pensé à faire ça ^^"
J'voulais me compliquer la vie et changer dans les choix possibles ^^
Et donc un petit lien pour ceux qui chercheront les paramètres que l'on peut écrire : http://php.net/manual/en/function.date.php
Hop, j'up ce petit plugin bien sympatique Smile
Il a donc l'air de bien fonctionner sous MyBB1.8 si on modifie la compatibilité 16 pour 18 dans le fichier frenchdate.php.
Par contre dans le profil des membres je n'arrive pas à obtenir des dates françaises pour les champs "Date de naissance" et "Heure locale".

Est ce que quelqu'un a trouvé la parade ?
Hop, alors j'ai ajouté le petit bout de ligne pour la conversion à chaque fois que la variable $membday était appelé et donc dans le fichier member.php j'ai modifié les lignes suivantes :

Code PHP :
                if($membday[2] >= 1970)
                {
                    
$w_day date("l"mktime(000$membday[1], $membday[0], $membday[2]));
                    
$membday format_bdays($mybb->settings['dateformat'], $membday[1], $membday[0], $membday[2], $w_day);
                }
                else
                {
                    
$bdayformat fix_mktime($mybb->settings['dateformat'], $membday[2]);
                    
$membday mktime(000$membday[1], $membday[0], $membday[2]);
                    
$membday date($bdayformat$membday);
                }
                
$membdayage $lang->membdayage;
            }
            elseif(
$membday[2])
            {
                
$membday mktime(00011$membday[2]);
                
$membday date("Y"$membday);
                
$membdayage '';
            }
            else
            {
                
$membday mktime(000$membday[1], $membday[0], 0);
                
$membday date("F j"$membday);
                
$membdayage '';
            }
        } 
 en

Code PHP :
if($membday[2] >= 1970)
                {
                    
$w_day date("l"mktime(000$membday[1], $membday[0], $membday[2]));
                    
$membday format_bdays($mybb->settings['dateformat'], $membday[1], $membday[0], $membday[2], $w_day);
                    
$membday frenchdate_convert($membday);
                }
                else
                {
                    
$bdayformat fix_mktime($mybb->settings['dateformat'], $membday[2]);
                    
$membday mktime(000$membday[1], $membday[0], $membday[2]);
                    
$membday date($bdayformat$membday);
                    
$membday frenchdate_convert($membday);
                }
                
$membdayage $lang->membdayage;
            }
            elseif(
$membday[2])
            {
                
$membday mktime(00011$membday[2]);
                
$membday date("Y"$membday);
                
$membday frenchdate_convert($membday);
                
$membdayage '';
            }
            else
            {
                
$membday mktime(000$membday[1], $membday[0], 0);
                
$membday date("F j"$membday);
                
$membday frenchdate_convert($membday);
                
$membdayage '';
            }
        } 

Et concernant l'heure local, j'ai modifié le morceau :

Code PHP :
$memregdate my_date($mybb->settings['dateformat'], $memprofile['regdate']);
    
$memlocaldate gmdate($mybb->settings['dateformat'], TIME_NOW + ($memprofile['timezone'] * 3600));
    
$memlocaldate frenchdate_convert($memlocaldate);
    
$memlocaltime gmdate($mybb->settings['timeformat'], TIME_NOW + ($memprofile['timezone'] * 3600)); 

en

Code PHP :
$memregdate my_date($mybb->settings['dateformat'], $memprofile['regdate']);
    
$memlocaldate gmdate($mybb->settings['dateformat'], TIME_NOW + ($memprofile['timezone'] * 3600));
    
$memlocaldate frenchdate_convert($memlocaldate);
    
$memlocaltime gmdate($mybb->settings['timeformat'], TIME_NOW + ($memprofile['timezone'] * 3600)); 

Ce qui a l'air de faire le boulot.


*******************************

Edit :
Par contre un truc que je n'arrive pas à régler c'est un affichage correct en "Jour numéro Mois", pour cela je mets "l j F" comme paramètre de configuration pour l'affichage de la date dans l'admin mais ça ne veut pas, je me retrouve avec du "j l F", sans le plugin cela fonctionne bien, donc c'est lié à la françisation de la date.
J'ai noté qu'en utilisant "l - j F" le jour restait bien en première position dans ce cas.

Quelqu'un a une idée ?

*******************************


Edit :
Si on supprime les lignes de fin du plugin :

Code PHP :
    $date preg_replace('#^([^0-9\s]+)(\s+)([0-9]{1,2})(\s+.*)?$#''$3$2$1$4'$date);
    
$date preg_replace('#([0-9])(\s*)H(\s*)([0-9])#''$1$2h$3$4'$date); 

Tout à l'air de bien aller. Je ne comprends d'ailleurs à quoi elle servait, la seconde ligne a l'air de concerner l'affichage de l'heure mais pour la première ligne je ne vois pas.
La première ligne sert à inverser le jour et le mois a priori.
Ok CrazyCat, du coup cela ne me dérange pas de les avoir enlevé ^^
Bonjour!

Pourquoi le mois et la date sont inverser ?
Mardi, Juin 30, 2015, 17:04
au lieu de
Mardi, 30 Juin, 2015
Bonjour,

Je déterre un peu mais je n'arrive plus à faire fonctionner ce plugin, mybb 1.8.15.
Quelqu'un aurait une idée du pourquoi et comment le refaire fonctionner ?
Je n'ai trouvé que ce ci que je pourrais essayer d'adapter pour avoir les dates en français : https://community.mybb.com/mods.php?action=view&pid=34
Il est quand même plus agréable d'avoir les dates en français pour un forum en français.

Edit  :
Pour ceux qui cherchent : https://community.mybb.com/thread-130608.html
Il faut changer le fichier functions.php surtout, on peut déjà trouver les modifs qui vont bien dans le fichier dans languages fourni par spyto ensuite Smile
Modifier quand même les mois et jours en abrégé qui sont en anglais ou juste un lettre dans la traduction (à votre convenance) :
Code :
$l['short_month_1'] = "Jan";
$l['short_month_2'] = "Fév";
$l['short_month_3'] = "Mars";
$l['short_month_4'] = "Avr";
$l['short_month_5'] = "Mai";
$l['short_month_6'] = "Juin";
$l['short_month_7'] = "Juil";
$l['short_month_8'] = "Août";
$l['short_month_9'] = "Sept";
$l['short_month_10'] = "Oct";
$l['short_month_11'] = "Nov";
$l['short_month_12'] = "Déc";

$l['short_monday'] = "Lun";

$l['short_tuesday'] = "Mar";
$l['short_wednesday'] = "Mer";
$l['short_thursday'] = "Jeu";
$l['short_friday'] = "Ven";
$l['short_saturday'] = "Sam";
$l['short_sunday'] = "Dim";


Problème résolu Smile
 Utilitaire de traduction fourni par Regentronique