Compare commits

...

6 commits

7 changed files with 691 additions and 635 deletions

View file

@ -1,9 +1,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"POT-Creation-Date: 2023-02-28 01:45+0100\n" "POT-Creation-Date: 2023-03-03 10:42+0100\n"
"PO-Revision-Date: \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-Team: \n"
"Language: fr_FR\n" "Language: fr_FR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -12,6 +12,104 @@ msgstr ""
"X-Generator: Poedit 2.4.2\n" "X-Generator: Poedit 2.4.2\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: Tpl.php:420
msgid "No template specified."
msgstr "Aucun template spécifié."
#: Tpl.php:453
msgid "An error occurred while displaying this page."
msgstr "Une erreur est survenue en affichant cette page."
#: Db.php:74
msgid "Unable to connect to the database."
msgstr "Impossible de se connecter à la base de données."
#: Auth/Form.php:40
msgid "Invalid username or password."
msgstr "Nom d'utilisateur ou mot de passe invalide."
#: Auth/Form.php:72
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 #: Cli.php:44
msgid "Create a new project using EesyPHP framework" msgid "Create a new project using EesyPHP framework"
msgstr "Créer un nouveau projet utilisant le framework EesyPHP" msgstr "Créer un nouveau projet utilisant le framework EesyPHP"
@ -64,18 +162,28 @@ msgid " --trace Trace mode (the most verbose)\n"
msgstr " --trace Mode trace (le plus verbeux)\n" msgstr " --trace Mode trace (le plus verbeux)\n"
#: Cli.php:130 #: Cli.php:130
msgid " -l / --log-file Overwrite log file specified in configuration\n"
msgstr ""
" -l / --log-file Redéfinir le fichier de journalisation à utiliser à la "
"place de celui défini dans la configuration\n"
#: Cli.php:131
msgid " -C / --console Enable log on console\n"
msgstr " -C / --console Activer la journalisation dans la console\n"
#: Cli.php:132
msgid " command Command to run\n" msgid " command Command to run\n"
msgstr " command La commande à exécuter\n" msgstr " command La commande à exécuter\n"
#: Cli.php:132 #: Cli.php:134
msgid "Available commands:\n" msgid "Available commands:\n"
msgstr "Commandes disponibles:\n" msgstr "Commandes disponibles:\n"
#: Cli.php:182 #: Cli.php:184
msgid "Only one command could be executed !" msgid "Only one command could be executed !"
msgstr "Une seul commande peut-être exécutée !" msgstr "Une seul commande peut-être exécutée !"
#: Cli.php:210 #: Cli.php:221
#, php-format #, php-format
msgid "" msgid ""
"Invalid parameter \"%s\".\n" "Invalid parameter \"%s\".\n"
@ -85,12 +193,12 @@ msgstr ""
"Note : Les paramètres/arguments de la requête doivent être placés après " "Note : Les paramètres/arguments de la requête doivent être placés après "
"celle-ci." "celle-ci."
#: Cli.php:235 #: Cli.php:246
#, php-format #, php-format
msgid "An exception occured running command %s" msgid "An exception occured running command %s"
msgstr "Une exception est survenue en exécutant la commande %s" msgstr "Une exception est survenue en exécutant la commande %s"
#: Cli.php:296 #: Cli.php:307
msgid "" msgid ""
"This command only accept one argument: the listen address in format \"host:" "This command only accept one argument: the listen address in format \"host:"
"port\" or \":port\" (= 0.0.0.0:port)." "port\" or \":port\" (= 0.0.0.0:port)."
@ -98,19 +206,19 @@ msgstr ""
"Cette commande n'accepte qu'un seul paramètre : l'adresse d'écoute au format " "Cette commande n'accepte qu'un seul paramètre : l'adresse d'écoute au format "
"\"hôte:port\" ou \":port\" (= 0.0.0.0:port)." "\"hôte:port\" ou \":port\" (= 0.0.0.0:port)."
#: Cli.php:307 #: Cli.php:318
msgid "" msgid ""
"Invalid listen address specify. Must be in formart host:port (or :port)." "Invalid listen address specify. Must be in formart host:port (or :port)."
msgstr "" msgstr ""
"Adresse d'écoute spécifiée invalide. Elle doit être au format hôte:port (ou :" "Adresse d'écoute spécifiée invalide. Elle doit être au format hôte:port (ou :"
"port)." "port)."
#: Cli.php:317 #: Cli.php:328
msgid "Invalid listen host specified. Must be an IPv4 or IPv6 address." msgid "Invalid listen host specified. Must be an IPv4 or IPv6 address."
msgstr "" msgstr ""
"Hôte d'écoute spécifié invalide. Il doit s'agir d'une adresse IPv4 ou IPv6." "Hôte d'écoute spécifié invalide. Il doit s'agir d'une adresse IPv4 ou IPv6."
#: Cli.php:324 #: Cli.php:335
msgid "" msgid ""
"Invalid listen port specified. Must be a positive integer between 1 and " "Invalid listen port specified. Must be a positive integer between 1 and "
"65535." "65535."
@ -118,46 +226,226 @@ msgstr ""
"Port d'écoute spécifié invalide. Il doit s'agir d'un entier positif entre 1 " "Port d'écoute spécifié invalide. Il doit s'agir d'un entier positif entre 1 "
"et 65535." "et 65535."
#: Cli.php:354 #: Cli.php:365
msgid "Can't invoke bash. Can't ask password prompt." msgid "Can't invoke bash. Can't ask password prompt."
msgstr "" msgstr ""
"Impossible d'utiliser bash. Impossible de demander à l'utilisateur de saisir " "Impossible d'utiliser bash. Impossible de demander à l'utilisateur de saisir "
"un mot de passe." "un mot de passe."
#: Cli.php:357 #: Cli.php:368
msgid "Please enter password:" msgid "Please enter password:"
msgstr "Merci de saisir le mot de passe :" msgstr "Merci de saisir le mot de passe :"
#: Db.php:74 #: App.php:238 I18n.php:118
msgid "Unable to connect to the database." msgid "Hello world !"
msgstr "Impossible de se connecter à la base de données." msgstr "Bonjour tout le monde !"
#: Auth/Form.php:33 #: App.php:240
msgid "Invalid username or password." msgid "Hello world!"
msgstr "Nom d'utilisateur ou mot de passe invalide." msgstr "Salut tout le monde !"
#: Auth/Form.php:65 #: App.php:251
msgid "Sign in" msgid "Disconnected"
msgstr "Connexion" msgstr "Déconnecté"
#: Auth/Http.php:34 Url.php:177 #: App.php:253
msgid "Authentication required" msgid "You are now disconnected."
msgstr "Authentification requise" msgstr "Vous êtes maintenant déconnecté."
#: Auth/Http.php:115 Auth/Http.php:118 Url.php:181 #: I18n.php:138
msgid "Access denied" msgid "Extract messages that need to be translated"
msgstr "Accès interdit" msgstr "Extraire les messages devant être traduit"
#: Auth/Http.php:119 Auth/Http.php:123 #: I18n.php:140
msgid "You must login to access this page." msgid ""
msgstr "Vous devez vous connecter pour accéder à cette page." "This command could be used to generate/update locales/messages.pot file."
msgstr ""
"Cette commande peut-être utilisée pour générer/mettre à jour le fichier "
"locales/messages.pot."
#: Email.php:141 #: I18n.php:146
msgid "Update messages in translation PO lang files"
msgstr ""
"Mettre à jour les messages dans les fichiers de traduction PO existants"
#: I18n.php:148
msgid ""
"This command could be used to init/update PO files in locales/*/LC_MESSAGES "
"directories."
msgstr ""
"Cette commande peut-être utilisée pour initialiser/mettre à jour les "
"fichiers PO dans les dossiers locales/*/LC_MESSAGES."
#: I18n.php:155
msgid ""
"Compile messages from existing translation PO lang files to corresponding MO "
"files and JS catalogs"
msgstr ""
"Compiler les messages depuis les fichiers PO de traduction existants vers "
"les fichiers MO et les catalogues JS correspondant"
#: I18n.php:160
msgid ""
"This command could be used to compile PO files in locales/*/LC_MESSAGES "
"directories to MO files and as JS catalogs in locales directory."
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:336
msgid "Fail to list EesyPHP PHP files."
msgstr "Une erreur est survenue en listant les fichiers PHP d'EesyPHP."
#: I18n.php:356
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:373
msgid "Fail to list application PHP files."
msgstr "Une erreur est survenue en listant les fichiers PHP de l'application."
#: I18n.php:393
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:409
#, 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:431
#, php-format
msgid ""
"Fail to extract messages from JS files in the directory of static files '%s' "
"using xgettext."
msgstr ""
"Une erreur est survenue en extrayant les messages depuis les fichiers JS du "
"dossier des fichiers statiques '%s' en utilisant xgettext."
#: I18n.php:453
#, php-format
msgid ""
"Fail to extract messages from templates directory '%s' using tsmarty2c.php "
"script."
msgstr ""
"Impossible d'extraire les messages depuis le dossier de templates '%s' en "
"utilisant le script tsmarty2c.php."
#: I18n.php:489
msgid "Fail to merge messages using msgcat."
msgstr "Impossible de fusionner les messages en utilisant msgcat."
#: I18n.php:503
#, php-format
msgid "Compendium file %s not found."
msgstr "Fichier compendium %s introuvable."
#: I18n.php:514
#, 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:526 I18n.php:636
#, php-format
msgid "Lang directory '%s' found"
msgstr "Dossier de langue '%s' trouvé"
#: I18n.php:532 I18n.php:642
#, 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:547
#, 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:565
#, 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:571 I18n.php:650
#, 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:578 I18n.php:690
#, php-format
msgid "Fail to open root lang directory (%s)."
msgstr "Impossible d'ouvrir le dossier racine des langues (%s)."
#: I18n.php:606
#, php-format
msgid "Lang alias symlink found: %s -> %s"
msgstr "Lien symbolique d'alias de langue trouvé : %s -> %s"
#: I18n.php:613
#, php-format
msgid "JS catalog symlink for %s -> %s created (%s)"
msgstr "Lien symbolique de catalogue JS pour %s -> %s créé (%s)"
#: I18n.php:617
#, 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:623
#, 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:628
#, 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:663
#, 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:673
#, 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:678
#, 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:683
#, php-format
msgid "%s JS catalog writed (%s)."
msgstr "Catalogue JS %s créé (%s)."
#: Email.php:101
#, php-format #, php-format
msgid "</hr><p><small>Mail initialy intended for %s.</small></p>" msgid "</hr><p><small>Mail initialy intended for %s.</small></p>"
msgstr "</hr><p><small>Email initialement destiné à %s.</small></p>" msgstr "</hr><p><small>Email initialement destiné à %s.</small></p>"
#: Email.php:142 #: Email.php:102
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -170,12 +458,12 @@ msgstr ""
"\n" "\n"
"Mail originalement destiné à %s." "Mail originalement destiné à %s."
#: Email.php:178 #: Email.php:139
#, php-format #, php-format
msgid "<p><small>%s: %s</small></p>" msgid "<p><small>%s: %s</small></p>"
msgstr "<p><small>%s: %s</small></p>" msgstr "<p><small>%s: %s</small></p>"
#: Email.php:179 #: Email.php:140
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -184,284 +472,6 @@ msgstr ""
"\n" "\n"
"%s: %s" "%s: %s"
#: Tpl.php:405
msgid "No template specified."
msgstr "Aucun template spécifié."
#: Tpl.php:438
msgid "An error occurred while displaying this page."
msgstr "Une erreur est survenue en affichant cette page."
#: Url.php:173
msgid "Bad request"
msgstr "Mauvaise requête"
#: Url.php:174
msgid "Invalid request."
msgstr "Requête invalide."
#: Url.php:178
msgid "You have to be authenticated to access to this page."
msgstr "Vous devez être authentifié pour accéder à cette page."
#: Url.php:182
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:185
msgid "Whoops ! Page not found"
msgstr "Oups ! Page introuvable"
#: Url.php:186
msgid "The requested page can not be found."
msgstr "La page demandée est introuvable."
#: Url.php:194
msgid "Error"
msgstr "Erreur"
#: Url.php:195
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:258
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:412
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:442
msgid "This request cannot be processed."
msgstr "Cette requête ne peut être traitée."
#: Url.php:452
msgid "Authentication required but fail to authenticate you."
msgstr "Authentification requise mais impossible pour vous authentifier."
#: Url.php:461
msgid "This request could not be processed correctly."
msgstr "Cette requête n'a put être traitée correctement."
#: I18n.php:122 App.php:181
msgid "Hello world !"
msgstr "Bonjour tout le monde !"
#: I18n.php:142
msgid "Extract messages that need to be translated"
msgstr "Extraire les messages devant être traduit"
#: I18n.php:144
msgid ""
"This command could be used to generate/update locales/messages.pot file."
msgstr ""
"Cette commande peut-être utilisée pour générer/mettre à jour le fichier "
"locales/messages.pot."
#: I18n.php:150
msgid "Update messages in translation PO lang files"
msgstr ""
"Mettre à jour les messages dans les fichiers de traduction PO existants"
#: I18n.php:152
msgid ""
"This command could be used to init/update PO files in locales/*/LC_MESSAGES "
"directories."
msgstr ""
"Cette commande peut-être utilisée pour initialiser/mettre à jour les "
"fichiers PO dans les dossiers locales/*/LC_MESSAGES."
#: I18n.php:159
msgid ""
"Compile messages from existing translation PO lang files to corresponding MO "
"files and JS catalogs"
msgstr ""
"Compiler les messages depuis les fichiers PO de traduction existants vers "
"les fichiers MO et les catalogues JS correspondant"
#: I18n.php:164
msgid ""
"This command could be used to compile PO files in locales/*/LC_MESSAGES "
"directories to MO files and as JS catalogs in locales directory."
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:340
msgid "Fail to list EesyPHP PHP files."
msgstr "Une erreur est survenue en listant les fichiers PHP d'EesyPHP."
#: I18n.php:360
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:377
msgid "Fail to list application PHP files."
msgstr "Une erreur est survenue en listant les fichiers PHP de l'application."
#: I18n.php:397
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:413
#, 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:435
#, php-format
msgid ""
"Fail to extract messages from JS files in the directory of static files '%s' "
"using xgettext."
msgstr ""
"Une erreur est survenue en extrayant les messages depuis les fichiers JS du "
"dossier des fichiers statiques '%s' en utilisant xgettext."
#: I18n.php:457
#, php-format
msgid ""
"Fail to extract messages from templates directory '%s' using tsmarty2c.php "
"script."
msgstr ""
"Impossible d'extraire les messages depuis le dossier de templates '%s' en "
"utilisant le script tsmarty2c.php."
#: I18n.php:493
msgid "Fail to merge messages using msgcat."
msgstr "Impossible de fusionner les messages en utilisant msgcat."
#: I18n.php:507
#, php-format
msgid "Compendium file %s not found."
msgstr "Fichier compendium %s introuvable."
#: I18n.php:518
#, 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:530 I18n.php:640
#, php-format
msgid "Lang directory '%s' found"
msgstr "Dossier de langue '%s' trouvé"
#: I18n.php:536 I18n.php:646
#, 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:551
#, 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:569
#, 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:575 I18n.php:654
#, 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:582 I18n.php:694
#, php-format
msgid "Fail to open root lang directory (%s)."
msgstr "Impossible d'ouvrir le dossier racine des langues (%s)."
#: I18n.php:610
#, php-format
msgid "Lang alias symlink found: %s -> %s"
msgstr "Lien symbolique d'alias de langue trouvé : %s -> %s"
#: I18n.php:617
#, php-format
msgid "JS catalog symlink for %s -> %s created (%s)"
msgstr "Lien symbolique de catalogue JS pour %s -> %s créé (%s)"
#: I18n.php:621
#, 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:627
#, 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:632
#, 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:667
#, 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:677
#, 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:682
#, 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:687
#, php-format
msgid "%s JS catalog writed (%s)."
msgstr "Catalogue JS %s créé (%s)."
#: App.php:183
msgid "Hello world!"
msgstr "Salut tout le monde !"
#: App.php:194
msgid "Disconnected"
msgstr "Déconnecté"
#: App.php:196
msgid "You are now disconnected."
msgstr "Vous êtes maintenant déconnecté."
#: static/js/myconfirm.js:4 static/js/myconfirm.js:171 #: static/js/myconfirm.js:4 static/js/myconfirm.js:171
#: static/js/myconfirm.js:200 #: static/js/myconfirm.js:200
msgid "Confirmation" msgid "Confirmation"
@ -503,6 +513,18 @@ msgstr "Merci de patienter pendant le traitement de votre requête."
msgid "Are you sure?" msgid "Are you sure?"
msgstr "Êtes-vous sure ?" msgstr "Êtes-vous sure ?"
#: templates/login.tpl:9
msgid "Username"
msgstr "Nom d'utilisateur"
#: templates/login.tpl:13
msgid "Password"
msgstr "Mot de passe"
#: templates/login.tpl:16
msgid "Submit"
msgstr "Envoyer"
#: templates/fatal_error.tpl:3 #: templates/fatal_error.tpl:3
msgid "Oops..." msgid "Oops..."
msgstr "Oups..." msgstr "Oups..."
@ -524,6 +546,10 @@ msgstr "Erreur : %1"
msgid "Back" msgid "Back"
msgstr "Retour" msgstr "Retour"
#: templates/empty.tpl:60
msgid "Sign out"
msgstr "Déconnexion"
#: templates/homepage.tpl:5 #: templates/homepage.tpl:5
msgid "Hello, world!" msgid "Hello, world!"
msgstr "Bonjour tout le monde !" msgstr "Bonjour tout le monde !"
@ -540,22 +566,6 @@ msgstr ""
"fichier <em>homepage.tpl</em> pour l'écraser. Vous pouvez également écraser " "fichier <em>homepage.tpl</em> pour l'écraser. Vous pouvez également écraser "
"le gestionnaire de l'URL racine de l'application web." "le gestionnaire de l'URL racine de l'application web."
#: templates/empty.tpl:60
msgid "Sign out"
msgstr "Déconnexion"
#: templates/login.tpl:9
msgid "Username"
msgstr "Nom d'utilisateur"
#: templates/login.tpl:13
msgid "Password"
msgstr "Mot de passe"
#: templates/login.tpl:16
msgid "Submit"
msgstr "Envoyer"
#~ msgid "Logout" #~ msgid "Logout"
#~ msgstr "Déconnexion" #~ msgstr "Déconnexion"

View file

@ -1,11 +1,101 @@
msgid "" msgid ""
msgstr "" msgstr ""
"POT-Creation-Date: 2023-02-28 01:45+0100\n" "POT-Creation-Date: 2023-03-03 10:42+0100\n"
"PO-Revision-Date: 2023-02-28 01:45+0100\n" "PO-Revision-Date: 2023-03-03 10:42+0100\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: Tpl.php:420
msgid "No template specified."
msgstr ""
#: Tpl.php:453
msgid "An error occurred while displaying this page."
msgstr ""
#: Db.php:74
msgid "Unable to connect to the database."
msgstr ""
#: Auth/Form.php:40
msgid "Invalid username or password."
msgstr ""
#: Auth/Form.php:72
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 #: Cli.php:44
msgid "Create a new project using EesyPHP framework" msgid "Create a new project using EesyPHP framework"
msgstr "" msgstr ""
@ -54,88 +144,243 @@ msgid " --trace Trace mode (the most verbose)\n"
msgstr "" msgstr ""
#: Cli.php:130 #: Cli.php:130
msgid " command Command to run\n" msgid " -l / --log-file Overwrite log file specified in configuration\n"
msgstr ""
#: Cli.php:131
msgid " -C / --console Enable log on console\n"
msgstr "" msgstr ""
#: Cli.php:132 #: Cli.php:132
msgid " command Command to run\n"
msgstr ""
#: Cli.php:134
msgid "Available commands:\n" msgid "Available commands:\n"
msgstr "" msgstr ""
#: Cli.php:182 #: Cli.php:184
msgid "Only one command could be executed !" msgid "Only one command could be executed !"
msgstr "" msgstr ""
#: Cli.php:210 #: Cli.php:221
#, php-format #, php-format
msgid "" msgid ""
"Invalid parameter \"%s\".\n" "Invalid parameter \"%s\".\n"
"Note: Command's parameter/argument must be place after the command." "Note: Command's parameter/argument must be place after the command."
msgstr "" msgstr ""
#: Cli.php:235 #: Cli.php:246
#, php-format #, php-format
msgid "An exception occured running command %s" msgid "An exception occured running command %s"
msgstr "" msgstr ""
#: Cli.php:296 #: Cli.php:307
msgid "" msgid ""
"This command only accept one argument: the listen address in format \"host:" "This command only accept one argument: the listen address in format \"host:"
"port\" or \":port\" (= 0.0.0.0:port)." "port\" or \":port\" (= 0.0.0.0:port)."
msgstr "" msgstr ""
#: Cli.php:307 #: Cli.php:318
msgid "" msgid ""
"Invalid listen address specify. Must be in formart host:port (or :port)." "Invalid listen address specify. Must be in formart host:port (or :port)."
msgstr "" msgstr ""
#: Cli.php:317 #: Cli.php:328
msgid "Invalid listen host specified. Must be an IPv4 or IPv6 address." msgid "Invalid listen host specified. Must be an IPv4 or IPv6 address."
msgstr "" msgstr ""
#: Cli.php:324 #: Cli.php:335
msgid "" msgid ""
"Invalid listen port specified. Must be a positive integer between 1 and " "Invalid listen port specified. Must be a positive integer between 1 and "
"65535." "65535."
msgstr "" msgstr ""
#: Cli.php:354 #: Cli.php:365
msgid "Can't invoke bash. Can't ask password prompt." msgid "Can't invoke bash. Can't ask password prompt."
msgstr "" msgstr ""
#: Cli.php:357 #: Cli.php:368
msgid "Please enter password:" msgid "Please enter password:"
msgstr "" msgstr ""
#: Db.php:74 #: App.php:238 I18n.php:118
msgid "Unable to connect to the database." msgid "Hello world !"
msgstr "" msgstr ""
#: Auth/Form.php:33 #: App.php:240
msgid "Invalid username or password." msgid "Hello world!"
msgstr "" msgstr ""
#: Auth/Form.php:65 #: App.php:251
msgid "Sign in" msgid "Disconnected"
msgstr "" msgstr ""
#: Auth/Http.php:34 Url.php:177 #: App.php:253
msgid "Authentication required" msgid "You are now disconnected."
msgstr "" msgstr ""
#: Auth/Http.php:115 Auth/Http.php:118 Url.php:181 #: I18n.php:138
msgid "Access denied" msgid "Extract messages that need to be translated"
msgstr "" msgstr ""
#: Auth/Http.php:119 Auth/Http.php:123 #: I18n.php:140
msgid "You must login to access this page." msgid ""
"This command could be used to generate/update locales/messages.pot file."
msgstr "" msgstr ""
#: Email.php:141 #: I18n.php:146
msgid "Update messages in translation PO lang files"
msgstr ""
#: I18n.php:148
msgid ""
"This command could be used to init/update PO files in locales/*/LC_MESSAGES "
"directories."
msgstr ""
#: I18n.php:155
msgid ""
"Compile messages from existing translation PO lang files to corresponding MO "
"files and JS catalogs"
msgstr ""
#: I18n.php:160
msgid ""
"This command could be used to compile PO files in locales/*/LC_MESSAGES "
"directories to MO files and as JS catalogs in locales directory."
msgstr ""
#: I18n.php:336
msgid "Fail to list EesyPHP PHP files."
msgstr ""
#: I18n.php:356
msgid "Fail to extract messages from EesyPHP PHP files using xgettext."
msgstr ""
#: I18n.php:373
msgid "Fail to list application PHP files."
msgstr ""
#: I18n.php:393
msgid "Fail to extract messages from PHP files using xgettext."
msgstr ""
#: I18n.php:409
#, php-format
msgid "Fail to list JS files in the directory of static files '%s'."
msgstr ""
#: I18n.php:431
#, php-format
msgid ""
"Fail to extract messages from JS files in the directory of static files '%s' "
"using xgettext."
msgstr ""
#: I18n.php:453
#, php-format
msgid ""
"Fail to extract messages from templates directory '%s' using tsmarty2c.php "
"script."
msgstr ""
#: I18n.php:489
msgid "Fail to merge messages using msgcat."
msgstr ""
#: I18n.php:503
#, php-format
msgid "Compendium file %s not found."
msgstr ""
#: I18n.php:514
#, php-format
msgid "POT file not found (%s). Please run extract_messages first."
msgstr ""
#: I18n.php:526 I18n.php:636
#, php-format
msgid "Lang directory '%s' found"
msgstr ""
#: I18n.php:532 I18n.php:642
#, php-format
msgid "LC_MESSAGES directory not found in lang '%s' directory, ignore it."
msgstr ""
#: I18n.php:547
#, php-format
msgid "Fail to init messages in %s PO file using msginit (%s)."
msgstr ""
#: I18n.php:565
#, php-format
msgid "Fail to update messages in %s PO file using msgmerge (%s)."
msgstr ""
#: I18n.php:571 I18n.php:650
#, php-format
msgid "PO file not found in lang '%s' directory, ignore it."
msgstr ""
#: I18n.php:578 I18n.php:690
#, php-format
msgid "Fail to open root lang directory (%s)."
msgstr ""
#: I18n.php:606
#, php-format
msgid "Lang alias symlink found: %s -> %s"
msgstr ""
#: I18n.php:613
#, php-format
msgid "JS catalog symlink for %s -> %s created (%s)"
msgstr ""
#: I18n.php:617
#, php-format
msgid "Fail to create JS catalog symlink for %s -> %s (%s)"
msgstr ""
#: I18n.php:623
#, php-format
msgid "JS catalog symlink for %s -> %s already exist (%s)"
msgstr ""
#: I18n.php:628
#, php-format
msgid "JS catalog file for %s already exist, but it's not a symlink to %s (%s)"
msgstr ""
#: I18n.php:663
#, php-format
msgid "Fail to compile messages from %s PO file as MO file using msgfmt (%s)."
msgstr ""
#: I18n.php:673
#, php-format
msgid "Fail to open %s JS catalog file in write mode (%s)."
msgstr ""
#: I18n.php:678
#, php-format
msgid "Fail to write %s JS catalog in file (%s)."
msgstr ""
#: I18n.php:683
#, php-format
msgid "%s JS catalog writed (%s)."
msgstr ""
#: Email.php:101
#, php-format #, php-format
msgid "</hr><p><small>Mail initialy intended for %s.</small></p>" msgid "</hr><p><small>Mail initialy intended for %s.</small></p>"
msgstr "" msgstr ""
#: Email.php:142 #: Email.php:102
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -144,255 +389,18 @@ msgid ""
"Mail initialy intended for %s." "Mail initialy intended for %s."
msgstr "" msgstr ""
#: Email.php:178 #: Email.php:139
#, php-format #, php-format
msgid "<p><small>%s: %s</small></p>" msgid "<p><small>%s: %s</small></p>"
msgstr "" msgstr ""
#: Email.php:179 #: Email.php:140
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
"%s: %s" "%s: %s"
msgstr "" msgstr ""
#: Tpl.php:405
msgid "No template specified."
msgstr ""
#: Tpl.php:438
msgid "An error occurred while displaying this page."
msgstr ""
#: Url.php:173
msgid "Bad request"
msgstr ""
#: Url.php:174
msgid "Invalid request."
msgstr ""
#: Url.php:178
msgid "You have to be authenticated to access to this page."
msgstr ""
#: Url.php:182
msgid ""
"You do not have access to this application. If you think this is an error, "
"please contact support."
msgstr ""
#: Url.php:185
msgid "Whoops ! Page not found"
msgstr ""
#: Url.php:186
msgid "The requested page can not be found."
msgstr ""
#: Url.php:194
msgid "Error"
msgstr ""
#: Url.php:195
msgid "An unknown error occurred. If problem persist, please contact support."
msgstr ""
#: Url.php:258
msgid ""
"Unable to determine the requested page. If the problem persists, please "
"contact support."
msgstr ""
#: Url.php:412
msgid ""
"Unable to determine the requested page (loop detected). If the problem "
"persists, please contact support."
msgstr ""
#: Url.php:442
msgid "This request cannot be processed."
msgstr ""
#: Url.php:452
msgid "Authentication required but fail to authenticate you."
msgstr ""
#: Url.php:461
msgid "This request could not be processed correctly."
msgstr ""
#: I18n.php:122 App.php:181
msgid "Hello world !"
msgstr ""
#: I18n.php:142
msgid "Extract messages that need to be translated"
msgstr ""
#: I18n.php:144
msgid ""
"This command could be used to generate/update locales/messages.pot file."
msgstr ""
#: I18n.php:150
msgid "Update messages in translation PO lang files"
msgstr ""
#: I18n.php:152
msgid ""
"This command could be used to init/update PO files in locales/*/LC_MESSAGES "
"directories."
msgstr ""
#: I18n.php:159
msgid ""
"Compile messages from existing translation PO lang files to corresponding MO "
"files and JS catalogs"
msgstr ""
#: I18n.php:164
msgid ""
"This command could be used to compile PO files in locales/*/LC_MESSAGES "
"directories to MO files and as JS catalogs in locales directory."
msgstr ""
#: I18n.php:340
msgid "Fail to list EesyPHP PHP files."
msgstr ""
#: I18n.php:360
msgid "Fail to extract messages from EesyPHP PHP files using xgettext."
msgstr ""
#: I18n.php:377
msgid "Fail to list application PHP files."
msgstr ""
#: I18n.php:397
msgid "Fail to extract messages from PHP files using xgettext."
msgstr ""
#: I18n.php:413
#, php-format
msgid "Fail to list JS files in the directory of static files '%s'."
msgstr ""
#: I18n.php:435
#, php-format
msgid ""
"Fail to extract messages from JS files in the directory of static files '%s' "
"using xgettext."
msgstr ""
#: I18n.php:457
#, php-format
msgid ""
"Fail to extract messages from templates directory '%s' using tsmarty2c.php "
"script."
msgstr ""
#: I18n.php:493
msgid "Fail to merge messages using msgcat."
msgstr ""
#: I18n.php:507
#, php-format
msgid "Compendium file %s not found."
msgstr ""
#: I18n.php:518
#, php-format
msgid "POT file not found (%s). Please run extract_messages first."
msgstr ""
#: I18n.php:530 I18n.php:640
#, php-format
msgid "Lang directory '%s' found"
msgstr ""
#: I18n.php:536 I18n.php:646
#, php-format
msgid "LC_MESSAGES directory not found in lang '%s' directory, ignore it."
msgstr ""
#: I18n.php:551
#, php-format
msgid "Fail to init messages in %s PO file using msginit (%s)."
msgstr ""
#: I18n.php:569
#, php-format
msgid "Fail to update messages in %s PO file using msgmerge (%s)."
msgstr ""
#: I18n.php:575 I18n.php:654
#, php-format
msgid "PO file not found in lang '%s' directory, ignore it."
msgstr ""
#: I18n.php:582 I18n.php:694
#, php-format
msgid "Fail to open root lang directory (%s)."
msgstr ""
#: I18n.php:610
#, php-format
msgid "Lang alias symlink found: %s -> %s"
msgstr ""
#: I18n.php:617
#, php-format
msgid "JS catalog symlink for %s -> %s created (%s)"
msgstr ""
#: I18n.php:621
#, php-format
msgid "Fail to create JS catalog symlink for %s -> %s (%s)"
msgstr ""
#: I18n.php:627
#, php-format
msgid "JS catalog symlink for %s -> %s already exist (%s)"
msgstr ""
#: I18n.php:632
#, php-format
msgid "JS catalog file for %s already exist, but it's not a symlink to %s (%s)"
msgstr ""
#: I18n.php:667
#, php-format
msgid "Fail to compile messages from %s PO file as MO file using msgfmt (%s)."
msgstr ""
#: I18n.php:677
#, php-format
msgid "Fail to open %s JS catalog file in write mode (%s)."
msgstr ""
#: I18n.php:682
#, php-format
msgid "Fail to write %s JS catalog in file (%s)."
msgstr ""
#: I18n.php:687
#, php-format
msgid "%s JS catalog writed (%s)."
msgstr ""
#: App.php:183
msgid "Hello world!"
msgstr ""
#: App.php:194
msgid "Disconnected"
msgstr ""
#: App.php:196
msgid "You are now disconnected."
msgstr ""
#: static/js/myconfirm.js:4 static/js/myconfirm.js:171 #: static/js/myconfirm.js:4 static/js/myconfirm.js:171
#: static/js/myconfirm.js:200 #: static/js/myconfirm.js:200
msgid "Confirmation" msgid "Confirmation"
@ -434,6 +442,18 @@ msgstr ""
msgid "Are you sure?" msgid "Are you sure?"
msgstr "" msgstr ""
#: templates/login.tpl:9
msgid "Username"
msgstr ""
#: templates/login.tpl:13
msgid "Password"
msgstr ""
#: templates/login.tpl:16
msgid "Submit"
msgstr ""
#: templates/fatal_error.tpl:3 #: templates/fatal_error.tpl:3
msgid "Oops..." msgid "Oops..."
msgstr "" msgstr ""
@ -452,6 +472,10 @@ msgstr ""
msgid "Back" msgid "Back"
msgstr "" msgstr ""
#: templates/empty.tpl:60
msgid "Sign out"
msgstr ""
#: templates/homepage.tpl:5 #: templates/homepage.tpl:5
msgid "Hello, world!" msgid "Hello, world!"
msgstr "" msgstr ""
@ -463,19 +487,3 @@ msgid ""
"it. You could also overwrite the URL handler for the root of the web " "it. You could also overwrite the URL handler for the root of the web "
"application." "application."
msgstr "" msgstr ""
#: templates/empty.tpl:60
msgid "Sign out"
msgstr ""
#: templates/login.tpl:9
msgid "Username"
msgstr ""
#: templates/login.tpl:13
msgid "Password"
msgstr ""
#: templates/login.tpl:16
msgid "Submit"
msgstr ""

View file

@ -139,7 +139,8 @@ class App {
Config::loaded()?Config::get($key, $default, $cast, $split):$default, Config::loaded()?Config::get($key, $default, $cast, $split):$default,
$cast, $cast,
$split, $split,
self :: $options self :: $options,
array(self :: class, 'get')
); );
} }

View file

@ -127,6 +127,8 @@ class Cli {
echo I18n::_(" -h Show this message\n"); echo I18n::_(" -h Show this message\n");
echo I18n::_(" -q / -d Quiet/Debug mode\n"); echo I18n::_(" -q / -d Quiet/Debug mode\n");
echo I18n::_(" --trace Trace mode (the most verbose)\n"); echo I18n::_(" --trace Trace mode (the most verbose)\n");
echo I18n::_(" -l / --log-file Overwrite log file specified in configuration\n");
echo I18n::_(" -C / --console Enable log on console\n");
echo I18n::_(" command Command to run\n"); echo I18n::_(" command Command to run\n");
echo "\n"; echo "\n";
echo I18n::_("Available commands:\n"); echo I18n::_("Available commands:\n");
@ -201,6 +203,15 @@ class Cli {
Log :: set_level('TRACE'); Log :: set_level('TRACE');
$log_level_set = true; $log_level_set = true;
break; break;
case '-l':
case '--log-file':
$i++;
Log :: change_filepath($args[$i]);
break;
case '-C':
case '--console':
App :: set('log.cli_console', true);
break;
default: default:
if (self :: $command) if (self :: $command)
$command_args[] = $args[$i]; $command_args[] = $args[$i];

View file

@ -138,49 +138,63 @@ Class Config {
* @param bool $split If true, $cast=='array' and $value is a string, split * @param bool $split If true, $cast=='array' and $value is a string, split
* the value by comma (optional, default: false) * the value by comma (optional, default: false)
* @param array|null $config Optional configuration to use instead of current loaded configuration * @param array|null $config Optional configuration to use instead of current loaded configuration
* @param callable|null $get Optional callable to get another value that will be used to replace
* variables references found in retreived value.
* @return mixed The configuration variable value * @return mixed The configuration variable value
**/ **/
public static function get($key, $default=null, $cast=null, $split=false, &$config=null) { public static function get($key, $default=null, $cast=null, $split=false, &$config=null, $get=null) {
if (array_key_exists($key, self :: $extra_variables)) { if (array_key_exists($key, self :: $extra_variables)) {
$value = self :: $extra_variables[$key]; $value = self :: $extra_variables[$key];
} }
else if (!is_array($config) && !self :: loaded()) { else if (!is_array($config) && !self :: loaded()) {
Log :: fatal('Configuration not loaded (on getting %s)', $key); Log :: fatal(
"Configuration not loaded (on getting %s):\n%s",
$key, Log :: get_debug_backtrace_context()
);
exit(1); exit(1);
} }
else { else {
$exploded_key = explode('.', $key); $exploded_key = explode('.', $key);
if (!is_array($exploded_key)) return self :: replace_variables($default); if (!is_array($exploded_key)) return self :: replace_variables($default, $get?$get:$config);
$value = is_array($config)?$config:self :: $config; $value = is_array($config)?$config:self :: $config;
foreach ($exploded_key as $k) { foreach ($exploded_key as $k) {
if (!is_array($value) || !isset($value[$k])) if (!is_array($value) || !isset($value[$k]))
return self :: replace_variables($default); return self :: replace_variables($default, $get?$get:$config);
$value = $value[$k]; $value = $value[$k];
} }
} }
return self :: replace_variables(cast($value, $cast, $split)); return self :: replace_variables(cast($value, $cast, $split), $get?$get:$config);
} }
/** /**
* Replace variable in specified value * Replace variable in specified value
* @param mixed $value * @param mixed $value
* @param array|callable|null $config Optional configuration to use to retreive variable reference
* value instead of current loaded configuration. Could be an
* array of configuration data or a callable that could be used
* as Config::get() to retreive the desired variable reference.
* @return mixed * @return mixed
*/ */
public static function replace_variables($value) { public static function replace_variables($value, $config=null) {
if (is_array($value)) { if (is_array($value)) {
foreach(array_keys($value) as $key) { foreach(array_keys($value) as $key) {
if (is_string($value[$key]) || is_array($value[$key])) if (is_string($value[$key]) || is_array($value[$key]))
$value[$key] = self :: replace_variables($value[$key]); $value[$key] = self :: replace_variables($value[$key], $config);
} }
} }
else if (is_string($value)) { else if (is_string($value)) {
$config = is_null($config)?self :: $config:$config;
$iteration = 0; $iteration = 0;
while (preg_match('/\$\{([^\}]+)\}/', $value, $m)) { while (preg_match('/\$\{([^\}]+)\}/', $value, $m)) {
if ($iteration > 20) { if ($iteration > 20) {
Log::fatal('Config::replace_variables(%s): max iteration reached'); Log::fatal('Config::replace_variables(%s): max iteration reached');
return $value; return $value;
} }
$value = str_replace($m[0], self :: get($m[1], '', 'string'), $value); if (is_callable($config))
$replace_by = call_user_func($config, $m[1], '', 'string', false);
else
$replace_by = self :: get($m[1], '', 'string', false, $config);
$value = str_replace($m[0], $replace_by, $value);
$iteration++; $iteration++;
} }
} }
@ -221,7 +235,7 @@ Class Config {
} }
for ($i=0; $i < count($exploded_key) - 1; $i++) { for ($i=0; $i < count($exploded_key) - 1; $i++) {
$k = $exploded_key[$i]; $k = $exploded_key[$i];
if (!array_key_exists($k, $config)) if (!array_key_exists($k, $parent))
$parent[$k] = array(); $parent[$k] = array();
$parent = &$parent[$k]; $parent = &$parent[$k];
} }

View file

@ -67,13 +67,14 @@ class Log {
'level' => 'WARNING', 'level' => 'WARNING',
'file_path' => null, 'file_path' => null,
'cli_file_path' => '${log.file_path}', 'cli_file_path' => '${log.file_path}',
'cli_console' => false,
'default_locale' => null, 'default_locale' => null,
'error_log_fallback' => true, 'error_log_fallback' => true,
'php_errors_levels' => array(), // Depend of effective log level, see below 'php_errors_levels' => array(), // Depend of effective log level, see below
) )
); );
self :: $filepath = App::get( self :: $filepath = App::get(
php_sapi_name() == 'cli'?'log.cli_logfile_path':'log.file_path' php_sapi_name() == 'cli'?'log.cli_file_path':'log.file_path'
); );
// PHP error_log() fallback // PHP error_log() fallback
@ -161,6 +162,12 @@ class Log {
); );
$level = 'WARNING'; $level = 'WARNING';
} }
if (!self :: $level)
self :: $level = (
App::initialized()?
App::get('log.level', 'WARNING', 'string'):
'WARNING'
);
if (self :: $levels[$level] < self :: $levels[self :: $level]) return true; if (self :: $levels[$level] < self :: $levels[self :: $level]) return true;
if(self :: $filepath && is_null(self :: $file_fd)) { if(self :: $filepath && is_null(self :: $file_fd)) {
self :: $file_fd = fopen(self :: $filepath, 'a'); self :: $file_fd = fopen(self :: $filepath, 'a');
@ -208,7 +215,12 @@ class Log {
fatal_error($message); fatal_error($message);
else else
die("\n$message\n\n"); die("\n$message\n\n");
elseif (php_sapi_name() == "cli") elseif (
self :: $file_fd // When no log file, message already printed on console by error_log()
&& php_sapi_name() == "cli"
&& App::initialized()
&& App::get('log.cli_console', null, 'bool')
)
echo $msg; echo $msg;
return true; return true;