From ed0e882ce3db6ad855d367277b78a76dcab3a3ca Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Mon, 23 Jan 2023 15:44:11 +0100 Subject: [PATCH] blog translates in progress --- core/core.php | 20 ++++++---- module/blog/blog.php | 40 +++++++++---------- module/blog/i18n/es.json | 79 +++++++++++++++++++++++++++++++++++++ module/blog/i18n/fr_FR.json | 79 +++++++++++++++++++++++++++++++++++++ module/blog/i18n/gr_GR.json | 79 +++++++++++++++++++++++++++++++++++++ module/form/form.php | 2 +- 6 files changed, 269 insertions(+), 30 deletions(-) create mode 100644 module/blog/i18n/es.json create mode 100644 module/blog/i18n/fr_FR.json create mode 100644 module/blog/i18n/gr_GR.json diff --git a/core/core.php b/core/core.php index e411e135..2687774f 100644 --- a/core/core.php +++ b/core/core.php @@ -458,6 +458,18 @@ class common } self::$dialog = json_decode(file_get_contents(self::I18N_DIR . self::$i18nUI . '.json'), true); + // Dialogue du module + if ($this->getData(['page', $this->getUrl(0), 'moduleId'])) { + $moduleId = $this->getData(['page', $this->getUrl(0), 'moduleId']); + if ( + is_dir(self::MODULE_DIR . $moduleId . '/i18n') + && file_exists(self::MODULE_DIR . $moduleId . '/i18n/' . self::$i18nUI . '.json') + ) { + $d = json_decode(file_get_contents(self::MODULE_DIR . $moduleId . '/i18n/' . self::$i18nUI . '.json'), true); + self::$dialog = array_merge(self::$dialog, $d); + } + } + // Mise à jour des données core if ($this->getData(['core', 'dataVersion']) !== intval(str_replace('.', '', self::ZWII_VERSION))) include('core/include/update.inc.php'); @@ -3047,14 +3059,6 @@ class core extends common if (array_key_exists($action, $module::$actions)) { $module->$action(); $output = $module->output; - // Dialogues du module - if ( - is_dir(self::MODULE_DIR . $moduleId . '/i18n') - && file_exists(self::MODULE_DIR . $moduleId . '/i18n/' . self::$i18nUI . '.json') - ) { - $d = json_decode(file_get_contents(self::MODULE_DIR . $moduleId . '/i18n/' . self::$i18nUI . '.json'), true); - self::$dialog = array_merge(self::$dialog, $d); - } // Check le groupe de l'utilisateur if ( ($module::$actions[$action] === self::GROUP_VISITOR diff --git a/module/blog/blog.php b/module/blog/blog.php index e0b2c40c..78cda2de 100755 --- a/module/blog/blog.php +++ b/module/blog/blog.php @@ -255,7 +255,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'notification' => 'Nouvel article créé', + 'notification' => helper::translate('Nouvel article créé'), 'state' => true ]); } @@ -268,7 +268,7 @@ class blog extends common unset($userFirstname); // Valeurs en sortie $this->addOutput([ - 'title' => 'Nouvel article', + 'title' => helper::translate('Rédiger un article'), 'vendor' => [ 'flatpickr', 'tinymce', @@ -287,7 +287,6 @@ class blog extends common self::$commentsDelete = template::button('blogCommentDeleteAll', [ 'class' => 'blogCommentDeleteAll buttonRed', 'href' => helper::baseUrl() . $this->getUrl(0) . '/commentDeleteAll/' . $this->getUrl(2) . '/' . $_SESSION['csrf'], - 'ico' => 'trash', 'value' => 'Tout effacer' ]); // Ids des commentaires par ordre de création @@ -308,7 +307,8 @@ class blog extends common $buttonApproval = template::button('blogCommentApproved' . $commentIds[$i], [ 'class' => $comment['approval'] === true ? 'blogCommentRejected buttonGreen' : 'blogCommentApproved buttonRed', 'href' => helper::baseUrl() . $this->getUrl(0) . '/commentApprove/' . $this->getUrl(2) . '/' . $commentIds[$i] . '/' . $_SESSION['csrf'], - 'value' => $comment['approval'] === true ? 'A' : 'R' + 'value' => $comment['approval'] === true ? 'A' : 'R', + 'help' => $comment['approval'] === true ? 'Approuvé' : 'Rejetté', ]); } self::$comments[] = [ @@ -325,7 +325,7 @@ class blog extends common } // Valeurs en sortie $this->addOutput([ - 'title' => 'Gestion des commentaires : ' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'title']), + 'title' => helper::translate('Gestion des commentaires'), 'view' => 'comment' ]); } @@ -347,7 +347,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'notification' => 'Action interdite' + 'notification' => helper::translate('Action interdite') ]); } // Suppression @@ -356,7 +356,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/comment/' . $this->getUrl(2), - 'notification' => 'Commentaire supprimé', + 'notification' => helper::translate('Commentaire supprimé'), 'state' => true ]); } @@ -381,7 +381,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/comment', - 'notification' => 'Commentaires supprimés', + 'notification' => helper::translate('Commentaires supprimés'), 'state' => true ]); } @@ -404,7 +404,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'notification' => 'Action interdite' + 'notification' => helper::translate('Action interdite') ]); } // Inversion du statut @@ -421,7 +421,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/comment/' . $this->getUrl(2), - 'notification' => $approved ? 'Commentaire approuvé' : 'Commentaire rejeté', + 'notification' => $approved ? helper::translate('Commentaire approuvé') : helper::translate('Commentaire rejeté'), 'state' => $approved ]); } @@ -491,20 +491,18 @@ class blog extends common ]), template::button('blogConfigEdit' . $articleIds[$i], [ 'href' => helper::baseUrl() . $this->getUrl(0) . '/edit/' . $articleIds[$i] . '/' . $_SESSION['csrf'], - 'value' => template::ico('pencil'), - 'help' => 'Éditer l\'article' + 'value' => template::ico('pencil') ]), template::button('blogConfigDelete' . $articleIds[$i], [ 'class' => 'blogConfigDelete buttonRed', 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $articleIds[$i] . '/' . $_SESSION['csrf'], - 'value' => template::ico('trash'), - 'help' => 'Effacer l\'article' + 'value' => template::ico('trash') ]) ]; } // Valeurs en sortie $this->addOutput([ - 'title' => 'Configuration du module', + 'title' => helper::translate('Configuration du module'), 'view' => 'config' ]); } @@ -525,13 +523,13 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/option', - 'notification' => 'Modifications enregistrées', + 'notification' => helper::translate('Modifications enregistrées'), 'state' => true ]); } // Valeurs en sortie $this->addOutput([ - 'title' => 'Options de configuration', + 'title' => helper::translate('Paramètres'), 'view' => 'option' ]); } @@ -553,7 +551,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'notification' => 'Action interdite' + 'notification' => helper::translate('Action interdite') ]); } // Suppression @@ -562,7 +560,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'notification' => 'Article supprimé', + 'notification' => helper::translate('Article supprimé'), 'state' => true ]); } @@ -578,7 +576,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'notification' => 'Action non autorisée' + 'notification' => helper::translate('Action interdite') ]); } // L'article n'existe pas @@ -634,7 +632,7 @@ class blog extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'notification' => 'Modifications enregistrées', + 'notification' => helper::translate('Modifications enregistrées'), 'state' => true ]); } diff --git a/module/blog/i18n/es.json b/module/blog/i18n/es.json new file mode 100644 index 00000000..032f5054 --- /dev/null +++ b/module/blog/i18n/es.json @@ -0,0 +1,79 @@ +{ + "Rédiger un article": "Escribir un artículo", + "Article supprimé": "", + "Aucun article": "Ningún artículo", + "Article complet en pleine page": "Artículo completo a plena página", + "Tableau : couverture + 200 signes": "Tabla: portada + 200 caracteres", + "Tableau : couverture + 400 signes": "Tabla: portada + 400 caracteres", + "Tableau : couverture + 600 signes": "Tabla: portada + 600 caracteres", + "Tableau : couverture + 800 signes": "Tabla: portada + 800 caracteres", + "Articles par page": "Artículos por página", + "1 article": "1 Artículo", + "2 articles": "2 Artículos", + "4 articles": "4 Artículos", + "6 articles": "6 Artículos", + "8 articles": "8 Artículos", + "10 articles": "10 Artículos", + "12 articles": "12 Artículos", + "Lien du flux RSS": "Enlace de fuente RSS", + "Texte de l'étiquette": "Texto de la etiqueta", + "Publier": "Publicar", + "Informations générales": "Información general", + "Permalink": "Enlace permanente", + "Taille optimale de l'image de couverture : 920 x 350 pixels.": "Tamaño de imagen de portada óptimo: 920 x 350 píxeles.", + "Image de couverture": "Imagen de portada", + "Largeur de l'image": "Ancho de la imagen", + "Très petite": "Muy pequeña", + "Petite": "Pequeña", + "Grande": "Grande", + "Très Grande": "Muy grande", + "Pleine largeur": "Anchura completa", + "Le texte de l'article est adapté autour de l'image": "El texto del artículo se envuelve alrededor de la imagen", + "À gauche": "A la izquierda", + "À droite ": "A la derecha", + "Masquer l'image dans l'article": "Ocultar imagen en la publicación", + "Options de publication": "Opciones de publicación", + "Auteur": "Autor", + "Date de publication": "Fecha de publicación", + "L'article n'est visible qu'après la date de publication prévue.": "El artículo solo es visible después de la fecha de publicación programada.", + "Edition - Suppression": "Editar Borrar", + "Les utilisateurs des groupes supérieurs accèdent à l'article sans restriction": "Los usuarios de grupos superiores pueden acceder al artículo sin restricción.", + "Tous les groupes": "Todos los grupos", + "Groupe du propriétaire": "Grupo de propietarios", + "Propriétaire": "Propietario", + "Commentaires": "Comentarios", + "Fermer les commentaires": "Cerrar los comentarios", + "Approbation par un modérateur": "Aprobación del moderador", + "Caractères par commentaire": "Caracteres por comentario", + "Choix du nombre maximum de caractères pour chaque commentaire de l'article, mise en forme html comprise.": "Elección del número máximo de caracteres para cada comentario del artículo, incluido el formato html", + "100 signes": "100 caracteres", + "250 signes": "250 caracteres", + "500 signes": "500 caracteres", + "750 signes": "750 caracteres", + "Notification par email": "Notificación por correo electrónico", + "Membre": "Miembro", + "Éditeur": "Editor", + "Administrateur": "Administrador", + "Éditer l'article": "Editar artículo", + "Effacer l'article": "Eliminar artículo", + "État": "Estado", + "Masquer l'image de couverture dans l'article": "Ocultar imagen de portada en el artículo", + "Supprimer le commentaire ?": "¿Borrar el comentario?", + "Approuver le commentaire ?": "¿Aprobar el comentario?", + "Rejeter le commentaire ?": "¿Rechazar el comentario?", + "Supprimer tous les commentaire ?": "¿Borrar todos los comentarios?", + "Supprimer cet article ?": "¿Borrar este artículo?", + "Aucun commentaire": "Sin comentarios", + "Index des articles": "Índice de artículos", + "Éditer / Approuver les commentaires": "", + "Commentaire approuvé": "", + "Commentaire rejeté": "", + "Commentaires supprimés": "", + "Brouillon": "", + "Nouvel article créé": "", + "Tout effacer": "", + "Approuvé": "", + "Rejetté": "", + "Commentaire supprimé": "", + "Gestion des commentaires": "Gestión de comentarios" +} \ No newline at end of file diff --git a/module/blog/i18n/fr_FR.json b/module/blog/i18n/fr_FR.json new file mode 100644 index 00000000..04999248 --- /dev/null +++ b/module/blog/i18n/fr_FR.json @@ -0,0 +1,79 @@ +{ + "Rédiger un article": "", + "Article supprimé": "", + "Aucun article": "", + "Article complet en pleine page": "", + "Tableau : couverture + 200 signes": "", + "Tableau : couverture + 400 signes": "", + "Tableau : couverture + 600 signes": "", + "Tableau : couverture + 800 signes": "", + "Articles par page": "", + "1 article": "", + "2 articles": "", + "4 articles": "", + "6 articles": "", + "8 articles": "", + "10 articles": "", + "12 articles": "", + "Lien du flux RSS": "", + "Texte de l'étiquette": "", + "Publier": "", + "Informations générales": "", + "Permalink": "", + "Taille optimale de l'image de couverture : 920 x 350 pixels.": "", + "Image de couverture": "", + "Largeur de l'image": "", + "Très petite": "", + "Petite": "", + "Grande": "", + "Très Grande": "", + "Pleine largeur": "", + "Le texte de l'article est adapté autour de l'image": "", + "À gauche": "", + "À droite ": "", + "Masquer l'image dans l'article": "", + "Options de publication": "", + "Auteur": "", + "Date de publication": "", + "L'article n'est visible qu'après la date de publication prévue.": "", + "Edition - Suppression": "", + "Les utilisateurs des groupes supérieurs accèdent à l'article sans restriction": "", + "Tous les groupes": "", + "Groupe du propriétaire": "", + "Propriétaire": "", + "Commentaires": "", + "Fermer les commentaires": "", + "Approbation par un modérateur": "", + "Caractères par commentaire": "", + "Choix du nombre maximum de caractères pour chaque commentaire de l'article, mise en forme html comprise.": "", + "100 signes": "", + "250 signes": "", + "500 signes": "", + "750 signes": "", + "Notification par email": "", + "Membre": "", + "Éditeur": "", + "Administrateur": "", + "Éditer l'article": "", + "Effacer l'article": "", + "État": "", + "Masquer l'image de couverture dans l'article": "", + "Supprimer le commentaire ?": "", + "Approuver le commentaire ?": "", + "Rejeter le commentaire ?": "", + "Supprimer tous les commentaire ?": "", + "Supprimer cet article ?": "", + "Aucun commentaire": "", + "Index des articles": "", + "Éditer / Approuver les commentaires": "", + "Commentaire approuvé": "", + "Commentaire rejeté": "", + "Gestion des commentaires": "", + "Commentaires supprimés": "", + "Brouillon": "", + "Nouvel article créé": "", + "Tout effacer": "", + "Approuvé": "", + "Rejetté": "", + "Commentaire supprimé": "" +} \ No newline at end of file diff --git a/module/blog/i18n/gr_GR.json b/module/blog/i18n/gr_GR.json new file mode 100644 index 00000000..526b9d7c --- /dev/null +++ b/module/blog/i18n/gr_GR.json @@ -0,0 +1,79 @@ +{ + "Supprimer le commentaire ?": "Διαγράψτε το σχόλιο;", + "Approuver le commentaire ?": "Εγκρίνετε το σχόλιο;", + "Rejeter le commentaire ?": "Απορρίπτετε το σχόλιο;", + "Supprimer tous les commentaire ?": "Να διαγράψετε όλα τα σχόλια;", + "Supprimer cet article ?": "Να διαγράψετε αυτό το άρθρο;", + "Aucun commentaire": "Κανένα σχόλιο", + "Index des articles": "Ευρετήριο άρθρων", + "Rédiger un article": "Γράψτε ένα άρθρο ", + "Aucun article": "κανένα άρθρο", + "Article complet en pleine page": "Άρθρο πλήρους σελίδας", + "Tableau : couverture + 200 signes": "Πίνακας: εξώφυλλο + 200 χαρακτήρες", + "Tableau : couverture + 400 signes": "Πίνακας: εξώφυλλο + 400 χαρακτήρες", + "Tableau : couverture + 600 signes": "Πίνακας: εξώφυλλο + 600 χαρακτήρες", + "Tableau : couverture + 800 signes": "Πίνακας: εξώφυλλο + 800 χαρακτήρες", + "Articles par page": "Άρθρα ανά σελίδα", + "1 article": "1 Άρθρο", + "2 articles": "2 Άρθρα", + "4 articles": "4 Άρθρα", + "6 articles": "6 Άρθρα", + "8 articles": "8 Άρθρα", + "10 articles": "10 Άρθρα", + "12 articles": "12 Άρθρα", + "Lien du flux RSS": "Σύνδεσμος τροφοδοσίας RSS", + "Texte de l'étiquette": "Κείμενο ετικέτας", + "Publier": "δημοσιεύστε το άρθρο", + "Informations générales": "Γενικές πληροφορίες", + "Permalink": "Μόνιμος σύνδεσμος", + "Taille optimale de l'image de couverture : 920 x 350 pixels.": "Βέλτιστο μέγεθος εικόνας εξωφύλλου: 920 x 350 pixels", + "Image de couverture": "εικόνα εξωφύλλου", + "Largeur de l'image": "Πλάτος εικόνας", + "Très petite": "Πολύ μικρη", + "Petite": "μικρη", + "Grande": "Μεγάλη", + "Très Grande": "Πολύ μεγάλη", + "Pleine largeur": "Πλήρες πλάτος", + "Le texte de l'article est adapté autour de l'image": "Το κείμενο του άρθρου τοποθετείται γύρω από την εικόνα", + "À gauche": "Αριστερά", + "À droite ": "Δεξιά", + "Masquer l'image dans l'article": "Απόκρυψη εικόνας στο άρθρο", + "Options de publication": "Επιλογές δημοσίευσης", + "Auteur": "Συγγραφέας", + "Date de publication": "ημερομηνία δημοσίευσης", + "L'article n'est visible qu'après la date de publication prévue.": "Το άρθρο είναι ορατό μόνο μετά την προγραμματισμένη ημερομηνία δημοσίευσης", + "Edition - Suppression": "Επεξεργασία - Διαγραφή", + "Les utilisateurs des groupes supérieurs accèdent à l'article sans restriction": "Οι χρήστες σε ανώτερες ομάδες έχουν απεριόριστη πρόσβαση στο άρθρο", + "Tous les groupes": "Όλες οι ομάδες", + "Groupe du propriétaire": "Ομάδα ιδιοκτήτη", + "Propriétaire": "Ιδιοκτήτης", + "Commentaires": "Σχόλια", + "Fermer les commentaires": "Κλείσιμο σχολίων", + "Approbation par un modérateur": "Έγκριση επόπτη", + "Caractères par commentaire": "Χαρακτήρες ανά σχόλιο", + "Choix du nombre maximum de caractères pour chaque commentaire de l'article, mise en forme html comprise.": "Επιλογή του μέγιστου αριθμού χαρακτήρων για κάθε σχόλιο του άρθρου, συμπεριλαμβανομένης της μορφοποίησης html.", + "100 signes": "100 χαρακτήρες", + "250 signes": "250 χαρακτήρες", + "500 signes": "500 χαρακτήρες", + "750 signes": "750 χαρακτήρες", + "Notification par email": "Ειδοποίηση ηλεκτρονικού ταχυδρομείου", + "Membre": "Μέλος", + "Éditeur": "Συντάκτης", + "Administrateur": "Διαχειριστής", + "Éditer l'article": "Επεξεργασία άρθρου", + "Effacer l'article": "Διαγραφή αντικειμένου", + "État": "κατάσταση ", + "Masquer l'image de couverture dans l'article": "Απόκρυψη της εικόνας εξωφύλλου στο άρθρο", + "Article supprimé": "", + "Éditer / Approuver les commentaires": "", + "Commentaire approuvé": "", + "Commentaire rejeté": "", + "Commentaires supprimés": "", + "Brouillon": "", + "Nouvel article créé": "", + "Tout effacer": "", + "Approuvé": "", + "Rejetté": "", + "Commentaire supprimé": "", + "Gestion des commentaires": "" +} \ No newline at end of file diff --git a/module/form/form.php b/module/form/form.php index b747db7e..d5be1c4d 100644 --- a/module/form/form.php +++ b/module/form/form.php @@ -219,7 +219,7 @@ class form extends common { } // Valeurs en sortie $this->addOutput([ - 'title' => 'Options de configuration', + 'title' => helper::translate('Options de configuration'), 'vendor' => [ 'html-sortable', 'flatpickr'