Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Résolu] Date en Français

Réservé à l'utilisation et la création de widgets dans JEEDOM
Répondre
Merangle
Timide
Messages : 129
Inscription : 07 févr. 2016, 19:01

[Résolu] Date en Français

Message par Merangle » 21 juin 2018, 19:20

Bonsoir

Dans un Widget j'affiche une date sous le format valueDate(#[Présence][Présence][Présence]#,D d M H:i)
Ce qui m'affiche la date en Anglais

ne comprenant rien au PHP, je n'ai pas compris comment faire afficher la même chose en Français (jour et mois).
Sauriez-vous m'aider ?
D'avance merci pour votre aide
Dernière édition par Merangle le 03 juil. 2018, 14:00, édité 1 fois.

garthounet
Timide
Messages : 47
Inscription : 05 janv. 2018, 16:29

Re: Date en Français

Message par garthounet » 22 juin 2018, 15:49

Hello

Tu trouveras ton bonheur ici concernant la syntaxe PHP --> ICI

Merangle
Timide
Messages : 129
Inscription : 07 févr. 2016, 19:01

Re: Date en Français

Message par Merangle » 22 juin 2018, 21:07

Merci pour cette information.
J'ai bien le format de la date sous la forme D d M H:i qui me donne "Fri 22 June 22:06".
Je voudrai la même chose mais en Français= "Ven 22 Juin 22:06".

Dans la page que tu proposes le format D donne le nom du jour en format Anglais ou dans la langue du serveur.
Quel serveur ?
Comment avoir le message en français ?

Désolé si je n'ai pas compris ta réponse.
Merci cependant de ton aide.

garthounet
Timide
Messages : 47
Inscription : 05 janv. 2018, 16:29

Re: Date en Français

Message par garthounet » 23 juin 2018, 02:18

Hello

Je peux voir le code de ton widget s'il te plaît ? Quel module il utilise etc etc..

Merangle
Timide
Messages : 129
Inscription : 07 févr. 2016, 19:01

Re: Date en Français

Message par Merangle » 24 juin 2018, 14:34

@garthounet

Voici une copie de mon widget
et le résultat
Capture.PNG
Capture.PNG (47.23 Kio) Consulté 4128 fois
Comme tu peux le voire, la date est affichée en anglais et pas en français.
Merci de ton aide.
Pièces jointes
Capture.PNG
Capture.PNG (3.18 Kio) Consulté 4128 fois

garthounet
Timide
Messages : 47
Inscription : 05 janv. 2018, 16:29

Re: Date en Français

Message par garthounet » 24 juin 2018, 19:07

Hello

Effectivement je viens de tester et le retour est en anglais.
C'est plutôt bizarre car normalement ça devrait prendre en compte la langue du serveur.
Je peux te donner cette solution temporaire pour afficher la date sous la forme : "24/06/2018 19:04" en attendant que je trouve le pourquoi du comment :D

Il te suffit de remplacer la valeur actuel du champ par :

Code : Tout sélectionner

valueDate(#[Présence][Présence][Présence]#, d/m/Y H:i)
en me basant sur ta situation bien sûr. Laisse moi un peu de temps pour trouver ou se trouve cette fonction pour que je regarde :p

A bientôt !

Merangle
Timide
Messages : 129
Inscription : 07 févr. 2016, 19:01

Re: Date en Français

Message par Merangle » 24 juin 2018, 19:56

Bonsoir

Merci pour ton aide.
J'avais déjà une solution équivalente avec des "-" au lieu de "/" entre le jour, le mois et l'année.
Mais je cherchais comment rendre le message plus lisible/compréhensible sous la forme "Dimanche 24 Juin".
C'est plus pour la facilité de lecture...

En tous les cas, ton aide est la bienvenue.
Bonne soirée et merci

garthounet
Timide
Messages : 47
Inscription : 05 janv. 2018, 16:29

Re: Date en Français

Message par garthounet » 24 juin 2018, 20:13

Merangle a écrit :
24 juin 2018, 19:56
Bonsoir

Merci pour ton aide.
J'avais déjà une solution équivalente avec des "-" au lieu de "/" entre le jour, le mois et l'année.
Mais je cherchais comment rendre le message plus lisible/compréhensible sous la forme "Dimanche 24 Juin".
C'est plus pour la facilité de lecture...

En tous les cas, ton aide est la bienvenue.
Bonne soirée et merci
Je suis entrain de regarder la fonction que les développeurs de Jeedom ont faite. Le problème c'est qu'ils utilisent la fonction

Code : Tout sélectionner

strtotime()
dans la fonction

Code : Tout sélectionner

date()
. Du coup ce sera toujours en anglais.

L'idée serait de créer une nouvelle fonction pour gérer tout ça du genre

Code : Tout sélectionner

valueDateFr
ou même d'ajouter un argument à cette fonction.
Malheureusement ce n'est pas très "propre" de travailler comme ça. La classe contient des variables privées donc nous ne pouvons pas faire d'héritage de celle-ci :?

Je regarde la documentation en même temps d'écrire ce message et je vois qu'ils ont mis un système en place pour ajouter des fonctions personnalisées. Ils faut créer une fonction statique dans le fichier

Code : Tout sélectionner

/core/data/php/user.function.class.php
Je vais faire des tests et essayer de te coder une fonction propre que tu ajouteras à ce fichier. Elle remplacera cette fameuse fonction

Code : Tout sélectionner

valueDate()
A bientôt !

garthounet
Timide
Messages : 47
Inscription : 05 janv. 2018, 16:29

Re: Date en Français

Message par garthounet » 24 juin 2018, 20:56

Hello

Voilà ce que j'ai à te proposer

Code : Tout sélectionner

        public static function valueDateCustom($_cmd_id, $_locale = 'fr_FR.utf-8', $_format = '%A %d %B %H:%M:%S')
        {
                $cmd = cmd::byId(trim(str_replace('#', '', $_cd_id)));
                if (!is_object($cmd)) {
                        return '';
                }
                $cmd->execCmd();
                setlocale (LC_TIME, $_locale);
                return strftime($_format, $cmd->getValueDate());
        }
Das mon cas, je l'utilise comme ça:

Code : Tout sélectionner

valueDateCustom(#[Salon][Capteur FIBARO][Présence]#)
Par défaut, la langue sera en français et la date sous le format "jeudi 01 janvier 01:33:38" mais tu peux modifier cela en indiquant des paramètres supplémentaires; exemple:

Code : Tout sélectionner

 valueDateCustom(#[Salon][Capteur FIBARO][Présence]#, fr_FR.utf-8, %H:%M:%S)
A la différence de la fonction initiale "valueDate()" celle-ci prends 3 paramètres; "équipement,langue,format". Je te préviens que tu ne pourra utiliser que les langues (locale) installées sur ton système :D

C'est ok, tu as tout compris ? :oops:

Merangle
Timide
Messages : 129
Inscription : 07 févr. 2016, 19:01

Re: Date en Français

Message par Merangle » 24 juin 2018, 21:57

Bonsoir

Je crois comprendre le principe.
Pour créer la fonction valueDateCustom il faut que je donne quelques droits d'accès samba et autre sur une machine Stretch sous VM Synology....
Un peu de customization et je te tiens informé.
Un grand merci

garthounet
Timide
Messages : 47
Inscription : 05 janv. 2018, 16:29

Re: Date en Français

Message par garthounet » 25 juin 2018, 08:40

Hello

J'ai fais une petite erreur dans ma fonction que je viens de corriger. Pour implémenter de nouvelles fonctions, tu édites le fichier situé ici

Code : Tout sélectionner

/var/www/html/data/php/user.function.class.php
Si tu n'a jamais touché ce fichier il devrait être comme ça:

Code : Tout sélectionner

<?php

/* This file is part of Jeedom.
 *
 * Jeedom is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Jeedom is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Jeedom. If not, see <http://www.gnu.org/licenses/>.
 */

/* * ***************************Includes********************************* */
require_once dirname(__FILE__) . '/../../core/php/core.inc.php';

class userFunction {

        public static function plop($_arg1 = '') {
                return 'Argument 1 : ' . $_arg1;
        }
}
Il te suffit de le modifier pour qu'il soit comme ceci:

Code : Tout sélectionner

<?php

/* This file is part of Jeedom.
 *
 * Jeedom is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Jeedom is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Jeedom. If not, see <http://www.gnu.org/licenses/>.
 */

/* * ***************************Includes********************************* */
require_once dirname(__FILE__) . '/../../core/php/core.inc.php';

class userFunction {

        public static function plop($_arg1 = '') {
                return 'Argument 1 : ' . $_arg1;
        }

        public static function valueDateCustom($_cmd_id, $_locale = 'fr_FR.utf-8', $_format = '%A %d %B %H:%M:%S')
        {
                $cmd = cmd::byId(trim(str_replace('#', '', $_cmd_id)));
                if (!is_object($cmd)) {
                        return '';
                }
                $cmd->execCmd();

                setlocale(LC_TIME, $_locale);
                return ucfirst(strftime($_format, strtotime($cmd->getValueDate())));
        }
}
Tu enregistres et tu pourras utiliser cette fonction dans ton Jeedom, comme ceci:

Code : Tout sélectionner

valueDateCustom(#[Salon][Capteur FIBARO][Présence]#)
valueDateCustom(#[Salon][Capteur FIBARO][Luminosité]#)
valueDateCustom(#[Salon][Prise aquarium][Etat]#)
Dans mon cas le retour est:

Code : Tout sélectionner

Lundi 25 juin 08:35:13
Lundi 25 juin 07:47:41
Lundi 25 juin 06:00:02
Pour gérer les locales installées sur ton serveur, il te suffit de gérer ça avec dpkg:

Code : Tout sélectionner

sudo dpkg-reconfigure locales
et tu te laisse guider par l'interface graphique du terminal. Tu ne peux utiliser que les locales installées sur ton système.

Pour gérer tes propres formats, il te suffit de te référer à cette page

A bientôt !

Merangle
Timide
Messages : 129
Inscription : 07 févr. 2016, 19:01

Re: Date en Français

Message par Merangle » 25 juin 2018, 22:15

Bonsoir

Un grand merci !!!! Cela marche super bien.

Une question:
Le format est en dur dans la première ligne ou y a-t-il un moyen de passer le format en argument de la fonction ?
Désolé je ne connais rien au Php!

Merci pour ton aide.

garthounet
Timide
Messages : 47
Inscription : 05 janv. 2018, 16:29

Re: Date en Français

Message par garthounet » 25 juin 2018, 22:18

Hello

Oui tu peux le passer en argument numéro 3 de la fonction. Quel format voudrais-tu ?

Merangle
Timide
Messages : 129
Inscription : 07 févr. 2016, 19:01

Re: Date en Français

Message par Merangle » 25 juin 2018, 22:51

Hello

Compris :P :P

Du coup, j'ai inversé le deuxième et troisième argument. Je n'ai plus qu'à jouer sur le deuxième argument pour changer le format et éventuellement le 3ième argument si je veux changer la langue.

Un grand merci pour ce cours de php.

garthounet
Timide
Messages : 47
Inscription : 05 janv. 2018, 16:29

Re: Date en Français

Message par garthounet » 27 juin 2018, 12:48

Hello

Tu as bien fait d'inverser l'argument 2 et 3; effectivement cela permet de ne pas définir à chaque fois la locale à utiliser.
A bientôt !

luciusterror
Timide
Messages : 6
Inscription : 05 mai 2019, 12:36

Re: Date en Français

Message par luciusterror » 15 juin 2019, 19:41

garthounet a écrit :
25 juin 2018, 08:40
Hello

J'ai fais une petite erreur dans ma fonction que je viens de corriger. Pour implémenter de nouvelles fonctions, tu édites le fichier situé ici

Code : Tout sélectionner

/var/www/html/data/php/user.function.class.php
Si tu n'a jamais touché ce fichier il devrait être comme ça:

Code : Tout sélectionner

<?php

/* This file is part of Jeedom.
 *
 * Jeedom is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Jeedom is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Jeedom. If not, see <http://www.gnu.org/licenses/>.
 */

/* * ***************************Includes********************************* */
require_once dirname(__FILE__) . '/../../core/php/core.inc.php';

class userFunction {

        public static function plop($_arg1 = '') {
                return 'Argument 1 : ' . $_arg1;
        }
}
Il te suffit de le modifier pour qu'il soit comme ceci:

Code : Tout sélectionner

<?php

/* This file is part of Jeedom.
 *
 * Jeedom is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Jeedom is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Jeedom. If not, see <http://www.gnu.org/licenses/>.
 */

/* * ***************************Includes********************************* */
require_once dirname(__FILE__) . '/../../core/php/core.inc.php';

class userFunction {

        public static function plop($_arg1 = '') {
                return 'Argument 1 : ' . $_arg1;
        }

        public static function valueDateCustom($_cmd_id, $_locale = 'fr_FR.utf-8', $_format = '%A %d %B %H:%M:%S')
        {
                $cmd = cmd::byId(trim(str_replace('#', '', $_cmd_id)));
                if (!is_object($cmd)) {
                        return '';
                }
                $cmd->execCmd();

                setlocale(LC_TIME, $_locale);
                return ucfirst(strftime($_format, strtotime($cmd->getValueDate())));
        }
}
Tu enregistres et tu pourras utiliser cette fonction dans ton Jeedom, comme ceci:

Code : Tout sélectionner

valueDateCustom(#[Salon][Capteur FIBARO][Présence]#)
valueDateCustom(#[Salon][Capteur FIBARO][Luminosité]#)
valueDateCustom(#[Salon][Prise aquarium][Etat]#)
Dans mon cas le retour est:

Code : Tout sélectionner

Lundi 25 juin 08:35:13
Lundi 25 juin 07:47:41
Lundi 25 juin 06:00:02
Pour gérer les locales installées sur ton serveur, il te suffit de gérer ça avec dpkg:

Code : Tout sélectionner

sudo dpkg-reconfigure locales
et tu te laisse guider par l'interface graphique du terminal. Tu ne peux utiliser que les locales installées sur ton système.

Pour gérer tes propres formats, il te suffit de te référer à cette page

A bientôt !
hello,
malgrès ca, ca reste en anglais pour moi même si je le force ... une idée ?

Image

Image

Répondre

Revenir vers « [Plugin officiel] Widgets »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité