Compare commits

...

2 commits

Author SHA1 Message Date
Benjamin Renard
4b5986362e
Add simple time tracking system to permit to display page computing time 2023-03-22 18:24:34 +01:00
Benjamin Renard
32e27b931e
I18n: Move ___() function in functions.php 2023-03-22 18:19:08 +01:00
14 changed files with 605 additions and 397 deletions

View file

@ -3,9 +3,10 @@
use EesyPHP\Check;
use EesyPHP\Cli;
use EesyPHP\Date;
use EesyPHP\I18n;
use EesyPHP\Log;
use function EesyPHP\___;
/*
*************************************************************************************************
* /!\ Code after this message will only be execute on CLI context /!\
@ -113,13 +114,13 @@ function cli_list($command_args) {
Cli :: add_command(
'list',
'cli_list',
I18n :: ___("List/search items"),
I18n :: ___("[patterns]"),
___("List/search items"),
___("[patterns]"),
array(
I18n :: ___("-o|--orderby Ordering list criterion. Possible values:"),
___("-o|--orderby Ordering list criterion. Possible values:"),
" - ".implode("\n - ", $orderbys),
I18n :: ___("-r|--reverse Reverse order"),
I18n :: ___("-s|--status Filter on status. Possible values:"),
___("-r|--reverse Reverse order"),
___("-s|--status Filter on status. Possible values:"),
" - ".implode("\n - ", array_keys($status_list)),
)
);
@ -140,8 +141,8 @@ function cli_show($command_args) {
Cli :: add_command(
'show',
'cli_show',
I18n :: ___("Show item"),
I18n :: ___("[ID]")
___("Show item"),
___("[ID]")
);
function cli_delete($command_args) {
@ -178,8 +179,8 @@ function cli_delete($command_args) {
Cli :: add_command(
'delete',
'cli_delete',
I18n :: ___("Delete item"),
I18n :: ___("[item ID]")
___("Delete item"),
___("[item ID]")
);
function cli_export($command_args) {
@ -191,8 +192,8 @@ function cli_export($command_args) {
Cli :: add_command(
'export',
'cli_export',
I18n :: ___("Export items (as CSV)"),
I18n :: ___("[output file path]")
___("Export items (as CSV)"),
___("[output file path]")
);
function cli_restore($command_args) {
@ -207,8 +208,8 @@ function cli_restore($command_args) {
Cli :: add_command(
'restore',
'cli_restore',
I18n :: ___("Restore items (from CSV)"),
I18n :: ___("[input file path]")
___("Restore items (from CSV)"),
___("[input file path]")
);
function cli_cron($command_args) {
@ -275,11 +276,11 @@ function cli_cron($command_args) {
Cli :: add_command(
'cron',
'cli_cron',
I18n :: ___("Cron to handle item expiration"),
___("Cron to handle item expiration"),
null,
array (
I18n :: ___("-j/--just-try Just-try mode : do not really removed expired item(s)"),
I18n :: ___("-m/--max-age Item expiration limit (in days, optional)"),
___("-j/--just-try Just-try mode : do not really removed expired item(s)"),
___("-m/--max-age Item expiration limit (in days, optional)"),
)
);

View file

@ -1,9 +1,10 @@
<?php
use EesyPHP\App;
use EesyPHP\I18n;
use EesyPHP\SentrySpan;
use function EesyPHP\___;
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
// Root directory path
@ -54,10 +55,10 @@ require_once('functions.php');
// Nomenclatures
$status_list = array (
'pending' => I18n :: ___('Pending'),
'validated' => I18n :: ___('Validated'),
'refused' => I18n :: ___('Refused'),
'archived' => I18n :: ___('Archived'),
'pending' => ___('Pending'),
'validated' => ___('Validated'),
'refused' => ___('Refused'),
'archived' => ___('Archived'),
);
foreach($status_list as $key => $value)
$status_list[$key] = _($value);

File diff suppressed because one or more lines are too long

View file

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2023-03-11 11:52+0100\n"
"POT-Creation-Date: 2023-03-22 18:21+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Benjamin Renard <brenard@zionetrix.net>\n"
"Last-Translator: Benjamin Renard <brenard@easter-eggs.com>\n"
"Language-Team: \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
@ -12,6 +12,108 @@ msgstr ""
"X-Generator: Poedit 2.4.2\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: Tpl.php:437
msgid "No template specified."
msgstr "Aucun template spécifié."
#: Tpl.php:471
msgid "An error occurred while displaying this page."
msgstr "Une erreur est survenue en affichant cette page."
#: Tpl.php:871
msgid "Unkwown"
msgstr "Inconnu"
#: Db.php:80
msgid "Unable to connect to the database."
msgstr "Impossible de se connecter à la base de données."
#: Auth/Form.php:41
msgid "Invalid username or password."
msgstr "Nom d'utilisateur ou mot de passe invalide."
#: Auth/Form.php:74
msgid "Sign in"
msgstr "Connexion"
#: Auth/Http.php:37 Url.php:181
msgid "Authentication required"
msgstr "Authentification requise"
#: Auth/Http.php:124 Auth/Http.php:127 Url.php:185
msgid "Access denied"
msgstr "Accès interdit"
#: Auth/Http.php:128 Auth/Http.php:132
msgid "You must login to access this page."
msgstr "Vous devez vous connecter pour accéder à cette page."
#: Url.php:177
msgid "Bad request"
msgstr "Mauvaise requête"
#: Url.php:178
msgid "Invalid request."
msgstr "Requête invalide."
#: Url.php:182
msgid "You have to be authenticated to access to this page."
msgstr "Vous devez être authentifié pour accéder à cette page."
#: Url.php:186
msgid ""
"You do not have access to this application. If you think this is an error, "
"please contact support."
msgstr ""
"Vous n'avez pas accès à cette application. Si vous pensez qu'il s'agit d'une "
"erreur, merci de prendre contact avec le support."
#: Url.php:189
msgid "Whoops ! Page not found"
msgstr "Oups ! Page introuvable"
#: Url.php:190
msgid "The requested page can not be found."
msgstr "La page demandée est introuvable."
#: Url.php:198
msgid "Error"
msgstr "Erreur"
#: Url.php:199
msgid "An unknown error occurred. If problem persist, please contact support."
msgstr ""
"Une erreur inconnue est survenue. Si le problème persiste, merci de prendre "
"contact avec le support."
#: Url.php:262
msgid ""
"Unable to determine the requested page. If the problem persists, please "
"contact support."
msgstr ""
"Impossible de déterminer la page demandée. Si le problème persiste, merci de "
"prendre contact avec le support."
#: Url.php:416
msgid ""
"Unable to determine the requested page (loop detected). If the problem "
"persists, please contact support."
msgstr ""
"Impossible de déterminer la page demandée (boucle détectée). Si le problème "
"persiste, merci de prendre contact avec le support."
#: Url.php:446
msgid "This request cannot be processed."
msgstr "Cette requête ne peut être traitée."
#: Url.php:456
msgid "Authentication required but fail to authenticate you."
msgstr "Authentification requise mais impossible pour vous authentifier."
#: Url.php:475
msgid "This request could not be processed correctly."
msgstr "Cette requête n'a put être traitée correctement."
#: Cli.php:44
msgid "Create a new project using EesyPHP framework"
msgstr "Créer un nouveau projet utilisant le framework EesyPHP"
@ -138,140 +240,51 @@ msgstr ""
msgid "Please enter password:"
msgstr "Merci de saisir le mot de passe :"
#: Db.php:74
msgid "Unable to connect to the database."
msgstr "Impossible de se connecter à la base de données."
#: functions.php:304
msgid "d"
msgstr "j"
#: Auth/Form.php:41
msgid "Invalid username or password."
msgstr "Nom d'utilisateur ou mot de passe invalide."
#: functions.php:305
msgid "h"
msgstr "h"
#: Auth/Form.php:74
msgid "Sign in"
msgstr "Connexion"
#: functions.php:306
msgid "m"
msgstr "m"
#: Auth/Http.php:37 Url.php:181
msgid "Authentication required"
msgstr "Authentification requise"
#: functions.php:307
msgid "s"
msgstr "s"
#: Auth/Http.php:124 Auth/Http.php:127 Url.php:185
msgid "Access denied"
msgstr "Accès interdit"
#: functions.php:308
msgid "ms"
msgstr "ms"
#: Auth/Http.php:128 Auth/Http.php:132
msgid "You must login to access this page."
msgstr "Vous devez vous connecter pour accéder à cette page."
#: functions.php:309
msgid "ns"
msgstr "ns"
#: Email.php:101
#: functions.php:327
#, php-format
msgid "</hr><p><small>Mail initialy intended for %s.</small></p>"
msgstr "</hr><p><small>Email initialement destiné à %s.</small></p>"
msgid "Less than 1%s"
msgstr "Moins de 1%s"
#: Email.php:102
#, php-format
msgid ""
"\n"
"\n"
"\n"
"Mail initialy intended for %s."
msgstr ""
"\n"
"\n"
"\n"
"Mail originalement destiné à %s."
#: Email.php:139
#, php-format
msgid "<p><small>%s: %s</small></p>"
msgstr "<p><small>%s: %s</small></p>"
#: Email.php:140
#, php-format
msgid ""
"\n"
"%s: %s"
msgstr ""
"\n"
"%s: %s"
#: Tpl.php:421
msgid "No template specified."
msgstr "Aucun template spécifié."
#: Tpl.php:454
msgid "An error occurred while displaying this page."
msgstr "Une erreur est survenue en affichant cette page."
#: Url.php:177
msgid "Bad request"
msgstr "Mauvaise requête"
#: Url.php:178
msgid "Invalid request."
msgstr "Requête invalide."
#: Url.php:182
msgid "You have to be authenticated to access to this page."
msgstr "Vous devez être authentifié pour accéder à cette page."
#: Url.php:186
msgid ""
"You do not have access to this application. If you think this is an error, "
"please contact support."
msgstr ""
"Vous n'avez pas accès à cette application. Si vous pensez qu'il s'agit d'une "
"erreur, merci de prendre contact avec le support."
#: Url.php:189
msgid "Whoops ! Page not found"
msgstr "Oups ! Page introuvable"
#: Url.php:190
msgid "The requested page can not be found."
msgstr "La page demandée est introuvable."
#: Url.php:198
msgid "Error"
msgstr "Erreur"
#: Url.php:199
msgid "An unknown error occurred. If problem persist, please contact support."
msgstr ""
"Une erreur inconnue est survenue. Si le problème persiste, merci de prendre "
"contact avec le support."
#: Url.php:262
msgid ""
"Unable to determine the requested page. If the problem persists, please "
"contact support."
msgstr ""
"Impossible de déterminer la page demandée. Si le problème persiste, merci de "
"prendre contact avec le support."
#: Url.php:416
msgid ""
"Unable to determine the requested page (loop detected). If the problem "
"persists, please contact support."
msgstr ""
"Impossible de déterminer la page demandée (boucle détectée). Si le problème "
"persiste, merci de prendre contact avec le support."
#: Url.php:446
msgid "This request cannot be processed."
msgstr "Cette requête ne peut être traitée."
#: Url.php:456
msgid "Authentication required but fail to authenticate you."
msgstr "Authentification requise mais impossible pour vous authentifier."
#: Url.php:475
msgid "This request could not be processed correctly."
msgstr "Cette requête n'a put être traitée correctement."
#: I18n.php:118 App.php:238
#: App.php:241 I18n.php:118
msgid "Hello world !"
msgstr "Bonjour tout le monde !"
#: App.php:243
msgid "Hello world!"
msgstr "Salut tout le monde !"
#: App.php:254
msgid "Disconnected"
msgstr "Déconnecté"
#: App.php:256
msgid "You are now disconnected."
msgstr "Vous êtes maintenant déconnecté."
#: I18n.php:138
msgid "Extract messages that need to be translated"
msgstr "Extraire les messages devant être traduit"
@ -312,34 +325,34 @@ msgstr ""
"Cette commande peut-être utilisée pour compiler les fichiers PO dans les "
"dossiers locales/*/LC_MESSAGES and les catalogues JS dans le dossier locales."
#: I18n.php:356
#: I18n.php:347
msgid "Fail to list EesyPHP PHP files."
msgstr "Une erreur est survenue en listant les fichiers PHP d'EesyPHP."
#: I18n.php:376
#: I18n.php:367
msgid "Fail to extract messages from EesyPHP PHP files using xgettext."
msgstr ""
"Une erreur est survenue en extrayant les messages depuis les fichiers PHP "
"d'EesyPHP en utilisant xgettext."
#: I18n.php:393
#: I18n.php:384
msgid "Fail to list application PHP files."
msgstr "Une erreur est survenue en listant les fichiers PHP de l'application."
#: I18n.php:413
#: I18n.php:404
msgid "Fail to extract messages from PHP files using xgettext."
msgstr ""
"Impossible d'extraire les messages depuis les fichiers PHP en utilisant "
"xgettext."
#: I18n.php:429
#: I18n.php:420
#, php-format
msgid "Fail to list JS files in the directory of static files '%s'."
msgstr ""
"Une erreur est survenue en listant les fichiers JS dans le dossier des "
"fichiers statiques '%s'."
#: I18n.php:451
#: I18n.php:442
#, php-format
msgid ""
"Fail to extract messages from JS files in the directory of static files '%s' "
@ -348,7 +361,7 @@ msgstr ""
"Une erreur est survenue en extrayant les messages depuis les fichiers JS du "
"dossier des fichiers statiques '%s' en utilisant xgettext."
#: I18n.php:473
#: I18n.php:464
#, php-format
msgid ""
"Fail to extract messages from templates directory '%s' using tsmarty2c.php "
@ -357,100 +370,100 @@ msgstr ""
"Impossible d'extraire les messages depuis le dossier de templates '%s' en "
"utilisant le script tsmarty2c.php."
#: I18n.php:509
#: I18n.php:500
msgid "Fail to merge messages using msgcat."
msgstr "Impossible de fusionner les messages en utilisant msgcat."
#: I18n.php:523
#: I18n.php:514
#, php-format
msgid "Compendium file %s not found."
msgstr "Fichier compendium %s introuvable."
#: I18n.php:534
#: I18n.php:525
#, php-format
msgid "POT file not found (%s). Please run extract_messages first."
msgstr ""
"Fichier POT introuvable (%s). Merci de lancer la commande extract_messages "
"pour commencer."
#: I18n.php:546 I18n.php:656
#: I18n.php:537 I18n.php:647
#, php-format
msgid "Lang directory '%s' found"
msgstr "Dossier de langue '%s' trouvé"
#: I18n.php:552 I18n.php:662
#: I18n.php:543 I18n.php:653
#, php-format
msgid "LC_MESSAGES directory not found in lang '%s' directory, ignore it."
msgstr ""
"Le dossier LC_MESSAGES est introuvable dans le dossier de langue '%s', on "
"l'ignore."
#: I18n.php:567
#: I18n.php:558
#, php-format
msgid "Fail to init messages in %s PO file using msginit (%s)."
msgstr ""
"Impossible d'initialiser les messages dans le fichier PO %s en utilisant "
"msginit (%s)."
#: I18n.php:585
#: I18n.php:576
#, php-format
msgid "Fail to update messages in %s PO file using msgmerge (%s)."
msgstr ""
"Impossible de mettre à jour les messages dans les fichiers PO %s en "
"utilisant msgmerge (%s)."
#: I18n.php:591 I18n.php:670
#: I18n.php:582 I18n.php:661
#, php-format
msgid "PO file not found in lang '%s' directory, ignore it."
msgstr ""
"Le fichier PO est introuvable dans le dossier de langue '%s', on l'ignore."
#: I18n.php:598 I18n.php:725
#: I18n.php:589 I18n.php:716
#, php-format
msgid "Fail to open root lang directory (%s)."
msgstr "Impossible d'ouvrir le dossier racine des langues (%s)."
#: I18n.php:626
#: I18n.php:617
#, php-format
msgid "Lang alias symlink found: %s -> %s"
msgstr "Lien symbolique d'alias de langue trouvé : %s -> %s"
#: I18n.php:633
#: I18n.php:624
#, php-format
msgid "JS catalog symlink for %s -> %s created (%s)"
msgstr "Lien symbolique de catalogue JS pour %s -> %s créé (%s)"
#: I18n.php:637
#: I18n.php:628
#, php-format
msgid "Fail to create JS catalog symlink for %s -> %s (%s)"
msgstr ""
"Impossible de créer le lien symbolique de catalogue JS pour %s -> %s (%s)"
#: I18n.php:643
#: I18n.php:634
#, php-format
msgid "JS catalog symlink for %s -> %s already exist (%s)"
msgstr "Le lien symbolique du catalogue JS pour %s -> %s existe déjà (%s)"
#: I18n.php:648
#: I18n.php:639
#, php-format
msgid "JS catalog file for %s already exist, but it's not a symlink to %s (%s)"
msgstr ""
"Le catalogue JS pour %s existe, mais il ne s'agit par d'un lien symbolique "
"vers %s (%s)"
#: I18n.php:683
#: I18n.php:674
#, php-format
msgid "Fail to compile messages from %s PO file as MO file using msgfmt (%s)."
msgstr ""
"Impossible de compiler les messages depuis le fichier PO %s en tant que "
"fichier MO en utilisant msgfmt (%s)."
#: I18n.php:695
#: I18n.php:686
#, php-format
msgid "Include core translated messages from %s PO file"
msgstr "Inclusion des messages traduits (core) depuis le fichier PO %s"
#: I18n.php:702
#: I18n.php:693
#, php-format
msgid ""
"Core PO file %s not found: can not include its translated messages in "
@ -459,32 +472,52 @@ msgstr ""
"Le fichier PO core %s est introuvable : impossible d'inclure ses messages "
"traduits dans le catalogue JSON résultant."
#: I18n.php:708
#: I18n.php:699
#, php-format
msgid "Fail to open %s JS catalog file in write mode (%s)."
msgstr "Impossible d'ouvrir le catalogue JS %s en mode écriture (%s)."
#: I18n.php:713
#: I18n.php:704
#, php-format
msgid "Fail to write %s JS catalog in file (%s)."
msgstr "Impossible d'écrire le fichier du catalogue JS %s (%s)."
#: I18n.php:718
#: I18n.php:709
#, php-format
msgid "%s JS catalog writed (%s)."
msgstr "Catalogue JS %s créé (%s)."
#: App.php:240
msgid "Hello world!"
msgstr "Salut tout le monde !"
#: Email.php:101
#, php-format
msgid "</hr><p><small>Mail initialy intended for %s.</small></p>"
msgstr "</hr><p><small>Email initialement destiné à %s.</small></p>"
#: App.php:251
msgid "Disconnected"
msgstr "Déconnecté"
#: Email.php:102
#, php-format
msgid ""
"\n"
"\n"
"\n"
"Mail initialy intended for %s."
msgstr ""
"\n"
"\n"
"\n"
"Mail originalement destiné à %s."
#: App.php:253
msgid "You are now disconnected."
msgstr "Vous êtes maintenant déconnecté."
#: Email.php:139
#, php-format
msgid "<p><small>%s: %s</small></p>"
msgstr "<p><small>%s: %s</small></p>"
#: Email.php:140
#, php-format
msgid ""
"\n"
"%s: %s"
msgstr ""
"\n"
"%s: %s"
#: static/js/myconfirm.js:4 static/js/myconfirm.js:187
#: static/js/myconfirm.js:216
@ -527,11 +560,23 @@ msgstr "Merci de patienter pendant le traitement de votre requête."
msgid "Are you sure?"
msgstr "Êtes-vous sure ?"
#: templates/fatal_error.tpl:3
#: templates/login.tpl:19 templates/login.tpl:20
msgid "Username"
msgstr "Nom d'utilisateur"
#: templates/login.tpl:24 templates/login.tpl:25
msgid "Password"
msgstr "Mot de passe"
#: templates/login.tpl:29
msgid "Submit"
msgstr "Envoyer"
#: templates/fatal_error.tpl:7
msgid "Oops..."
msgstr "Oups..."
#: templates/fatal_error.tpl:5
#: templates/fatal_error.tpl:10
msgid ""
"A fatal error has occurred and it is preventing this application from "
"working properly. Please try again later or contact support."
@ -540,14 +585,42 @@ msgstr ""
"fonctionner correctement. Merci de réessayer ultérieurement ou de prendre "
"contact avec le service support."
#: templates/fatal_error.tpl:7
#: templates/fatal_error.tpl:13
msgid "Error: %1"
msgstr "Erreur : %1"
#: templates/fatal_error.tpl:9
#: templates/fatal_error.tpl:17
msgid "Back"
msgstr "Retour"
#: templates/empty.tpl:72
msgid "Sign out"
msgstr "Déconnexion"
#: templates/empty.tpl:82
msgid "Log in"
msgstr "Connexion"
#: templates/empty.tpl:117
msgid "Loading time:"
msgstr "Temps de chargement :"
#: templates/empty.tpl:118
msgid "Page: %1"
msgstr "Page : %1"
#: templates/empty.tpl:119
msgid "Database: %1"
msgstr "Base de données : %1"
#: templates/empty.tpl:120
msgid "Templating: "
msgstr "Modèle : "
#: templates/empty.tpl:121
msgid "Total: "
msgstr "Total : "
#: templates/homepage.tpl:6
msgid "Hello, world!"
msgstr "Bonjour tout le monde !"
@ -564,26 +637,6 @@ msgstr ""
"fichier <em>homepage.tpl</em> pour l'écraser. Vous pouvez également écraser "
"le gestionnaire de l'URL racine de l'application web."
#: templates/empty.tpl:72
msgid "Sign out"
msgstr "Déconnexion"
#: templates/empty.tpl:81
msgid "Log in"
msgstr "Connexion"
#: templates/login.tpl:19 templates/login.tpl:20
msgid "Username"
msgstr "Nom d'utilisateur"
#: templates/login.tpl:24 templates/login.tpl:25
msgid "Password"
msgstr "Mot de passe"
#: templates/login.tpl:29
msgid "Submit"
msgstr "Envoyer"
#~ msgid "Logout"
#~ msgstr "Déconnexion"

View file

@ -1,11 +1,105 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2023-03-11 11:52+0100\n"
"PO-Revision-Date: 2023-03-11 11:52+0100\n"
"POT-Creation-Date: 2023-03-22 18:21+0100\n"
"PO-Revision-Date: 2023-03-22 18:21+0100\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: Tpl.php:437
msgid "No template specified."
msgstr ""
#: Tpl.php:471
msgid "An error occurred while displaying this page."
msgstr ""
#: Tpl.php:871
msgid "Unkwown"
msgstr ""
#: Db.php:80
msgid "Unable to connect to the database."
msgstr ""
#: Auth/Form.php:41
msgid "Invalid username or password."
msgstr ""
#: Auth/Form.php:74
msgid "Sign in"
msgstr ""
#: Auth/Http.php:37 Url.php:181
msgid "Authentication required"
msgstr ""
#: Auth/Http.php:124 Auth/Http.php:127 Url.php:185
msgid "Access denied"
msgstr ""
#: Auth/Http.php:128 Auth/Http.php:132
msgid "You must login to access this page."
msgstr ""
#: Url.php:177
msgid "Bad request"
msgstr ""
#: Url.php:178
msgid "Invalid request."
msgstr ""
#: Url.php:182
msgid "You have to be authenticated to access to this page."
msgstr ""
#: Url.php:186
msgid ""
"You do not have access to this application. If you think this is an error, "
"please contact support."
msgstr ""
#: Url.php:189
msgid "Whoops ! Page not found"
msgstr ""
#: Url.php:190
msgid "The requested page can not be found."
msgstr ""
#: Url.php:198
msgid "Error"
msgstr ""
#: Url.php:199
msgid "An unknown error occurred. If problem persist, please contact support."
msgstr ""
#: Url.php:262
msgid ""
"Unable to determine the requested page. If the problem persists, please "
"contact support."
msgstr ""
#: Url.php:416
msgid ""
"Unable to determine the requested page (loop detected). If the problem "
"persists, please contact support."
msgstr ""
#: Url.php:446
msgid "This request cannot be processed."
msgstr ""
#: Url.php:456
msgid "Authentication required but fail to authenticate you."
msgstr ""
#: Url.php:475
msgid "This request could not be processed correctly."
msgstr ""
#: Cli.php:44
msgid "Create a new project using EesyPHP framework"
msgstr ""
@ -114,126 +208,51 @@ msgstr ""
msgid "Please enter password:"
msgstr ""
#: Db.php:74
msgid "Unable to connect to the database."
#: functions.php:304
msgid "d"
msgstr ""
#: Auth/Form.php:41
msgid "Invalid username or password."
#: functions.php:305
msgid "h"
msgstr ""
#: Auth/Form.php:74
msgid "Sign in"
#: functions.php:306
msgid "m"
msgstr ""
#: Auth/Http.php:37 Url.php:181
msgid "Authentication required"
#: functions.php:307
msgid "s"
msgstr ""
#: Auth/Http.php:124 Auth/Http.php:127 Url.php:185
msgid "Access denied"
#: functions.php:308
msgid "ms"
msgstr ""
#: Auth/Http.php:128 Auth/Http.php:132
msgid "You must login to access this page."
#: functions.php:309
msgid "ns"
msgstr ""
#: Email.php:101
#: functions.php:327
#, php-format
msgid "</hr><p><small>Mail initialy intended for %s.</small></p>"
msgid "Less than 1%s"
msgstr ""
#: Email.php:102
#, php-format
msgid ""
"\n"
"\n"
"\n"
"Mail initialy intended for %s."
msgstr ""
#: Email.php:139
#, php-format
msgid "<p><small>%s: %s</small></p>"
msgstr ""
#: Email.php:140
#, php-format
msgid ""
"\n"
"%s: %s"
msgstr ""
#: Tpl.php:421
msgid "No template specified."
msgstr ""
#: Tpl.php:454
msgid "An error occurred while displaying this page."
msgstr ""
#: Url.php:177
msgid "Bad request"
msgstr ""
#: Url.php:178
msgid "Invalid request."
msgstr ""
#: Url.php:182
msgid "You have to be authenticated to access to this page."
msgstr ""
#: Url.php:186
msgid ""
"You do not have access to this application. If you think this is an error, "
"please contact support."
msgstr ""
#: Url.php:189
msgid "Whoops ! Page not found"
msgstr ""
#: Url.php:190
msgid "The requested page can not be found."
msgstr ""
#: Url.php:198
msgid "Error"
msgstr ""
#: Url.php:199
msgid "An unknown error occurred. If problem persist, please contact support."
msgstr ""
#: Url.php:262
msgid ""
"Unable to determine the requested page. If the problem persists, please "
"contact support."
msgstr ""
#: Url.php:416
msgid ""
"Unable to determine the requested page (loop detected). If the problem "
"persists, please contact support."
msgstr ""
#: Url.php:446
msgid "This request cannot be processed."
msgstr ""
#: Url.php:456
msgid "Authentication required but fail to authenticate you."
msgstr ""
#: Url.php:475
msgid "This request could not be processed correctly."
msgstr ""
#: I18n.php:118 App.php:238
#: App.php:241 I18n.php:118
msgid "Hello world !"
msgstr ""
#: App.php:243
msgid "Hello world!"
msgstr ""
#: App.php:254
msgid "Disconnected"
msgstr ""
#: App.php:256
msgid "You are now disconnected."
msgstr ""
#: I18n.php:138
msgid "Extract messages that need to be translated"
msgstr ""
@ -265,152 +284,166 @@ msgid ""
"directories to MO files and as JS catalogs in locales directory."
msgstr ""
#: I18n.php:356
#: I18n.php:347
msgid "Fail to list EesyPHP PHP files."
msgstr ""
#: I18n.php:376
#: I18n.php:367
msgid "Fail to extract messages from EesyPHP PHP files using xgettext."
msgstr ""
#: I18n.php:393
#: I18n.php:384
msgid "Fail to list application PHP files."
msgstr ""
#: I18n.php:413
#: I18n.php:404
msgid "Fail to extract messages from PHP files using xgettext."
msgstr ""
#: I18n.php:429
#: I18n.php:420
#, php-format
msgid "Fail to list JS files in the directory of static files '%s'."
msgstr ""
#: I18n.php:451
#: I18n.php:442
#, php-format
msgid ""
"Fail to extract messages from JS files in the directory of static files '%s' "
"using xgettext."
msgstr ""
#: I18n.php:473
#: I18n.php:464
#, php-format
msgid ""
"Fail to extract messages from templates directory '%s' using tsmarty2c.php "
"script."
msgstr ""
#: I18n.php:509
#: I18n.php:500
msgid "Fail to merge messages using msgcat."
msgstr ""
#: I18n.php:523
#: I18n.php:514
#, php-format
msgid "Compendium file %s not found."
msgstr ""
#: I18n.php:534
#: I18n.php:525
#, php-format
msgid "POT file not found (%s). Please run extract_messages first."
msgstr ""
#: I18n.php:546 I18n.php:656
#: I18n.php:537 I18n.php:647
#, php-format
msgid "Lang directory '%s' found"
msgstr ""
#: I18n.php:552 I18n.php:662
#: I18n.php:543 I18n.php:653
#, php-format
msgid "LC_MESSAGES directory not found in lang '%s' directory, ignore it."
msgstr ""
#: I18n.php:567
#: I18n.php:558
#, php-format
msgid "Fail to init messages in %s PO file using msginit (%s)."
msgstr ""
#: I18n.php:585
#: I18n.php:576
#, php-format
msgid "Fail to update messages in %s PO file using msgmerge (%s)."
msgstr ""
#: I18n.php:591 I18n.php:670
#: I18n.php:582 I18n.php:661
#, php-format
msgid "PO file not found in lang '%s' directory, ignore it."
msgstr ""
#: I18n.php:598 I18n.php:725
#: I18n.php:589 I18n.php:716
#, php-format
msgid "Fail to open root lang directory (%s)."
msgstr ""
#: I18n.php:626
#: I18n.php:617
#, php-format
msgid "Lang alias symlink found: %s -> %s"
msgstr ""
#: I18n.php:633
#: I18n.php:624
#, php-format
msgid "JS catalog symlink for %s -> %s created (%s)"
msgstr ""
#: I18n.php:637
#: I18n.php:628
#, php-format
msgid "Fail to create JS catalog symlink for %s -> %s (%s)"
msgstr ""
#: I18n.php:643
#: I18n.php:634
#, php-format
msgid "JS catalog symlink for %s -> %s already exist (%s)"
msgstr ""
#: I18n.php:648
#: I18n.php:639
#, php-format
msgid "JS catalog file for %s already exist, but it's not a symlink to %s (%s)"
msgstr ""
#: I18n.php:683
#: I18n.php:674
#, php-format
msgid "Fail to compile messages from %s PO file as MO file using msgfmt (%s)."
msgstr ""
#: I18n.php:695
#: I18n.php:686
#, php-format
msgid "Include core translated messages from %s PO file"
msgstr ""
#: I18n.php:702
#: I18n.php:693
#, php-format
msgid ""
"Core PO file %s not found: can not include its translated messages in "
"resulting JSON catalog."
msgstr ""
#: I18n.php:708
#: I18n.php:699
#, php-format
msgid "Fail to open %s JS catalog file in write mode (%s)."
msgstr ""
#: I18n.php:713
#: I18n.php:704
#, php-format
msgid "Fail to write %s JS catalog in file (%s)."
msgstr ""
#: I18n.php:718
#: I18n.php:709
#, php-format
msgid "%s JS catalog writed (%s)."
msgstr ""
#: App.php:240
msgid "Hello world!"
#: Email.php:101
#, php-format
msgid "</hr><p><small>Mail initialy intended for %s.</small></p>"
msgstr ""
#: App.php:251
msgid "Disconnected"
#: Email.php:102
#, php-format
msgid ""
"\n"
"\n"
"\n"
"Mail initialy intended for %s."
msgstr ""
#: App.php:253
msgid "You are now disconnected."
#: Email.php:139
#, php-format
msgid "<p><small>%s: %s</small></p>"
msgstr ""
#: Email.php:140
#, php-format
msgid ""
"\n"
"%s: %s"
msgstr ""
#: static/js/myconfirm.js:4 static/js/myconfirm.js:187
@ -454,24 +487,64 @@ msgstr ""
msgid "Are you sure?"
msgstr ""
#: templates/fatal_error.tpl:3
#: templates/login.tpl:19 templates/login.tpl:20
msgid "Username"
msgstr ""
#: templates/login.tpl:24 templates/login.tpl:25
msgid "Password"
msgstr ""
#: templates/login.tpl:29
msgid "Submit"
msgstr ""
#: templates/fatal_error.tpl:7
msgid "Oops..."
msgstr ""
#: templates/fatal_error.tpl:5
#: templates/fatal_error.tpl:10
msgid ""
"A fatal error has occurred and it is preventing this application from "
"working properly. Please try again later or contact support."
msgstr ""
#: templates/fatal_error.tpl:7
#: templates/fatal_error.tpl:13
msgid "Error: %1"
msgstr ""
#: templates/fatal_error.tpl:9
#: templates/fatal_error.tpl:17
msgid "Back"
msgstr ""
#: templates/empty.tpl:72
msgid "Sign out"
msgstr ""
#: templates/empty.tpl:82
msgid "Log in"
msgstr ""
#: templates/empty.tpl:117
msgid "Loading time:"
msgstr ""
#: templates/empty.tpl:118
msgid "Page: %1"
msgstr ""
#: templates/empty.tpl:119
msgid "Database: %1"
msgstr ""
#: templates/empty.tpl:120
msgid "Templating: "
msgstr ""
#: templates/empty.tpl:121
msgid "Total: "
msgstr ""
#: templates/homepage.tpl:6
msgid "Hello, world!"
msgstr ""
@ -483,23 +556,3 @@ msgid ""
"it. You could also overwrite the URL handler for the root of the web "
"application."
msgstr ""
#: templates/empty.tpl:72
msgid "Sign out"
msgstr ""
#: templates/empty.tpl:81
msgid "Log in"
msgstr ""
#: templates/login.tpl:19 templates/login.tpl:20
msgid "Username"
msgstr ""
#: templates/login.tpl:24 templates/login.tpl:25
msgid "Password"
msgstr ""
#: templates/login.tpl:29
msgid "Submit"
msgstr ""

View file

@ -8,7 +8,9 @@ class App {
* Options
* @var array
*/
protected static $options = array();
protected static $options = array(
'init_time' => null,
);
/**
* Root directory path
@ -24,6 +26,7 @@ class App {
* @return void
*/
public static function init($config_file, $options=null, $root_directory_path=null) {
Config::register_extra_variable('init_time', hrtime(true));
if (is_array($options)) self :: $options = $options;
if (is_null($root_directory_path)) {

View file

@ -41,9 +41,9 @@ class Cli {
self :: add_command(
'new_project',
array('\\EesyPHP\\Cli', 'cli_new_project'),
I18n :: ___("Create a new project using EesyPHP framework"),
___("Create a new project using EesyPHP framework"),
null,
I18n :: ___(
___(
"This command could be used to easily build the structure of a new project using the ".
"EesyPHP framework.")
);
@ -52,9 +52,9 @@ class Cli {
self :: add_command(
'serve',
array('\\EesyPHP\\Cli', 'cli_serve'),
I18n :: ___("Start the PHP built-in HTTP server to serve the application"),
___("Start the PHP built-in HTTP server to serve the application"),
null,
I18n :: ___(
___(
"This command could be used to start the PHP built-in HTTP server to serve the ".
"application.")
);

View file

@ -38,6 +38,12 @@ class Db {
*/
protected $locale_time = null;
/**
* Keep trace of total queries times (in ns)
* @var int;
*/
public static $total_query_time = 0;
/**
* Connect to database and return FluentPDO Query object
* @param string $dsn Database DSN
@ -65,7 +71,7 @@ class Db {
$this -> fpdo = new Query($this -> pdo);
// Register the debug query handler to log it
$this -> fpdo -> debug = array('\\EesyPHP\\Db', 'debug_query');
$this -> fpdo -> debug = array(self :: class, 'debug_query');
Log :: trace("DB connection established (DSN: '%s')", $dsn);
}
@ -81,6 +87,7 @@ class Db {
* @return void
*/
public static function debug_query($q) {
self :: $total_query_time += intval(ceil($q->getExecutionTime() * 1000000000));
$msg = "# DB query";
if ($q->getResult())
$msg .= sprintf(

View file

@ -135,28 +135,28 @@ class I18n {
Cli :: add_command(
'extract_messages',
array('\\EesyPHP\\I18n', 'cli_extract_messages'),
self :: ___("Extract messages that need to be translated"),
___("Extract messages that need to be translated"),
null,
self :: ___("This command could be used to generate/update locales/messages.pot file.")
___("This command could be used to generate/update locales/messages.pot file.")
);
Cli :: add_command(
'update_messages',
array('\\EesyPHP\\I18n', 'cli_update_messages'),
self :: ___("Update messages in translation PO lang files"),
___("Update messages in translation PO lang files"),
null,
self :: ___("This command could be used to init/update PO files in locales/*/LC_MESSAGES directories.")
___("This command could be used to init/update PO files in locales/*/LC_MESSAGES directories.")
);
Cli :: add_command(
'compile_messages',
array('\\EesyPHP\\I18n', 'cli_compile_messages'),
self :: ___(
___(
"Compile messages from existing translation PO lang files to ".
"corresponding MO files and JS catalogs"
),
null,
self :: ___(
___(
"This command could be used to compile PO files in locales/*/LC_MESSAGES ".
"directories to MO files and as JS catalogs in locales directory."
)
@ -260,15 +260,6 @@ class I18n {
return $return;
}
/**
* Just mark message for translation
* @param string $msg The message to translate
* @return string The message without transformation
*/
public static function ___($msg) {
return $msg;
}
/*
********************************************************************
* Translations CLI commands *

View file

@ -75,6 +75,14 @@ class Tpl {
*/
private static $mime_type_detector = null;
/**
* Keep trace of Smarty start displaying page time
* @see display()
* @see smarty_computing_time()
* @var int
*/
private static $start_time = null;
/**
* Initialization
* @return void
@ -180,6 +188,10 @@ class Tpl {
self :: register_static_directory($path);
}
self :: register_function('var_dump', array('EesyPHP\\Tpl', 'smarty_var_dump'));
self :: register_function(
'smarty_computing_time', array('EesyPHP\\Tpl', 'smarty_computing_time'));
self :: register_function(
'smarty_total_computing_time', array('EesyPHP\\Tpl', 'smarty_total_computing_time'));
self :: register_class('App', '\\EesyPHP\\App');
}
@ -407,6 +419,10 @@ class Tpl {
Tpl :: assign(
'upload_max_filesize',
App::get('upload_max_filesize', null, 'int'));
$init_time = App::get('init_time');
Tpl :: assign('compute_time', $init_time?format_duration(hrtime(true)-$init_time, 'ns', 'ms'):null);
Tpl :: assign('db_time', Db :: $total_query_time?format_duration(Db :: $total_query_time, 'ns', 'ms'):null);
}
/**
@ -444,6 +460,7 @@ class Tpl {
try {
Hook :: trigger('before_displaying_template');
self :: define_common_variables($pagetitle);
self :: $start_time = hrtime(true);
self :: $smarty->display("Tpl:$template");
}
catch (Exception $e) {
@ -828,4 +845,30 @@ class Tpl {
if (!isset($params['data'])) return;
var_dump($params['data']);
}
/**
* Compute Smarty computing time
* @param array<string,mixed> $params Parameters from template file
* @param Smarty $smarty The smarty object
* @return void
*/
public static function smarty_computing_time($params, $smarty) {
echo format_duration(hrtime(true) - self :: $start_time, 'ns', 'ms');
}
/**
* Compute total page computing time
* @param array<string,mixed> $params Parameters from template file
* @param Smarty $smarty The smarty object
* @return void
*/
public static function smarty_total_computing_time($params, $smarty) {
$init_time = App::get('init_time');
if ($init_time) {
echo format_duration(hrtime(true) - $init_time, 'ns', 'ms');
}
else {
echo _('Unkwown');
}
}
}

View file

@ -282,4 +282,50 @@ function check_ajax_request($session_key=null) {
Log :: debug("Ajax Request : ".vardump($_REQUEST));
}
/**
* Just mark message for translation
* @param string $msg The message to translate
* @return string The message without transformation
*/
function ___($msg) {
return $msg;
}
/**
* Format duration
* @param int|float $value The duration to format
* @param string|null $unit The unit of provide value (optional, default: 's')
* @param string|null $precision Minimal precision to displayed (optional, default: 's')
* @param string|null $separator The separator between time block (optional, default: null = one space)
* @return string|false The formated duration as string, or false in case of error
*/
function format_duration($value, $unit=null, $precision=null, $separator=null) {
$units = array(
___('d') => 86400000000000,
___('h') => 3600000000000,
___('m') => 60000000000,
___('s') => 1000000000,
___('ms') => 1000000,
___('ns') => 1,
);
if (!$unit) $unit = 's';
if (!array_key_exists($unit, $units)) return false;
if (!$precision) $precision = 's';
if (!array_key_exists($precision, $units)) return false;
if ($value == 0) return "0".I18n :: _($precision);
$value = $value * $units[$unit];
$result = array();
foreach ($units as $unit => $factor) {
if ($value >= $factor) {
$vunit = floor($value/$factor);
$value = $value - ($vunit * $factor);
$result[] = $vunit._($unit);
}
if ($unit == $precision) break;
}
// 0 ?
if (empty($result)) return I18n :: _('Less than 1%s', I18n :: _($precision));
return implode(is_null($separator)?' ':strval($separator), $result);
}
# vim: tabstop=2 shiftwidth=2 softtabstop=2 expandtab

View file

@ -14,15 +14,12 @@ a.navbar-brand img {
height: 27px;
}
#footer {
border-top: 1px solid #333;
margin-top: 1em;
padding-top: 1em;
footer {
font-size: 0.9em;
}
#footer p {
font-size: 0.8em;
text-align: center;
footer div.compute-times {
font-size: 0.6em;
}
/*

View file

@ -110,6 +110,19 @@
<span class="text-muted">
<a href="https://gitea.zionetrix.net/bn8/eesyphp">EesyPHP</a>
</span>
{block name="footer-compute-times"}
{if isset($compute_time)}
<div class='compute-times'>
<span class="text-muted">
{t domain=$CORE_TEXT_DOMAIN}Loading time:{/t}
{t 1=$compute_time domain=$CORE_TEXT_DOMAIN}Page: %1{/t}
{if isset($db_time)} - {t 1=$db_time domain=$CORE_TEXT_DOMAIN}Database: %1{/t}{/if}
- {t domain=$CORE_TEXT_DOMAIN}Templating: {/t}{smarty_computing_time}
- {t domain=$CORE_TEXT_DOMAIN}Total: {/t}{smarty_total_computing_time}
</span>
</div>
{/if}
{/block}
{/block}
</div>
</footer>