%1<\/a>","This app contains some demo pages:":"Cette application contient quelques pages de d\u00e9mo :","Search page":"Page de recherche","Create a new project using EesyPHP framework":"Cr\u00e9er un nouveau projet utilisant le framework EesyPHP","This command could be used to easily build the structure of a new project using the EesyPHP framework.":"Cette commande peut-\u00eatre utilis\u00e9e pour construire facilement la structure d'un nouveau projet utilisant le framework EesyPHP.","Start the PHP built-in HTTP server to serve the application":"D\u00e9marrer le service HTTP int\u00e9gr\u00e9 \u00e0 PHP pour servir l'application","This command could be used to start the PHP built-in HTTP server to serve the application.":"Cette commande peut-\u00eatre utilis\u00e9e pour d\u00e9marrer le service HTTP int\u00e9gr\u00e9 \u00e0 PHP pour servir l'application.","The CLI command '%s' already exists.":"La commande CLI '%s' n'existe pas.","The CLI command '%s' handler is not callable !":"La fonction impl\u00e9mentant la commande CLI '%s' n'est pas ex\u00e9cutable !","Usage: %s [-h] [-qd] command\n":"Utilisation: %s [-h] [-qd] commande\n"," -h Show this message\n":" -h Affiche ce message\n"," -q \/ -d Quiet\/Debug mode\n":" -q \/ -d Mode silencieux\/debug\n"," --trace Trace mode (the most verbose)\n":" --trace Mode trace (le plus verbeux)\n"," -l \/ --log-file Overwrite log file specified in configuration\n":" -l \/ --log-file Red\u00e9finir le fichier de journalisation \u00e0 utiliser \u00e0 la place de celui d\u00e9fini dans la configuration\n"," -C \/ --console Enable log on console\n":" -C \/ --console Activer la journalisation dans la console\n"," command Command to run\n":" command La commande \u00e0 ex\u00e9cuter\n","Available commands:\n":"Commandes disponibles:\n","Only one command could be executed !":"Une seul commande peut-\u00eatre ex\u00e9cut\u00e9e !","Invalid parameter \"%s\".\nNote: Command's parameter\/argument must be place after the command.":"Param\u00e8tre \"%s\" invalide.\nNote : Les param\u00e8tres\/arguments de la requ\u00eate doivent \u00eatre plac\u00e9s apr\u00e8s celle-ci.","An exception occured running command %s":"Une exception est survenue en ex\u00e9cutant la commande %s","This command only accept one argument: the listen address in format \"host:port\" or \":port\" (= 0.0.0.0:port).":"Cette commande n'accepte qu'un seul param\u00e8tre : l'adresse d'\u00e9coute au format \"h\u00f4te:port\" ou \":port\" (= 0.0.0.0:port).","Invalid listen address specify. Must be in formart host:port (or :port).":"Adresse d'\u00e9coute sp\u00e9cifi\u00e9e invalide. Elle doit \u00eatre au format h\u00f4te:port (ou :port).","Invalid listen host specified. Must be an IPv4 or IPv6 address.":"H\u00f4te d'\u00e9coute sp\u00e9cifi\u00e9 invalide. Il doit s'agir d'une adresse IPv4 ou IPv6.","Invalid listen port specified. Must be a positive integer between 1 and 65535.":"Port d'\u00e9coute sp\u00e9cifi\u00e9 invalide. Il doit s'agir d'un entier positif entre 1 et 65535.","Can't invoke bash. Can't ask password prompt.":"Impossible d'utiliser bash. Impossible de demander \u00e0 l'utilisateur de saisir un mot de passe.","Please enter password:":"Merci de saisir le mot de passe :","Unable to connect to the database.":"Impossible de se connecter \u00e0 la base de donn\u00e9es.","Invalid username or password.":"Nom d'utilisateur ou mot de passe invalide.","Sign in":"Connexion","Authentication required":"Authentification requise","Access denied":"Acc\u00e8s interdit","You must login to access this page.":"Vous devez vous connecter pour acc\u00e9der \u00e0 cette page.","<\/hr>Mail initialy intended for %s.<\/small><\/p>":"<\/hr>
Email initialement destin\u00e9 \u00e0 %s.<\/small><\/p>","\n\n\nMail initialy intended for %s.":"\n\n\nMail originalement destin\u00e9 \u00e0 %s.","
%s: %s<\/small><\/p>":"
%s: %s<\/small><\/p>","\n%s: %s":"\n%s: %s","No template specified.":"Aucun template sp\u00e9cifi\u00e9.","An error occurred while displaying this page.":"Une erreur est survenue en affichant cette page.","Bad request":"Mauvaise requ\u00eate","Invalid request.":"Requ\u00eate invalide.","You have to be authenticated to access to this page.":"Vous devez \u00eatre authentifi\u00e9 pour acc\u00e9der \u00e0 cette page.","You do not have access to this application. If you think this is an error, please contact support.":"Vous n'avez pas acc\u00e8s \u00e0 cette application. Si vous pensez qu'il s'agit d'une erreur, merci de prendre contact avec le support.","Whoops ! Page not found":"Oups ! Page introuvable","The requested page can not be found.":"La page demand\u00e9e est introuvable.","Error":"Erreur","An unknown error occurred. If problem persist, please contact support.":"Une erreur inconnue est survenue. Si le probl\u00e8me persiste, merci de prendre contact avec le support.","Unable to determine the requested page. If the problem persists, please contact support.":"Impossible de d\u00e9terminer la page demand\u00e9e. Si le probl\u00e8me persiste, merci de prendre contact avec le support.","Unable to determine the requested page (loop detected). If the problem persists, please contact support.":"Impossible de d\u00e9terminer la page demand\u00e9e (boucle d\u00e9tect\u00e9e). Si le probl\u00e8me persiste, merci de prendre contact avec le support.","This request cannot be processed.":"Cette requ\u00eate ne peut \u00eatre trait\u00e9e.","Authentication required but fail to authenticate you.":"Authentification requise mais impossible pour vous authentifier.","This request could not be processed correctly.":"Cette requ\u00eate n'a put \u00eatre trait\u00e9e correctement.","Hello world !":"Bonjour tout le monde !","Extract messages that need to be translated":"Extraire les messages devant \u00eatre traduit","This command could be used to generate\/update locales\/messages.pot file.":"Cette commande peut-\u00eatre utilis\u00e9e pour g\u00e9n\u00e9rer\/mettre \u00e0 jour le fichier locales\/messages.pot.","Update messages in translation PO lang files":"Mettre \u00e0 jour les messages dans les fichiers de traduction PO existants","This command could be used to init\/update PO files in locales\/*\/LC_MESSAGES directories.":"Cette commande peut-\u00eatre utilis\u00e9e pour initialiser\/mettre \u00e0 jour les fichiers PO dans les dossiers locales\/*\/LC_MESSAGES.","Compile messages from existing translation PO lang files to corresponding MO files and JS catalogs":"Compiler les messages depuis les fichiers PO de traduction existants vers les fichiers MO et les catalogues JS correspondant","This command could be used to compile PO files in locales\/*\/LC_MESSAGES directories to MO files and as JS catalogs in locales directory.":"Cette commande peut-\u00eatre utilis\u00e9e pour compiler les fichiers PO dans les dossiers locales\/*\/LC_MESSAGES and les catalogues JS dans le dossier locales.","Fail to list EesyPHP PHP files.":"Une erreur est survenue en listant les fichiers PHP d'EesyPHP.","Fail to extract messages from EesyPHP PHP files using xgettext.":"Une erreur est survenue en extrayant les messages depuis les fichiers PHP d'EesyPHP en utilisant xgettext.","Fail to list application PHP files.":"Une erreur est survenue en listant les fichiers PHP de l'application.","Fail to extract messages from PHP files using xgettext.":"Impossible d'extraire les messages depuis les fichiers PHP en utilisant xgettext.","Fail to list JS files in the directory of static files '%s'.":"Une erreur est survenue en listant les fichiers JS dans le dossier des fichiers statiques '%s'.","Fail to extract messages from JS files in the directory of static files '%s' using xgettext.":"Une erreur est survenue en extrayant les messages depuis les fichiers JS du dossier des fichiers statiques '%s' en utilisant xgettext.","Fail to extract messages from templates directory '%s' using tsmarty2c.php script.":"Impossible d'extraire les messages depuis le dossier de templates '%s' en utilisant le script tsmarty2c.php.","Fail to merge messages using msgcat.":"Impossible de fusionner les messages en utilisant msgcat.","Compendium file %s not found.":"Fichier compendium %s introuvable.","POT file not found (%s). Please run extract_messages first.":"Fichier POT introuvable (%s). Merci de lancer la commande extract_messages pour commencer.","Lang directory '%s' found":"Dossier de langue '%s' trouv\u00e9","LC_MESSAGES directory not found in lang '%s' directory, ignore it.":"Le dossier LC_MESSAGES est introuvable dans le dossier de langue '%s', on l'ignore.","Fail to init messages in %s PO file using msginit (%s).":"Impossible d'initialiser les messages dans le fichier PO %s en utilisant msginit (%s).","Fail to update messages in %s PO file using msgmerge (%s).":"Impossible de mettre \u00e0 jour les messages dans les fichiers PO %s en utilisant msgmerge (%s).","PO file not found in lang '%s' directory, ignore it.":"Le fichier PO est introuvable dans le dossier de langue '%s', on l'ignore.","Fail to open root lang directory (%s).":"Impossible d'ouvrir le dossier racine des langues (%s).","Lang alias symlink found: %s -> %s":"Lien symbolique d'alias de langue trouv\u00e9 : %s -> %s","JS catalog symlink for %s -> %s created (%s)":"Lien symbolique de catalogue JS pour %s -> %s cr\u00e9\u00e9 (%s)","Fail to create JS catalog symlink for %s -> %s (%s)":"Impossible de cr\u00e9er le lien symbolique de catalogue JS pour %s -> %s (%s)","JS catalog symlink for %s -> %s already exist (%s)":"Le lien symbolique du catalogue JS pour %s -> %s existe d\u00e9j\u00e0 (%s)","JS catalog file for %s already exist, but it's not a symlink to %s (%s)":"Le catalogue JS pour %s existe, mais il ne s'agit par d'un lien symbolique vers %s (%s)","Fail to compile messages from %s PO file as MO file using msgfmt (%s).":"Impossible de compiler les messages depuis le fichier PO %s en tant que fichier MO en utilisant msgfmt (%s).","Include core translated messages from %s PO file":"Inclusion des messages traduits (core) depuis le fichier PO %s","Core PO file %s not found: can not include its translated messages in resulting JSON catalog.":"Le fichier PO core %s est introuvable : impossible d'inclure ses messages traduits dans le catalogue JSON r\u00e9sultant.","Fail to open %s JS catalog file in write mode (%s).":"Impossible d'ouvrir le catalogue JS %s en mode \u00e9criture (%s).","Fail to write %s JS catalog in file (%s).":"Impossible d'\u00e9crire le fichier du catalogue JS %s (%s).","%s JS catalog writed (%s).":"Catalogue JS %s cr\u00e9\u00e9 (%s).","Hello world!":"Salut tout le monde !","Disconnected":"D\u00e9connect\u00e9","You are now disconnected.":"Vous \u00eates maintenant d\u00e9connect\u00e9.","Confirmation":"Confirmation","Do you confirm?":"Confirmez-vous ?","Cancel":"Annuler","Validate":"Valider","OK":"OK","Question":"Question","Please enter your answer below:":"Merci de saisir vos r\u00e9ponses ci-dessous :","Please wait":"Merci de patienter","Please wait while your request is being processed.":"Merci de patienter pendant le traitement de votre requ\u00eate.","Are you sure?":"\u00cates-vous sure ?","Oops...":"Oups...","A fatal error has occurred and it is preventing this application from working properly. Please try again later or contact support.":"Une erreur fatale est survenue et celle-ci emp\u00eache cette application de fonctionner correctement. Merci de r\u00e9essayer ult\u00e9rieurement ou de prendre contact avec le service support.","Error: %1":"Erreur : %1","This is the default page of a new app using EesyPHP framework. Register your own templates directory and create a homepage.tpl<\/em> file to overwrite it. You could also overwrite the URL handler for the root of the web application.":"Il s'agit de la page par d\u00e9faut d'une nouvelle application utilisant le framework EesyPHP. Configurez votre propre dossier de templates et cr\u00e9er le fichier homepage.tpl<\/em> pour l'\u00e9craser. Vous pouvez \u00e9galement \u00e9craser le gestionnaire de l'URL racine de l'application web.","Sign out":"D\u00e9connexion","Username":"Nom d'utilisateur","Password":"Mot de passe","Submit":"Envoyer","Logout":"D\u00e9connexion","Connection":"Connexion","Authentication required but force_authentication function is not defined.":"Authentification requise mais la fonction force_authentication n'est pas d\u00e9finie."},"locale":"fr_FR.UTF8","domain":"DEFAULT","plural_expr":"(n > 1)"};
\ No newline at end of file
diff --git a/locales/fr_FR.UTF8.js b/locales/fr_FR.UTF8.js
index c50f19c..1810bc2 100644
--- a/locales/fr_FR.UTF8.js
+++ b/locales/fr_FR.UTF8.js
@@ -1 +1 @@
-translations_data = {"messages":{"Create a new project using EesyPHP framework":"Cr\u00e9er un nouveau projet utilisant le framework EesyPHP","This command could be used to easily build the structure of a new project using the EesyPHP framework.":"Cette commande peut-\u00eatre utilis\u00e9e pour construire facilement la structure d'un nouveau projet utilisant le framework EesyPHP.","Start the PHP built-in HTTP server to serve the application":"D\u00e9marrer le service HTTP int\u00e9gr\u00e9 \u00e0 PHP pour servir l'application","This command could be used to start the PHP built-in HTTP server to serve the application.":"Cette commande peut-\u00eatre utilis\u00e9e pour d\u00e9marrer le service HTTP int\u00e9gr\u00e9 \u00e0 PHP pour servir l'application.","The CLI command '%s' already exists.":"La commande CLI '%s' n'existe pas.","The CLI command '%s' handler is not callable !":"La fonction impl\u00e9mentant la commande CLI '%s' n'est pas ex\u00e9cutable !","Usage: %s [-h] [-qd] command\n":"Utilisation: %s [-h] [-qd] commande\n"," -h Show this message\n":" -h Affiche ce message\n"," -q \/ -d Quiet\/Debug mode\n":" -q \/ -d Mode silencieux\/debug\n"," --trace Trace mode (the most verbose)\n":" --trace Mode trace (le plus verbeux)\n"," command Command to run\n":" command La commande \u00e0 ex\u00e9cuter\n","Available commands:\n":"Commandes disponibles:\n","Only one command could be executed !":"Une seul commande peut-\u00eatre ex\u00e9cut\u00e9e !","Invalid parameter \"%s\".\nNote: Command's parameter\/argument must be place after the command.":"Param\u00e8tre \"%s\" invalide.\nNote : Les param\u00e8tres\/arguments de la requ\u00eate doivent \u00eatre plac\u00e9s apr\u00e8s celle-ci.","An exception occured running command %s":"Une exception est survenue en ex\u00e9cutant la commande %s","This command only accept one argument: the listen address in format \"host:port\" or \":port\" (= 0.0.0.0:port).":"Cette commande n'accepte qu'un seul param\u00e8tre : l'adresse d'\u00e9coute au format \"h\u00f4te:port\" ou \":port\" (= 0.0.0.0:port).","Invalid listen address specify. Must be in formart host:port (or :port).":"Adresse d'\u00e9coute sp\u00e9cifi\u00e9e invalide. Elle doit \u00eatre au format h\u00f4te:port (ou :port).","Invalid listen host specified. Must be an IPv4 or IPv6 address.":"H\u00f4te d'\u00e9coute sp\u00e9cifi\u00e9 invalide. Il doit s'agir d'une adresse IPv4 ou IPv6.","Invalid listen port specified. Must be a positive integer between 1 and 65535.":"Port d'\u00e9coute sp\u00e9cifi\u00e9 invalide. Il doit s'agir d'un entier positif entre 1 et 65535.","Can't invoke bash. Can't ask password prompt.":"Impossible d'utiliser bash. Impossible de demander \u00e0 l'utilisateur de saisir un mot de passe.","Please enter password:":"Merci de saisir le mot de passe :","Unable to connect to the database.":"Impossible de se connecter \u00e0 la base de donn\u00e9es.","Invalid username or password.":"Nom d'utilisateur ou mot de passe invalide.","Sign in":"Connexion","Authentication required":"Authentification requise","Access denied":"Acc\u00e8s interdit","You must login to access this page.":"Vous devez vous connecter pour acc\u00e9der \u00e0 cette page.","<\/hr>Mail initialy intended for %s.<\/small><\/p>":"<\/hr>
Email initialement destin\u00e9 \u00e0 %s.<\/small><\/p>","\n\n\nMail initialy intended for %s.":"\n\n\nMail originalement destin\u00e9 \u00e0 %s.","
%s: %s<\/small><\/p>":"
%s: %s<\/small><\/p>","\n%s: %s":"\n%s: %s","No template specified.":"Aucun template sp\u00e9cifi\u00e9.","An error occurred while displaying this page.":"Une erreur est survenue en affichant cette page.","Bad request":"Mauvaise requ\u00eate","Invalid request.":"Requ\u00eate invalide.","You have to be authenticated to access to this page.":"Vous devez \u00eatre authentifi\u00e9 pour acc\u00e9der \u00e0 cette page.","You do not have access to this application. If you think this is an error, please contact support.":"Vous n'avez pas acc\u00e8s \u00e0 cette application. Si vous pensez qu'il s'agit d'une erreur, merci de prendre contact avec le support.","Whoops ! Page not found":"Oups ! Page introuvable","The requested page can not be found.":"La page demand\u00e9e est introuvable.","Error":"Erreur","An unknown error occurred. If problem persist, please contact support.":"Une erreur inconnue est survenue. Si le probl\u00e8me persiste, merci de prendre contact avec le support.","Unable to determine the requested page. If the problem persists, please contact support.":"Impossible de d\u00e9terminer la page demand\u00e9e. Si le probl\u00e8me persiste, merci de prendre contact avec le support.","Unable to determine the requested page (loop detected). If the problem persists, please contact support.":"Impossible de d\u00e9terminer la page demand\u00e9e (boucle d\u00e9tect\u00e9e). Si le probl\u00e8me persiste, merci de prendre contact avec le support.","This request cannot be processed.":"Cette requ\u00eate ne peut \u00eatre trait\u00e9e.","Authentication required but fail to authenticate you.":"Authentification requise mais impossible pour vous authentifier.","This request could not be processed correctly.":"Cette requ\u00eate n'a put \u00eatre trait\u00e9e correctement.","Hello world !":"Bonjour tout le monde !","Extract messages that need to be translated":"Extraire les messages devant \u00eatre traduit","This command could be used to generate\/update locales\/messages.pot file.":"Cette commande peut-\u00eatre utilis\u00e9e pour g\u00e9n\u00e9rer\/mettre \u00e0 jour le fichier locales\/messages.pot.","Update messages in translation PO lang files":"Mettre \u00e0 jour les messages dans les fichiers de traduction PO existants","This command could be used to init\/update PO files in locales\/*\/LC_MESSAGES directories.":"Cette commande peut-\u00eatre utilis\u00e9e pour initialiser\/mettre \u00e0 jour les fichiers PO dans les dossiers locales\/*\/LC_MESSAGES.","Compile messages from existing translation PO lang files to corresponding MO files and JS catalogs":"Compiler les messages depuis les fichiers PO de traduction existants vers les fichiers MO et les catalogues JS correspondant","This command could be used to compile PO files in locales\/*\/LC_MESSAGES directories to MO files and as JS catalogs in locales directory.":"Cette commande peut-\u00eatre utilis\u00e9e pour compiler les fichiers PO dans les dossiers locales\/*\/LC_MESSAGES and les catalogues JS dans le dossier locales.","Fail to list EesyPHP PHP files.":"Une erreur est survenue en listant les fichiers PHP d'EesyPHP.","Fail to extract messages from EesyPHP PHP files using xgettext.":"Une erreur est survenue en extrayant les messages depuis les fichiers PHP d'EesyPHP en utilisant xgettext.","Fail to list application PHP files.":"Une erreur est survenue en listant les fichiers PHP de l'application.","Fail to extract messages from PHP files using xgettext.":"Impossible d'extraire les messages depuis les fichiers PHP en utilisant xgettext.","Fail to list JS files in the directory of static files '%s'.":"Une erreur est survenue en listant les fichiers JS dans le dossier des fichiers statiques '%s'.","Fail to extract messages from JS files in the directory of static files '%s' using xgettext.":"Une erreur est survenue en extrayant les messages depuis les fichiers JS du dossier des fichiers statiques '%s' en utilisant xgettext.","Fail to extract messages from templates directory '%s' using tsmarty2c.php script.":"Impossible d'extraire les messages depuis le dossier de templates '%s' en utilisant le script tsmarty2c.php.","Fail to merge messages using msgcat.":"Impossible de fusionner les messages en utilisant msgcat.","Compendium file %s not found.":"Fichier compendium %s introuvable.","POT file not found (%s). Please run extract_messages first.":"Fichier POT introuvable (%s). Merci de lancer la commande extract_messages pour commencer.","Lang directory '%s' found":"Dossier de langue '%s' trouv\u00e9","LC_MESSAGES directory not found in lang '%s' directory, ignore it.":"Le dossier LC_MESSAGES est introuvable dans le dossier de langue '%s', on l'ignore.","Fail to init messages in %s PO file using msginit (%s).":"Impossible d'initialiser les messages dans le fichier PO %s en utilisant msginit (%s).","Fail to update messages in %s PO file using msgmerge (%s).":"Impossible de mettre \u00e0 jour les messages dans les fichiers PO %s en utilisant msgmerge (%s).","PO file not found in lang '%s' directory, ignore it.":"Le fichier PO est introuvable dans le dossier de langue '%s', on l'ignore.","Fail to open root lang directory (%s).":"Impossible d'ouvrir le dossier racine des langues (%s).","Lang alias symlink found: %s -> %s":"Lien symbolique d'alias de langue trouv\u00e9 : %s -> %s","JS catalog symlink for %s -> %s created (%s)":"Lien symbolique de catalogue JS pour %s -> %s cr\u00e9\u00e9 (%s)","Fail to create JS catalog symlink for %s -> %s (%s)":"Impossible de cr\u00e9er le lien symbolique de catalogue JS pour %s -> %s (%s)","JS catalog symlink for %s -> %s already exist (%s)":"Le lien symbolique du catalogue JS pour %s -> %s existe d\u00e9j\u00e0 (%s)","JS catalog file for %s already exist, but it's not a symlink to %s (%s)":"Le catalogue JS pour %s existe, mais il ne s'agit par d'un lien symbolique vers %s (%s)","Fail to compile messages from %s PO file as MO file using msgfmt (%s).":"Impossible de compiler les messages depuis le fichier PO %s en tant que fichier MO en utilisant msgfmt (%s).","Fail to open %s JS catalog file in write mode (%s).":"Impossible d'ouvrir le catalogue JS %s en mode \u00e9criture (%s).","Fail to write %s JS catalog in file (%s).":"Impossible d'\u00e9crire le fichier du catalogue JS %s (%s).","%s JS catalog writed (%s).":"Catalogue JS %s cr\u00e9\u00e9 (%s).","Hello world!":"Salut tout le monde !","Disconnected":"D\u00e9connect\u00e9","You are now disconnected.":"Vous \u00eates maintenant d\u00e9connect\u00e9.","Confirmation":"Confirmation","Do you confirm?":"Confirmez-vous ?","Cancel":"Annuler","Validate":"Valider","OK":"OK","Question":"Question","Please enter your answer below:":"Merci de saisir vos r\u00e9ponses ci-dessous :","Please wait":"Merci de patienter","Please wait while your request is being processed.":"Merci de patienter pendant le traitement de votre requ\u00eate.","Are you sure?":"\u00cates-vous sure ?","Oops...":"Oups...","A fatal error has occurred and it is preventing this application from working properly. Please try again later or contact support.":"Une erreur fatale est survenue et celle-ci emp\u00eache cette application de fonctionner correctement. Merci de r\u00e9essayer ult\u00e9rieurement ou de prendre contact avec le service support.","Error: %1":"Erreur : %1","Back":"Retour","Hello, world!":"Bonjour tout le monde !","This is the default page of a new app using EesyPHP framework. Register your own templates directory and create a homepage.tpl<\/em> file to overwrite it. You could also overwrite the URL handler for the root of the web application.":"Il s'agit de la page par d\u00e9faut d'une nouvelle application utilisant le framework EesyPHP. Configurez votre propre dossier de templates et cr\u00e9er le fichier homepage.tpl<\/em> pour l'\u00e9craser. Vous pouvez \u00e9galement \u00e9craser le gestionnaire de l'URL racine de l'application web.","Sign out":"D\u00e9connexion","Username":"Nom d'utilisateur","Password":"Mot de passe","Submit":"Envoyer","Logout":"D\u00e9connexion","Connection":"Connexion","Authentication required but force_authentication function is not defined.":"Authentification requise mais la fonction force_authentication n'est pas d\u00e9finie."},"locale":"fr_FR.UTF8","domain":"EESYPHP","plural_expr":"(n > 1)"};
\ No newline at end of file
+translations_data = {"messages":{"Create a new project using EesyPHP framework":"Cr\u00e9er un nouveau projet utilisant le framework EesyPHP","This command could be used to easily build the structure of a new project using the EesyPHP framework.":"Cette commande peut-\u00eatre utilis\u00e9e pour construire facilement la structure d'un nouveau projet utilisant le framework EesyPHP.","Start the PHP built-in HTTP server to serve the application":"D\u00e9marrer le service HTTP int\u00e9gr\u00e9 \u00e0 PHP pour servir l'application","This command could be used to start the PHP built-in HTTP server to serve the application.":"Cette commande peut-\u00eatre utilis\u00e9e pour d\u00e9marrer le service HTTP int\u00e9gr\u00e9 \u00e0 PHP pour servir l'application.","The CLI command '%s' already exists.":"La commande CLI '%s' n'existe pas.","The CLI command '%s' handler is not callable !":"La fonction impl\u00e9mentant la commande CLI '%s' n'est pas ex\u00e9cutable !","Usage: %s [-h] [-qd] command\n":"Utilisation: %s [-h] [-qd] commande\n"," -h Show this message\n":" -h Affiche ce message\n"," -q \/ -d Quiet\/Debug mode\n":" -q \/ -d Mode silencieux\/debug\n"," --trace Trace mode (the most verbose)\n":" --trace Mode trace (le plus verbeux)\n"," -l \/ --log-file Overwrite log file specified in configuration\n":" -l \/ --log-file Red\u00e9finir le fichier de journalisation \u00e0 utiliser \u00e0 la place de celui d\u00e9fini dans la configuration\n"," -C \/ --console Enable log on console\n":" -C \/ --console Activer la journalisation dans la console\n"," command Command to run\n":" command La commande \u00e0 ex\u00e9cuter\n","Available commands:\n":"Commandes disponibles:\n","Only one command could be executed !":"Une seul commande peut-\u00eatre ex\u00e9cut\u00e9e !","Invalid parameter \"%s\".\nNote: Command's parameter\/argument must be place after the command.":"Param\u00e8tre \"%s\" invalide.\nNote : Les param\u00e8tres\/arguments de la requ\u00eate doivent \u00eatre plac\u00e9s apr\u00e8s celle-ci.","An exception occured running command %s":"Une exception est survenue en ex\u00e9cutant la commande %s","This command only accept one argument: the listen address in format \"host:port\" or \":port\" (= 0.0.0.0:port).":"Cette commande n'accepte qu'un seul param\u00e8tre : l'adresse d'\u00e9coute au format \"h\u00f4te:port\" ou \":port\" (= 0.0.0.0:port).","Invalid listen address specify. Must be in formart host:port (or :port).":"Adresse d'\u00e9coute sp\u00e9cifi\u00e9e invalide. Elle doit \u00eatre au format h\u00f4te:port (ou :port).","Invalid listen host specified. Must be an IPv4 or IPv6 address.":"H\u00f4te d'\u00e9coute sp\u00e9cifi\u00e9 invalide. Il doit s'agir d'une adresse IPv4 ou IPv6.","Invalid listen port specified. Must be a positive integer between 1 and 65535.":"Port d'\u00e9coute sp\u00e9cifi\u00e9 invalide. Il doit s'agir d'un entier positif entre 1 et 65535.","Can't invoke bash. Can't ask password prompt.":"Impossible d'utiliser bash. Impossible de demander \u00e0 l'utilisateur de saisir un mot de passe.","Please enter password:":"Merci de saisir le mot de passe :","Unable to connect to the database.":"Impossible de se connecter \u00e0 la base de donn\u00e9es.","Invalid username or password.":"Nom d'utilisateur ou mot de passe invalide.","Sign in":"Connexion","Authentication required":"Authentification requise","Access denied":"Acc\u00e8s interdit","You must login to access this page.":"Vous devez vous connecter pour acc\u00e9der \u00e0 cette page.","<\/hr>Mail initialy intended for %s.<\/small><\/p>":"<\/hr>
Email initialement destin\u00e9 \u00e0 %s.<\/small><\/p>","\n\n\nMail initialy intended for %s.":"\n\n\nMail originalement destin\u00e9 \u00e0 %s.","
%s: %s<\/small><\/p>":"
%s: %s<\/small><\/p>","\n%s: %s":"\n%s: %s","No template specified.":"Aucun template sp\u00e9cifi\u00e9.","An error occurred while displaying this page.":"Une erreur est survenue en affichant cette page.","Bad request":"Mauvaise requ\u00eate","Invalid request.":"Requ\u00eate invalide.","You have to be authenticated to access to this page.":"Vous devez \u00eatre authentifi\u00e9 pour acc\u00e9der \u00e0 cette page.","You do not have access to this application. If you think this is an error, please contact support.":"Vous n'avez pas acc\u00e8s \u00e0 cette application. Si vous pensez qu'il s'agit d'une erreur, merci de prendre contact avec le support.","Whoops ! Page not found":"Oups ! Page introuvable","The requested page can not be found.":"La page demand\u00e9e est introuvable.","Error":"Erreur","An unknown error occurred. If problem persist, please contact support.":"Une erreur inconnue est survenue. Si le probl\u00e8me persiste, merci de prendre contact avec le support.","Unable to determine the requested page. If the problem persists, please contact support.":"Impossible de d\u00e9terminer la page demand\u00e9e. Si le probl\u00e8me persiste, merci de prendre contact avec le support.","Unable to determine the requested page (loop detected). If the problem persists, please contact support.":"Impossible de d\u00e9terminer la page demand\u00e9e (boucle d\u00e9tect\u00e9e). Si le probl\u00e8me persiste, merci de prendre contact avec le support.","This request cannot be processed.":"Cette requ\u00eate ne peut \u00eatre trait\u00e9e.","Authentication required but fail to authenticate you.":"Authentification requise mais impossible pour vous authentifier.","This request could not be processed correctly.":"Cette requ\u00eate n'a put \u00eatre trait\u00e9e correctement.","Hello world !":"Bonjour tout le monde !","Extract messages that need to be translated":"Extraire les messages devant \u00eatre traduit","This command could be used to generate\/update locales\/messages.pot file.":"Cette commande peut-\u00eatre utilis\u00e9e pour g\u00e9n\u00e9rer\/mettre \u00e0 jour le fichier locales\/messages.pot.","Update messages in translation PO lang files":"Mettre \u00e0 jour les messages dans les fichiers de traduction PO existants","This command could be used to init\/update PO files in locales\/*\/LC_MESSAGES directories.":"Cette commande peut-\u00eatre utilis\u00e9e pour initialiser\/mettre \u00e0 jour les fichiers PO dans les dossiers locales\/*\/LC_MESSAGES.","Compile messages from existing translation PO lang files to corresponding MO files and JS catalogs":"Compiler les messages depuis les fichiers PO de traduction existants vers les fichiers MO et les catalogues JS correspondant","This command could be used to compile PO files in locales\/*\/LC_MESSAGES directories to MO files and as JS catalogs in locales directory.":"Cette commande peut-\u00eatre utilis\u00e9e pour compiler les fichiers PO dans les dossiers locales\/*\/LC_MESSAGES and les catalogues JS dans le dossier locales.","Fail to list EesyPHP PHP files.":"Une erreur est survenue en listant les fichiers PHP d'EesyPHP.","Fail to extract messages from EesyPHP PHP files using xgettext.":"Une erreur est survenue en extrayant les messages depuis les fichiers PHP d'EesyPHP en utilisant xgettext.","Fail to list application PHP files.":"Une erreur est survenue en listant les fichiers PHP de l'application.","Fail to extract messages from PHP files using xgettext.":"Impossible d'extraire les messages depuis les fichiers PHP en utilisant xgettext.","Fail to list JS files in the directory of static files '%s'.":"Une erreur est survenue en listant les fichiers JS dans le dossier des fichiers statiques '%s'.","Fail to extract messages from JS files in the directory of static files '%s' using xgettext.":"Une erreur est survenue en extrayant les messages depuis les fichiers JS du dossier des fichiers statiques '%s' en utilisant xgettext.","Fail to extract messages from templates directory '%s' using tsmarty2c.php script.":"Impossible d'extraire les messages depuis le dossier de templates '%s' en utilisant le script tsmarty2c.php.","Fail to merge messages using msgcat.":"Impossible de fusionner les messages en utilisant msgcat.","Compendium file %s not found.":"Fichier compendium %s introuvable.","POT file not found (%s). Please run extract_messages first.":"Fichier POT introuvable (%s). Merci de lancer la commande extract_messages pour commencer.","Lang directory '%s' found":"Dossier de langue '%s' trouv\u00e9","LC_MESSAGES directory not found in lang '%s' directory, ignore it.":"Le dossier LC_MESSAGES est introuvable dans le dossier de langue '%s', on l'ignore.","Fail to init messages in %s PO file using msginit (%s).":"Impossible d'initialiser les messages dans le fichier PO %s en utilisant msginit (%s).","Fail to update messages in %s PO file using msgmerge (%s).":"Impossible de mettre \u00e0 jour les messages dans les fichiers PO %s en utilisant msgmerge (%s).","PO file not found in lang '%s' directory, ignore it.":"Le fichier PO est introuvable dans le dossier de langue '%s', on l'ignore.","Fail to open root lang directory (%s).":"Impossible d'ouvrir le dossier racine des langues (%s).","Lang alias symlink found: %s -> %s":"Lien symbolique d'alias de langue trouv\u00e9 : %s -> %s","JS catalog symlink for %s -> %s created (%s)":"Lien symbolique de catalogue JS pour %s -> %s cr\u00e9\u00e9 (%s)","Fail to create JS catalog symlink for %s -> %s (%s)":"Impossible de cr\u00e9er le lien symbolique de catalogue JS pour %s -> %s (%s)","JS catalog symlink for %s -> %s already exist (%s)":"Le lien symbolique du catalogue JS pour %s -> %s existe d\u00e9j\u00e0 (%s)","JS catalog file for %s already exist, but it's not a symlink to %s (%s)":"Le catalogue JS pour %s existe, mais il ne s'agit par d'un lien symbolique vers %s (%s)","Fail to compile messages from %s PO file as MO file using msgfmt (%s).":"Impossible de compiler les messages depuis le fichier PO %s en tant que fichier MO en utilisant msgfmt (%s).","Include core translated messages from %s PO file":"Inclusion des messages traduits (core) depuis le fichier PO %s","Core PO file %s not found: can not include its translated messages in resulting JSON catalog.":"Le fichier PO core %s est introuvable : impossible d'inclure ses messages traduits dans le catalogue JSON r\u00e9sultant.","Fail to open %s JS catalog file in write mode (%s).":"Impossible d'ouvrir le catalogue JS %s en mode \u00e9criture (%s).","Fail to write %s JS catalog in file (%s).":"Impossible d'\u00e9crire le fichier du catalogue JS %s (%s).","%s JS catalog writed (%s).":"Catalogue JS %s cr\u00e9\u00e9 (%s).","Hello world!":"Salut tout le monde !","Disconnected":"D\u00e9connect\u00e9","You are now disconnected.":"Vous \u00eates maintenant d\u00e9connect\u00e9.","Confirmation":"Confirmation","Do you confirm?":"Confirmez-vous ?","Cancel":"Annuler","Validate":"Valider","OK":"OK","Question":"Question","Please enter your answer below:":"Merci de saisir vos r\u00e9ponses ci-dessous :","Please wait":"Merci de patienter","Please wait while your request is being processed.":"Merci de patienter pendant le traitement de votre requ\u00eate.","Are you sure?":"\u00cates-vous sure ?","Oops...":"Oups...","A fatal error has occurred and it is preventing this application from working properly. Please try again later or contact support.":"Une erreur fatale est survenue et celle-ci emp\u00eache cette application de fonctionner correctement. Merci de r\u00e9essayer ult\u00e9rieurement ou de prendre contact avec le service support.","Error: %1":"Erreur : %1","Back":"Retour","Hello, world!":"Bonjour tout le monde !","This is the default page of a new app using EesyPHP framework. Register your own templates directory and create a homepage.tpl<\/em> file to overwrite it. You could also overwrite the URL handler for the root of the web application.":"Il s'agit de la page par d\u00e9faut d'une nouvelle application utilisant le framework EesyPHP. Configurez votre propre dossier de templates et cr\u00e9er le fichier homepage.tpl<\/em> pour l'\u00e9craser. Vous pouvez \u00e9galement \u00e9craser le gestionnaire de l'URL racine de l'application web.","Sign out":"D\u00e9connexion","Username":"Nom d'utilisateur","Password":"Mot de passe","Submit":"Envoyer","Logout":"D\u00e9connexion","Connection":"Connexion","Authentication required but force_authentication function is not defined.":"Authentification requise mais la fonction force_authentication n'est pas d\u00e9finie."},"locale":"fr_FR.UTF8","domain":"EESYPHP","plural_expr":"(n > 1)"};
\ No newline at end of file
diff --git a/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.mo b/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.mo
index 5a05d08..03c3594 100644
Binary files a/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.mo and b/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.mo differ
diff --git a/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po b/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po
index 9bce5a3..1fd6ef0 100644
--- a/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po
+++ b/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po
@@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"POT-Creation-Date: 2023-03-03 10:42+0100\n"
+"POT-Creation-Date: 2023-03-07 17:49+0100\n"
"PO-Revision-Date: \n"
-"Last-Translator: Benjamin Renard \n"
+"Last-Translator: Benjamin Renard \n"
"Language-Team: \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
@@ -12,104 +12,6 @@ msgstr ""
"X-Generator: Poedit 2.4.2\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
msgid "Create a new project using EesyPHP framework"
msgstr "Créer un nouveau projet utilisant le framework EesyPHP"
@@ -198,7 +100,7 @@ msgstr ""
msgid "An exception occured running command %s"
msgstr "Une exception est survenue en exécutant la commande %s"
-#: Cli.php:307
+#: Cli.php:309
msgid ""
"This command only accept one argument: the listen address in format \"host:"
"port\" or \":port\" (= 0.0.0.0:port)."
@@ -206,19 +108,19 @@ msgstr ""
"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)."
-#: Cli.php:318
+#: Cli.php:320
msgid ""
"Invalid listen address specify. Must be in formart host:port (or :port)."
msgstr ""
"Adresse d'écoute spécifiée invalide. Elle doit être au format hôte:port (ou :"
"port)."
-#: Cli.php:328
+#: Cli.php:330
msgid "Invalid listen host specified. Must be an IPv4 or IPv6 address."
msgstr ""
"Hôte d'écoute spécifié invalide. Il doit s'agir d'une adresse IPv4 ou IPv6."
-#: Cli.php:335
+#: Cli.php:337
msgid ""
"Invalid listen port specified. Must be a positive integer between 1 and "
"65535."
@@ -226,32 +128,150 @@ msgstr ""
"Port d'écoute spécifié invalide. Il doit s'agir d'un entier positif entre 1 "
"et 65535."
-#: Cli.php:365
+#: Cli.php:367
msgid "Can't invoke bash. Can't ask password prompt."
msgstr ""
"Impossible d'utiliser bash. Impossible de demander à l'utilisateur de saisir "
"un mot de passe."
-#: Cli.php:368
+#: Cli.php:370
msgid "Please enter password:"
msgstr "Merci de saisir le mot de passe :"
-#: App.php:238 I18n.php:118
+#: 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."
+
+#: Email.php:101
+#, php-format
+msgid "Mail initialy intended for %s.
"
+msgstr "Email initialement destiné à %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 "%s: %s
"
+msgstr "%s: %s
"
+
+#: Email.php:140
+#, php-format
+msgid ""
+"\n"
+"%s: %s"
+msgstr ""
+"\n"
+"%s: %s"
+
+#: 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."
+
+#: 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
msgid "Hello world !"
msgstr "Bonjour tout le monde !"
-#: App.php:240
-msgid "Hello world!"
-msgstr "Salut tout le monde !"
-
-#: App.php:251
-msgid "Disconnected"
-msgstr "Déconnecté"
-
-#: App.php:253
-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"
@@ -292,34 +312,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:336
+#: I18n.php:356
msgid "Fail to list EesyPHP PHP files."
msgstr "Une erreur est survenue en listant les fichiers PHP d'EesyPHP."
-#: I18n.php:356
+#: I18n.php:376
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
+#: I18n.php:393
msgid "Fail to list application PHP files."
msgstr "Une erreur est survenue en listant les fichiers PHP de l'application."
-#: I18n.php:393
+#: I18n.php:413
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
+#: I18n.php:429
#, 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
+#: I18n.php:451
#, php-format
msgid ""
"Fail to extract messages from JS files in the directory of static files '%s' "
@@ -328,7 +348,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:453
+#: I18n.php:473
#, php-format
msgid ""
"Fail to extract messages from templates directory '%s' using tsmarty2c.php "
@@ -337,143 +357,137 @@ msgstr ""
"Impossible d'extraire les messages depuis le dossier de templates '%s' en "
"utilisant le script tsmarty2c.php."
-#: I18n.php:489
+#: I18n.php:509
msgid "Fail to merge messages using msgcat."
msgstr "Impossible de fusionner les messages en utilisant msgcat."
-#: I18n.php:503
+#: I18n.php:523
#, php-format
msgid "Compendium file %s not found."
msgstr "Fichier compendium %s introuvable."
-#: I18n.php:514
+#: I18n.php:534
#, 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
+#: I18n.php:546 I18n.php:656
#, php-format
msgid "Lang directory '%s' found"
msgstr "Dossier de langue '%s' trouvé"
-#: I18n.php:532 I18n.php:642
+#: I18n.php:552 I18n.php:662
#, 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
+#: I18n.php:567
#, 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
+#: I18n.php:585
#, 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
+#: I18n.php:591 I18n.php:670
#, 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
+#: I18n.php:598 I18n.php:725
#, php-format
msgid "Fail to open root lang directory (%s)."
msgstr "Impossible d'ouvrir le dossier racine des langues (%s)."
-#: I18n.php:606
+#: I18n.php:626
#, php-format
msgid "Lang alias symlink found: %s -> %s"
msgstr "Lien symbolique d'alias de langue trouvé : %s -> %s"
-#: I18n.php:613
+#: I18n.php:633
#, 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
+#: I18n.php:637
#, 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
+#: I18n.php:643
#, 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
+#: I18n.php:648
#, 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
+#: I18n.php:683
#, 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
+#: I18n.php:695
+#, 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
+#, php-format
+msgid ""
+"Core PO file %s not found: can not include its translated messages in "
+"resulting JSON catalog."
+msgstr ""
+"Le fichier PO core %s est introuvable : impossible d'inclure ses messages "
+"traduits dans le catalogue JSON résultant."
+
+#: I18n.php:708
#, 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
+#: I18n.php:713
#, 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
+#: I18n.php:718
#, php-format
msgid "%s JS catalog writed (%s)."
msgstr "Catalogue JS %s créé (%s)."
-#: Email.php:101
-#, php-format
-msgid "Mail initialy intended for %s.
"
-msgstr "Email initialement destiné à %s.
"
+#: App.php:240
+msgid "Hello world!"
+msgstr "Salut tout le monde !"
-#: Email.php:102
-#, php-format
-msgid ""
-"\n"
-"\n"
-"\n"
-"Mail initialy intended for %s."
-msgstr ""
-"\n"
-"\n"
-"\n"
-"Mail originalement destiné à %s."
+#: App.php:251
+msgid "Disconnected"
+msgstr "Déconnecté"
-#: Email.php:139
-#, php-format
-msgid "%s: %s
"
-msgstr "%s: %s
"
+#: App.php:253
+msgid "You are now disconnected."
+msgstr "Vous êtes maintenant déconnecté."
-#: Email.php:140
-#, php-format
-msgid ""
-"\n"
-"%s: %s"
-msgstr ""
-"\n"
-"%s: %s"
-
-#: static/js/myconfirm.js:4 static/js/myconfirm.js:171
-#: static/js/myconfirm.js:200
+#: static/js/myconfirm.js:4 static/js/myconfirm.js:187
+#: static/js/myconfirm.js:216
msgid "Confirmation"
msgstr "Confirmation"
@@ -481,50 +495,38 @@ msgstr "Confirmation"
msgid "Do you confirm?"
msgstr "Confirmez-vous ?"
-#: static/js/myconfirm.js:11 static/js/myconfirm.js:108
+#: static/js/myconfirm.js:18 static/js/myconfirm.js:122
msgid "Cancel"
msgstr "Annuler"
-#: static/js/myconfirm.js:17 static/js/myconfirm.js:114
+#: static/js/myconfirm.js:24 static/js/myconfirm.js:128
msgid "Validate"
msgstr "Valider"
-#: static/js/myconfirm.js:52
+#: static/js/myconfirm.js:64
msgid "OK"
msgstr "OK"
-#: static/js/myconfirm.js:91
+#: static/js/myconfirm.js:103
msgid "Question"
msgstr "Question"
-#: static/js/myconfirm.js:92
+#: static/js/myconfirm.js:104
msgid "Please enter your answer below:"
msgstr "Merci de saisir vos réponses ci-dessous :"
-#: static/js/myconfirm.js:143
+#: static/js/myconfirm.js:157
msgid "Please wait"
msgstr "Merci de patienter"
-#: static/js/myconfirm.js:144
+#: static/js/myconfirm.js:158
msgid "Please wait while your request is being processed."
msgstr "Merci de patienter pendant le traitement de votre requête."
-#: static/js/myconfirm.js:172 static/js/myconfirm.js:201
+#: static/js/myconfirm.js:188 static/js/myconfirm.js:217
msgid "Are you 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
msgid "Oops..."
msgstr "Oups..."
@@ -546,15 +548,11 @@ msgstr "Erreur : %1"
msgid "Back"
msgstr "Retour"
-#: templates/empty.tpl:60
-msgid "Sign out"
-msgstr "Déconnexion"
-
-#: templates/homepage.tpl:5
+#: templates/homepage.tpl:6
msgid "Hello, world!"
msgstr "Bonjour tout le monde !"
-#: templates/homepage.tpl:6
+#: templates/homepage.tpl:8
msgid ""
"This is the default page of a new app using EesyPHP framework. Register your "
"own templates directory and create a homepage.tpl file to overwrite "
@@ -566,6 +564,22 @@ msgstr ""
"fichier homepage.tpl pour l'écraser. Vous pouvez également écraser "
"le gestionnaire de l'URL racine de l'application web."
+#: templates/empty.tpl:64
+msgid "Sign out"
+msgstr "Déconnexion"
+
+#: templates/login.tpl:14 templates/login.tpl:15
+msgid "Username"
+msgstr "Nom d'utilisateur"
+
+#: templates/login.tpl:19 templates/login.tpl:20
+msgid "Password"
+msgstr "Mot de passe"
+
+#: templates/login.tpl:24
+msgid "Submit"
+msgstr "Envoyer"
+
#~ msgid "Logout"
#~ msgstr "Déconnexion"
diff --git a/locales/messages.pot b/locales/messages.pot
index b261676..5008f3b 100644
--- a/locales/messages.pot
+++ b/locales/messages.pot
@@ -1,101 +1,11 @@
msgid ""
msgstr ""
-"POT-Creation-Date: 2023-03-03 10:42+0100\n"
-"PO-Revision-Date: 2023-03-03 10:42+0100\n"
+"POT-Creation-Date: 2023-03-07 17:49+0100\n"
+"PO-Revision-Date: 2023-03-07 17:49+0100\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\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
msgid "Create a new project using EesyPHP framework"
msgstr ""
@@ -175,51 +85,155 @@ msgstr ""
msgid "An exception occured running command %s"
msgstr ""
-#: Cli.php:307
+#: Cli.php:309
msgid ""
"This command only accept one argument: the listen address in format \"host:"
"port\" or \":port\" (= 0.0.0.0:port)."
msgstr ""
-#: Cli.php:318
+#: Cli.php:320
msgid ""
"Invalid listen address specify. Must be in formart host:port (or :port)."
msgstr ""
-#: Cli.php:328
+#: Cli.php:330
msgid "Invalid listen host specified. Must be an IPv4 or IPv6 address."
msgstr ""
-#: Cli.php:335
+#: Cli.php:337
msgid ""
"Invalid listen port specified. Must be a positive integer between 1 and "
"65535."
msgstr ""
-#: Cli.php:365
+#: Cli.php:367
msgid "Can't invoke bash. Can't ask password prompt."
msgstr ""
-#: Cli.php:368
+#: Cli.php:370
msgid "Please enter password:"
msgstr ""
-#: App.php:238 I18n.php:118
+#: 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 ""
+
+#: Email.php:101
+#, php-format
+msgid "Mail initialy intended for %s.
"
+msgstr ""
+
+#: Email.php:102
+#, php-format
+msgid ""
+"\n"
+"\n"
+"\n"
+"Mail initialy intended for %s."
+msgstr ""
+
+#: Email.php:139
+#, php-format
+msgid "%s: %s
"
+msgstr ""
+
+#: Email.php:140
+#, php-format
+msgid ""
+"\n"
+"%s: %s"
+msgstr ""
+
+#: Tpl.php:420
+msgid "No template specified."
+msgstr ""
+
+#: Tpl.php:453
+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
msgid "Hello world !"
msgstr ""
-#: App.php:240
-msgid "Hello world!"
-msgstr ""
-
-#: App.php:251
-msgid "Disconnected"
-msgstr ""
-
-#: App.php:253
-msgid "You are now disconnected."
-msgstr ""
-
#: I18n.php:138
msgid "Extract messages that need to be translated"
msgstr ""
@@ -251,158 +265,156 @@ msgid ""
"directories to MO files and as JS catalogs in locales directory."
msgstr ""
-#: I18n.php:336
+#: I18n.php:356
msgid "Fail to list EesyPHP PHP files."
msgstr ""
-#: I18n.php:356
+#: I18n.php:376
msgid "Fail to extract messages from EesyPHP PHP files using xgettext."
msgstr ""
-#: I18n.php:373
+#: I18n.php:393
msgid "Fail to list application PHP files."
msgstr ""
-#: I18n.php:393
+#: I18n.php:413
msgid "Fail to extract messages from PHP files using xgettext."
msgstr ""
-#: I18n.php:409
+#: I18n.php:429
#, php-format
msgid "Fail to list JS files in the directory of static files '%s'."
msgstr ""
-#: I18n.php:431
+#: I18n.php:451
#, php-format
msgid ""
"Fail to extract messages from JS files in the directory of static files '%s' "
"using xgettext."
msgstr ""
-#: I18n.php:453
+#: I18n.php:473
#, php-format
msgid ""
"Fail to extract messages from templates directory '%s' using tsmarty2c.php "
"script."
msgstr ""
-#: I18n.php:489
+#: I18n.php:509
msgid "Fail to merge messages using msgcat."
msgstr ""
-#: I18n.php:503
+#: I18n.php:523
#, php-format
msgid "Compendium file %s not found."
msgstr ""
-#: I18n.php:514
+#: I18n.php:534
#, php-format
msgid "POT file not found (%s). Please run extract_messages first."
msgstr ""
-#: I18n.php:526 I18n.php:636
+#: I18n.php:546 I18n.php:656
#, php-format
msgid "Lang directory '%s' found"
msgstr ""
-#: I18n.php:532 I18n.php:642
+#: I18n.php:552 I18n.php:662
#, php-format
msgid "LC_MESSAGES directory not found in lang '%s' directory, ignore it."
msgstr ""
-#: I18n.php:547
+#: I18n.php:567
#, php-format
msgid "Fail to init messages in %s PO file using msginit (%s)."
msgstr ""
-#: I18n.php:565
+#: I18n.php:585
#, php-format
msgid "Fail to update messages in %s PO file using msgmerge (%s)."
msgstr ""
-#: I18n.php:571 I18n.php:650
+#: I18n.php:591 I18n.php:670
#, php-format
msgid "PO file not found in lang '%s' directory, ignore it."
msgstr ""
-#: I18n.php:578 I18n.php:690
+#: I18n.php:598 I18n.php:725
#, php-format
msgid "Fail to open root lang directory (%s)."
msgstr ""
-#: I18n.php:606
+#: I18n.php:626
#, php-format
msgid "Lang alias symlink found: %s -> %s"
msgstr ""
-#: I18n.php:613
+#: I18n.php:633
#, php-format
msgid "JS catalog symlink for %s -> %s created (%s)"
msgstr ""
-#: I18n.php:617
+#: I18n.php:637
#, php-format
msgid "Fail to create JS catalog symlink for %s -> %s (%s)"
msgstr ""
-#: I18n.php:623
+#: I18n.php:643
#, php-format
msgid "JS catalog symlink for %s -> %s already exist (%s)"
msgstr ""
-#: I18n.php:628
+#: I18n.php:648
#, php-format
msgid "JS catalog file for %s already exist, but it's not a symlink to %s (%s)"
msgstr ""
-#: I18n.php:663
+#: I18n.php:683
#, php-format
msgid "Fail to compile messages from %s PO file as MO file using msgfmt (%s)."
msgstr ""
-#: I18n.php:673
+#: I18n.php:695
+#, php-format
+msgid "Include core translated messages from %s PO file"
+msgstr ""
+
+#: I18n.php:702
+#, php-format
+msgid ""
+"Core PO file %s not found: can not include its translated messages in "
+"resulting JSON catalog."
+msgstr ""
+
+#: I18n.php:708
#, php-format
msgid "Fail to open %s JS catalog file in write mode (%s)."
msgstr ""
-#: I18n.php:678
+#: I18n.php:713
#, php-format
msgid "Fail to write %s JS catalog in file (%s)."
msgstr ""
-#: I18n.php:683
+#: I18n.php:718
#, php-format
msgid "%s JS catalog writed (%s)."
msgstr ""
-#: Email.php:101
-#, php-format
-msgid "Mail initialy intended for %s.
"
+#: App.php:240
+msgid "Hello world!"
msgstr ""
-#: Email.php:102
-#, php-format
-msgid ""
-"\n"
-"\n"
-"\n"
-"Mail initialy intended for %s."
+#: App.php:251
+msgid "Disconnected"
msgstr ""
-#: Email.php:139
-#, php-format
-msgid "%s: %s
"
+#: App.php:253
+msgid "You are now disconnected."
msgstr ""
-#: Email.php:140
-#, php-format
-msgid ""
-"\n"
-"%s: %s"
-msgstr ""
-
-#: static/js/myconfirm.js:4 static/js/myconfirm.js:171
-#: static/js/myconfirm.js:200
+#: static/js/myconfirm.js:4 static/js/myconfirm.js:187
+#: static/js/myconfirm.js:216
msgid "Confirmation"
msgstr ""
@@ -410,50 +422,38 @@ msgstr ""
msgid "Do you confirm?"
msgstr ""
-#: static/js/myconfirm.js:11 static/js/myconfirm.js:108
+#: static/js/myconfirm.js:18 static/js/myconfirm.js:122
msgid "Cancel"
msgstr ""
-#: static/js/myconfirm.js:17 static/js/myconfirm.js:114
+#: static/js/myconfirm.js:24 static/js/myconfirm.js:128
msgid "Validate"
msgstr ""
-#: static/js/myconfirm.js:52
+#: static/js/myconfirm.js:64
msgid "OK"
msgstr ""
-#: static/js/myconfirm.js:91
+#: static/js/myconfirm.js:103
msgid "Question"
msgstr ""
-#: static/js/myconfirm.js:92
+#: static/js/myconfirm.js:104
msgid "Please enter your answer below:"
msgstr ""
-#: static/js/myconfirm.js:143
+#: static/js/myconfirm.js:157
msgid "Please wait"
msgstr ""
-#: static/js/myconfirm.js:144
+#: static/js/myconfirm.js:158
msgid "Please wait while your request is being processed."
msgstr ""
-#: static/js/myconfirm.js:172 static/js/myconfirm.js:201
+#: static/js/myconfirm.js:188 static/js/myconfirm.js:217
msgid "Are you sure?"
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
msgid "Oops..."
msgstr ""
@@ -472,18 +472,30 @@ msgstr ""
msgid "Back"
msgstr ""
-#: templates/empty.tpl:60
-msgid "Sign out"
-msgstr ""
-
-#: templates/homepage.tpl:5
+#: templates/homepage.tpl:6
msgid "Hello, world!"
msgstr ""
-#: templates/homepage.tpl:6
+#: templates/homepage.tpl:8
msgid ""
"This is the default page of a new app using EesyPHP framework. Register your "
"own templates directory and create a homepage.tpl file to overwrite "
"it. You could also overwrite the URL handler for the root of the web "
"application."
msgstr ""
+
+#: templates/empty.tpl:64
+msgid "Sign out"
+msgstr ""
+
+#: templates/login.tpl:14 templates/login.tpl:15
+msgid "Username"
+msgstr ""
+
+#: templates/login.tpl:19 templates/login.tpl:20
+msgid "Password"
+msgstr ""
+
+#: templates/login.tpl:24
+msgid "Submit"
+msgstr ""
diff --git a/src/I18n.php b/src/I18n.php
index 1d6e547..379fcf0 100644
--- a/src/I18n.php
+++ b/src/I18n.php
@@ -279,14 +279,19 @@ class I18n {
/**
* Convert PO file to JSON file
*
- * @param string $locale The locale of the input PO file
- * @param string $path The path of the input PO file
- * @param bool $core Set to True if it's a run for core translations
+ * @param string $locale The locale of the input PO file
+ * @param string $po_path The path of the main PO input file
+ * @param string|null $domain The domain specified in the output JSON file
+ * (optional, default: self :: CORE_TEXT_DOMAIN)
+ * @param array|null $other_po_paths Optional list of other PO files: if specified,
+ * their translated messages will be loaded and
+ * included in output JSON file.
*
* @return string JSON encoded file content
*/
- public static function po2json($locale, $path, $core=false) {
- $fileHandler = new \Sepia\PoParser\SourceHandler\FileSystem($path);
+ public static function po2json($locale, $po_path, $domain=null, $other_po_paths=null) {
+ Log :: trace('Load PO file %s', $po_path);
+ $fileHandler = new \Sepia\PoParser\SourceHandler\FileSystem($po_path);
$poparser = new \Sepia\PoParser\Parser($fileHandler);
$catalog = $poparser->parse();
$headers = $catalog->getHeader();
@@ -299,10 +304,25 @@ class I18n {
$msg = array($msg, $entry->getMsgIdPlural());
$messages[$entry->getMsgId()] = $msg;
}
+
+ foreach(ensure_is_array($other_po_paths) as $path) {
+ Log :: trace('Load PO file %s (for its translated messages only)', $path);
+ $fileHandler = new \Sepia\PoParser\SourceHandler\FileSystem($path);
+ $poparser = new \Sepia\PoParser\Parser($fileHandler);
+ $catalog = $poparser->parse();
+ foreach ($catalog->getEntries() as $entry) {
+ // msg id json format
+ $msg = $entry->getMsgStr();
+ if ($entry->isPlural())
+ $msg = array($msg, $entry->getMsgIdPlural());
+ $messages[$entry->getMsgId()] = $msg;
+ }
+ }
+
return json_encode(array(
'messages' => $messages,
'locale' => $locale,
- 'domain' => $core?self :: CORE_TEXT_DOMAIN:self :: TEXT_DOMAIN,
+ 'domain' => $domain?$domain:self :: CORE_TEXT_DOMAIN,
'plural_expr' => '(n > 1)',
));
}
@@ -667,7 +687,22 @@ class I18n {
}
// Compile messages from PO file to JS catalog file
- $js_catalog = self :: po2json($lang, $po_file, Cli::core_mode());
+ $other_po_paths = array();
+ if ($domain != self::CORE_TEXT_DOMAIN) {
+ $core_po_file = self::$core_root_path."/$lang/LC_MESSAGES/".self::CORE_TEXT_DOMAIN.".po";
+ if (is_file($core_po_file)) {
+ Log :: debug(
+ self::_('Include core translated messages from %s PO file'),
+ $core_po_file
+ );
+ $other_po_paths[] = $core_po_file;
+ }
+ else
+ Log :: warning(
+ self::_('Core PO file %s not found: can not include its translated messages in '.
+ 'resulting JSON catalog.'), $core_po_file);
+ }
+ $js_catalog = self :: po2json($lang, $po_file, $domain, $other_po_paths);
$js_file = "$root_path/$lang.js";
if(!$fd = fopen($js_file, 'w')) {
Log :: error(self::_("Fail to open %s JS catalog file in write mode (%s)."),