Translate application's messages with english as default and add french translation
This commit is contained in:
parent
28e6e167ee
commit
05a6c19264
12 changed files with 1543 additions and 251 deletions
6
.codespell-exclusions
Normal file
6
.codespell-exclusions
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
.git
|
||||||
|
./static/lib
|
||||||
|
./vendor
|
||||||
|
./locales/*/LC_MESSAGES/*.po
|
||||||
|
./locales/*.js
|
||||||
|
./locales/*.pot
|
|
@ -2,6 +2,13 @@
|
||||||
# See https://pre-commit.com for more information
|
# See https://pre-commit.com for more information
|
||||||
---
|
---
|
||||||
repos:
|
repos:
|
||||||
|
- repo: https://github.com/codespell-project/codespell
|
||||||
|
rev: v2.2.2
|
||||||
|
hooks:
|
||||||
|
- id: codespell
|
||||||
|
exclude: static/lib/|locales/.*\.js$|\.pot$
|
||||||
|
#args: ["--write-changes"]
|
||||||
|
exclude_types: [csv, json, pofile]
|
||||||
- repo: https://github.com/adrienverge/yamllint
|
- repo: https://github.com/adrienverge/yamllint
|
||||||
rev: v1.32.0
|
rev: v1.32.0
|
||||||
hooks:
|
hooks:
|
||||||
|
|
|
@ -20,7 +20,7 @@ else {
|
||||||
if (basename($script) == 'core.php')
|
if (basename($script) == 'core.php')
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!$script) die('Fail to detect root directory path');
|
if (!$script) die('Failed to detect root directory path');
|
||||||
$root_dir_path = realpath(dirname($script).'/../');
|
$root_dir_path = realpath(dirname($script).'/../');
|
||||||
|
|
||||||
// Include App's includes and vendor directories to PHP include paths
|
// Include App's includes and vendor directories to PHP include paths
|
||||||
|
|
1
locales/fr_FR.UTF8.js
Normal file
1
locales/fr_FR.UTF8.js
Normal file
File diff suppressed because one or more lines are too long
BIN
locales/fr_FR.UTF8/LC_MESSAGES/DEFAULT.mo
Normal file
BIN
locales/fr_FR.UTF8/LC_MESSAGES/DEFAULT.mo
Normal file
Binary file not shown.
657
locales/fr_FR.UTF8/LC_MESSAGES/DEFAULT.po
Normal file
657
locales/fr_FR.UTF8/LC_MESSAGES/DEFAULT.po
Normal file
|
@ -0,0 +1,657 @@
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"POT-Creation-Date: 2024-09-22 16:25+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-09-22 18:26+0200\n"
|
||||||
|
"Last-Translator: Benjamin Renard <brenard@easter-eggs.com>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: fr\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
"X-Generator: Poedit 3.2.2\n"
|
||||||
|
|
||||||
|
#: src/Auth/API.php:49
|
||||||
|
msgid "Invalid username or password."
|
||||||
|
msgstr "Nom d'utilisateur ou mot de passe invalide."
|
||||||
|
|
||||||
|
#: src/Auth/API.php:56
|
||||||
|
msgid "Invalid authentication token."
|
||||||
|
msgstr "Jeton d'authentification invalide."
|
||||||
|
|
||||||
|
#: src/Auth/API.php:58
|
||||||
|
msgid "Authentication token expired."
|
||||||
|
msgstr "Jeton d'authentification expiré."
|
||||||
|
|
||||||
|
#: src/Auth/API.php:65
|
||||||
|
msgid "Your account appears to have been deleted."
|
||||||
|
msgstr "Votre compte semble avoir été supprimé."
|
||||||
|
|
||||||
|
#: static/main.js:27
|
||||||
|
msgid "Confirmation"
|
||||||
|
msgstr "Confirmation"
|
||||||
|
|
||||||
|
#: static/main.js:29
|
||||||
|
msgid "OK"
|
||||||
|
msgstr "OK"
|
||||||
|
|
||||||
|
#: static/main.js:31
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Annuler"
|
||||||
|
|
||||||
|
#: static/main.js:86
|
||||||
|
msgid "You have to enter the name of the suitcase!"
|
||||||
|
msgstr "Vous devez saisir le nom de la valise !"
|
||||||
|
|
||||||
|
#: static/main.js:96 static/main.js:143 static/main.js:200
|
||||||
|
msgid "A suitcase exist with this name exist in the trash."
|
||||||
|
msgstr "Une valise portant ce nom existe déjà dans la corbeille."
|
||||||
|
|
||||||
|
#: static/main.js:101
|
||||||
|
msgid "This suitcase already exist!"
|
||||||
|
msgstr "Cette valise existe déjà !"
|
||||||
|
|
||||||
|
#: static/main.js:135
|
||||||
|
msgid "You have to enter the new name of the suitcase!"
|
||||||
|
msgstr "Vous devez saisir le nouveau nom de la valise !"
|
||||||
|
|
||||||
|
#: static/main.js:149 static/main.js:206
|
||||||
|
msgid "A suitcase with this name already exist!"
|
||||||
|
msgstr "Une valise portant ce nom existe déjà !"
|
||||||
|
|
||||||
|
#: static/main.js:164
|
||||||
|
msgid "An error occurred renaming this suitcase."
|
||||||
|
msgstr "Une erreur est survenue en renommant cette valise."
|
||||||
|
|
||||||
|
#: static/main.js:193
|
||||||
|
msgid "You have to enter the new suitcase name."
|
||||||
|
msgstr "Vous devez saisir le nom de la nouvelle valise."
|
||||||
|
|
||||||
|
#: static/main.js:219
|
||||||
|
msgid "An error occurred copying the suitcase."
|
||||||
|
msgstr "Une erreur est survenue en copiant cette valise."
|
||||||
|
|
||||||
|
#: static/main.js:240
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Reset the %s suitcase"
|
||||||
|
msgstr "Réinitialiser la valise %s"
|
||||||
|
|
||||||
|
#: static/main.js:241
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to reset the suitcase %s?"
|
||||||
|
msgstr "Êtes-vous sûre de vouloir réinitialiser la valise %s ?"
|
||||||
|
|
||||||
|
#: static/main.js:260
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Delete the %s suitcase"
|
||||||
|
msgstr "Supprimer la valise %s"
|
||||||
|
|
||||||
|
#: static/main.js:261
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to delete the suitcase %s?"
|
||||||
|
msgstr "Êtes-vous sûre de vouloir supprimer la valise %s ?"
|
||||||
|
|
||||||
|
#: static/main.js:278
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Restaure the %s suitcase"
|
||||||
|
msgstr "Restaurer la valise %s"
|
||||||
|
|
||||||
|
#: static/main.js:279
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to restaure the suitcase %s?"
|
||||||
|
msgstr "Êtes-vous sûre de vouloir restaurer la valise %s ?"
|
||||||
|
|
||||||
|
#: static/main.js:311
|
||||||
|
msgid "You have to enter the category name!"
|
||||||
|
msgstr "Vous devez saisir le nom de la catégorie !"
|
||||||
|
|
||||||
|
#: static/main.js:320 static/main.js:378
|
||||||
|
msgid "A category with this name already exist in the trash!"
|
||||||
|
msgstr "Une catégorie portant ce nom existe déjà dans la corbeille !"
|
||||||
|
|
||||||
|
#: static/main.js:326
|
||||||
|
msgid "A category with this name already exist!"
|
||||||
|
msgstr "Une catégorie portant ce nom existe déjà !"
|
||||||
|
|
||||||
|
#: static/main.js:366
|
||||||
|
msgid "You have to enter the new name of the category!"
|
||||||
|
msgstr "Vous devez saisir le nouveau nom de la catégorie !"
|
||||||
|
|
||||||
|
#: static/main.js:383
|
||||||
|
msgid "A category with this name already!"
|
||||||
|
msgstr "Une catégorie portant ce nom existe déjà !"
|
||||||
|
|
||||||
|
#: static/main.js:414
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Delete the category %s"
|
||||||
|
msgstr "Supprimer la catégorie %s"
|
||||||
|
|
||||||
|
#: static/main.js:415
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to delete the category %s?"
|
||||||
|
msgstr "Êtes-vous sûre de vouloir supprimer la catégorie %s ?"
|
||||||
|
|
||||||
|
#: static/main.js:433
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Restore the category %s"
|
||||||
|
msgstr "Restaurer la catégorie %s"
|
||||||
|
|
||||||
|
#: static/main.js:434
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to restore the category %s?"
|
||||||
|
msgstr "Êtes-vous sûre de vouloir restaurer la catégorie %s ?"
|
||||||
|
|
||||||
|
#: static/main.js:497
|
||||||
|
msgid "Tow elements can't have the same name!"
|
||||||
|
msgstr "Deux éléments ne peuvent pas porter le même nom !"
|
||||||
|
|
||||||
|
#: static/main.js:505
|
||||||
|
#, javascript-format
|
||||||
|
msgid "The element '%s' already exist!"
|
||||||
|
msgstr "Un élément portant le nom '%s' existe déjà !"
|
||||||
|
|
||||||
|
#: static/main.js:528
|
||||||
|
msgid "You have to enter at least one element name!"
|
||||||
|
msgstr "Vous devez saisir au moins un nom d'élément !"
|
||||||
|
|
||||||
|
#: static/main.js:561
|
||||||
|
msgid "Another?"
|
||||||
|
msgstr "Un autre ?"
|
||||||
|
|
||||||
|
#: static/main.js:566
|
||||||
|
msgid "Nb"
|
||||||
|
msgstr "Nb"
|
||||||
|
|
||||||
|
#: static/main.js:593
|
||||||
|
msgid "You have to enter the new element name!"
|
||||||
|
msgstr "Vous devez saisir le nom du nouvel élément !"
|
||||||
|
|
||||||
|
#: static/main.js:609
|
||||||
|
msgid "An element with this name already exist in the trash!"
|
||||||
|
msgstr "Un élément portant ce nom existe déjà dans la corbeille !"
|
||||||
|
|
||||||
|
#: static/main.js:615
|
||||||
|
msgid "An element with this name already exist!"
|
||||||
|
msgstr "Un élément portant ce nom existe déjà !"
|
||||||
|
|
||||||
|
#: static/main.js:659
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Delete the element %s"
|
||||||
|
msgstr "Supprimer l'élément %s"
|
||||||
|
|
||||||
|
#: static/main.js:660
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to delete the element %s?"
|
||||||
|
msgstr "Êtes-vous sûre de vouloir supprimer l'élément %s ?"
|
||||||
|
|
||||||
|
#: static/main.js:681
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Restore the element %s"
|
||||||
|
msgstr "Restaurer l'élément %s"
|
||||||
|
|
||||||
|
#: static/main.js:682
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to restore the element %s?"
|
||||||
|
msgstr "Êtes-vous sûre de vouloir restaurer l'élément %s ?"
|
||||||
|
|
||||||
|
#: static/main.js:785
|
||||||
|
msgid "Add an element"
|
||||||
|
msgstr "Ajouter un élément"
|
||||||
|
|
||||||
|
#: static/main.js:823 static/main.js:963
|
||||||
|
msgid "Trash"
|
||||||
|
msgstr "Corbeille"
|
||||||
|
|
||||||
|
#: static/main.js:836
|
||||||
|
msgid "The trash is empty."
|
||||||
|
msgstr "La corbeille est vide."
|
||||||
|
|
||||||
|
#: static/main.js:924
|
||||||
|
msgid "Your suitcases"
|
||||||
|
msgstr "Vos valises"
|
||||||
|
|
||||||
|
#: static/main.js:995
|
||||||
|
msgid "No suitcase in the trash."
|
||||||
|
msgstr "Aucune valise dans la corbeille."
|
||||||
|
|
||||||
|
#: static/main.js:1050
|
||||||
|
msgid "Delete all local data"
|
||||||
|
msgstr "Purger les données locales"
|
||||||
|
|
||||||
|
#: static/main.js:1051
|
||||||
|
msgid "Are-you sure you want to delete all local data (irreversible action)?"
|
||||||
|
msgstr ""
|
||||||
|
"Êtes-vous sûre de vouloir supprimer toutes les données locales (action "
|
||||||
|
"irréversible) ?"
|
||||||
|
|
||||||
|
#: static/main.js:1068
|
||||||
|
msgid "Loading example data"
|
||||||
|
msgstr "Charger les données d'exemple"
|
||||||
|
|
||||||
|
#: static/main.js:1070
|
||||||
|
msgid ""
|
||||||
|
"Are-you sure you want to load example data in place of your own local data "
|
||||||
|
"(irreversible action)?"
|
||||||
|
msgstr ""
|
||||||
|
"Êtes-vous sûre de vouloir charger les données d'exemple à la place de vos "
|
||||||
|
"données locales (action irréversible) ?"
|
||||||
|
|
||||||
|
#: static/main.js:1120
|
||||||
|
msgid "Failed to decode JSON file."
|
||||||
|
msgstr "Impossible de décoder le fichier JSON."
|
||||||
|
|
||||||
|
#: static/main.js:1125
|
||||||
|
msgid "Import from file"
|
||||||
|
msgstr "Import depuis un fichier"
|
||||||
|
|
||||||
|
#: static/main.js:1127
|
||||||
|
msgid ""
|
||||||
|
"Are-you sure you want to overwrite your local data with the data from this "
|
||||||
|
"file (irreversible action)?"
|
||||||
|
msgstr ""
|
||||||
|
"Êtes-vous sûre de vouloir écraser vos données locales par celles issues de "
|
||||||
|
"ce fichier (action irréversible) ?"
|
||||||
|
|
||||||
|
#: static/main.js:1134
|
||||||
|
msgid "The file has been imported successfully."
|
||||||
|
msgstr "Le fichier as bien été importé."
|
||||||
|
|
||||||
|
#: static/main.js:1141
|
||||||
|
msgid "An error occurred loading this file. Restoring previous data..."
|
||||||
|
msgstr ""
|
||||||
|
"Une erreur est survenue en chargeant ce fichier. Restauration des données "
|
||||||
|
"précédentes..."
|
||||||
|
|
||||||
|
#: static/main.js:1148 static/main.js:1315
|
||||||
|
msgid "Previous data has been restored successfully."
|
||||||
|
msgstr "Les données précédentes ont bien été restaurées."
|
||||||
|
|
||||||
|
#: static/main.js:1154 static/main.js:1321
|
||||||
|
msgid "An error occurred restoring previous data."
|
||||||
|
msgstr "Une erreur est survenue en restaurant les données précédentes."
|
||||||
|
|
||||||
|
#: static/main.js:1200
|
||||||
|
msgid "You have to enter your username and password!"
|
||||||
|
msgstr "Vous devez saisir votre nom d'utilisateur et votre mot de passe !"
|
||||||
|
|
||||||
|
#: static/main.js:1218
|
||||||
|
msgid "Connected."
|
||||||
|
msgstr "Connecté."
|
||||||
|
|
||||||
|
#: static/main.js:1226
|
||||||
|
msgid "An error occurred logging in. Please try again later."
|
||||||
|
msgstr ""
|
||||||
|
"Une erreur est survenue durant la connexion. Merci de réessayer "
|
||||||
|
"ultérieurement."
|
||||||
|
|
||||||
|
#: static/main.js:1247
|
||||||
|
msgid "Logout"
|
||||||
|
msgstr "Déconnexion"
|
||||||
|
|
||||||
|
#: static/main.js:1248
|
||||||
|
msgid "Do you really want to log out?"
|
||||||
|
msgstr "Voulez-vous vraiment vous déconnecter ?"
|
||||||
|
|
||||||
|
#: static/main.js:1259
|
||||||
|
msgid "Logged out"
|
||||||
|
msgstr "Déconnecté"
|
||||||
|
|
||||||
|
#: static/main.js:1262 static/main.js:1270
|
||||||
|
msgid "An error occurred logging you out. Please try again later."
|
||||||
|
msgstr ""
|
||||||
|
"Une erreur est survenue durant la déconnexion. Merci de réessayer "
|
||||||
|
"ultérieurement."
|
||||||
|
|
||||||
|
#: static/main.js:1303
|
||||||
|
msgid "Data synchronized."
|
||||||
|
msgstr "Données synchronisées."
|
||||||
|
|
||||||
|
#: static/main.js:1308
|
||||||
|
msgid ""
|
||||||
|
"An error occurred loading data from the server. Restoring previous data..."
|
||||||
|
msgstr ""
|
||||||
|
"Une erreur est survenue en chargeant les données depuis le serveur. "
|
||||||
|
"Restauration des données précédentes..."
|
||||||
|
|
||||||
|
#: static/main.js:1331 static/main.js:1353
|
||||||
|
msgid "An error occurred synchronizing your data. Please try again later."
|
||||||
|
msgstr ""
|
||||||
|
"Une erreur est survenue durant la synchronisation de vos données. Merci de "
|
||||||
|
"réessayer ultérieurement."
|
||||||
|
|
||||||
|
#: static/main.js:1345
|
||||||
|
msgid "Your session appears to have expired, please re-authenticate."
|
||||||
|
msgstr "Votre session semble avoir expirée, merci de vous réidentifier."
|
||||||
|
|
||||||
|
#: static/main.js:1372
|
||||||
|
msgid "You must sign in before you can sync your data."
|
||||||
|
msgstr "Vous devez vous connecter avant de synchroniser vos données."
|
||||||
|
|
||||||
|
#: static/main.js:1386
|
||||||
|
msgid "Synchronize your suitcases from server"
|
||||||
|
msgstr "Synchronisation de vos valises avec les serveurs"
|
||||||
|
|
||||||
|
#: static/main.js:1387
|
||||||
|
msgid "Are-you sure you want to synchronize your suitcases from server?"
|
||||||
|
msgstr "Êtes-vous sûre de vouloir synchroniser vos valises avec le serveur ?"
|
||||||
|
|
||||||
|
#: static/main.js:1450
|
||||||
|
msgid "An example of a suitcase?"
|
||||||
|
msgstr "Un exemple de valise ?"
|
||||||
|
|
||||||
|
#: static/main.js:1451
|
||||||
|
msgid "Would you like to load a sample suitcase to get started?"
|
||||||
|
msgstr "Voulez-vous chargeant un exemple de valise pour commencer ?"
|
||||||
|
|
||||||
|
#: static/main.js:1468
|
||||||
|
msgid ""
|
||||||
|
"Your internet browser does not support local data storage. Therefore, "
|
||||||
|
"unfortunately you cannot use this application."
|
||||||
|
msgstr ""
|
||||||
|
"Votre navigateur internet ne semble pas supporter le stockage de données "
|
||||||
|
"locales. Malheureusement, vous ne pouvez donc pas utiliser cette application."
|
||||||
|
|
||||||
|
#: static/main.js:1557
|
||||||
|
msgid "Error loading local data"
|
||||||
|
msgstr "Une erreur est survenue en chargeant les données locales"
|
||||||
|
|
||||||
|
#: static/main.js:1558
|
||||||
|
msgid "An error occurred while loading local data. Should we purge it?"
|
||||||
|
msgstr ""
|
||||||
|
"Une erreur est survenue en chargeant vos données locales. Devons-nous les "
|
||||||
|
"purger ?"
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:10
|
||||||
|
msgid "White paper"
|
||||||
|
msgstr "Papier blanc"
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:11
|
||||||
|
msgid "Pen"
|
||||||
|
msgstr "Stylo"
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:12
|
||||||
|
msgid "ID card/passport"
|
||||||
|
msgstr "Carte d'identité / passeport"
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:18
|
||||||
|
msgid "Watch"
|
||||||
|
msgstr "Montre"
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:19
|
||||||
|
msgid "Watch charger"
|
||||||
|
msgstr "Chargeur montre"
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:20
|
||||||
|
msgid "Laptop"
|
||||||
|
msgstr "PC portable"
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:21
|
||||||
|
msgid "Laptop charger"
|
||||||
|
msgstr "Chargeur PC portable"
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:294
|
||||||
|
#, javascript-format
|
||||||
|
msgid "An error occurred while loading the %s suitcase from the cache."
|
||||||
|
msgstr "Une erreur est survenue en chargeant la valise %s depuis le cache."
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:417
|
||||||
|
msgid "An error occurred while loading the category list from the cache."
|
||||||
|
msgstr ""
|
||||||
|
"Une erreur est survenue en chargeant la liste de catégories depuis le cache."
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:565
|
||||||
|
#, javascript-format
|
||||||
|
msgid "An error occurred while loading the %s category from the cache."
|
||||||
|
msgstr "Une erreur est survenue en chargeant la catégorie %s depuis le cache."
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:636
|
||||||
|
msgid "Error loading your login information. Please log in again."
|
||||||
|
msgstr ""
|
||||||
|
"Erreur en chargeant vos données d'authentification. Merci de vous "
|
||||||
|
"réidentifier."
|
||||||
|
|
||||||
|
#: templates/support_info.tpl:4
|
||||||
|
msgid "Helpdesk page"
|
||||||
|
msgstr "Page d'assistance aux utilisateurs"
|
||||||
|
|
||||||
|
#: templates/support_info.tpl:5
|
||||||
|
msgid ""
|
||||||
|
"Upon request, please download and forward the following information to the "
|
||||||
|
"support service:"
|
||||||
|
msgstr ""
|
||||||
|
"À leur demande, merci de télécharger et transmettre les informations ci-"
|
||||||
|
"dessous au service support :"
|
||||||
|
|
||||||
|
#: templates/support_info.tpl:9
|
||||||
|
msgid "Download"
|
||||||
|
msgstr "Télécharger"
|
||||||
|
|
||||||
|
#: templates/support_info_content.tpl:1
|
||||||
|
msgid "Application URL:"
|
||||||
|
msgstr "URL de l'application :"
|
||||||
|
|
||||||
|
#: templates/support_info_content.tpl:2
|
||||||
|
msgid "Current page URL:"
|
||||||
|
msgstr "URL de la page courante :"
|
||||||
|
|
||||||
|
#: templates/support_info_content.tpl:4
|
||||||
|
msgid "Connected user:"
|
||||||
|
msgstr "Utilisateur connecté :"
|
||||||
|
|
||||||
|
#: templates/support_info_content.tpl:6
|
||||||
|
msgid "Extra user information:"
|
||||||
|
msgstr "Informations supplémentaires de l'utilisateur :"
|
||||||
|
|
||||||
|
#: templates/index.tpl:39 templates/index.tpl:91
|
||||||
|
msgid "Add a suitcase"
|
||||||
|
msgstr "Ajouter une valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:40
|
||||||
|
msgid "Show trash"
|
||||||
|
msgstr "Voir la corbeille"
|
||||||
|
|
||||||
|
#: templates/index.tpl:41
|
||||||
|
msgid "Suitcases list"
|
||||||
|
msgstr "Liste des valises"
|
||||||
|
|
||||||
|
#: templates/index.tpl:43
|
||||||
|
msgid "Manage the suitcase"
|
||||||
|
msgstr "Gérer les valises"
|
||||||
|
|
||||||
|
#: templates/index.tpl:45 templates/index.tpl:157
|
||||||
|
msgid "Add a category"
|
||||||
|
msgstr "Ajouter une catégorie"
|
||||||
|
|
||||||
|
#: templates/index.tpl:47 templates/index.tpl:135
|
||||||
|
msgid "Rename the suitcase"
|
||||||
|
msgstr "Renommer la valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:48 templates/index.tpl:113
|
||||||
|
msgid "Copy the suitcase"
|
||||||
|
msgstr "Copier la valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:49
|
||||||
|
msgid "Reset the suitcase"
|
||||||
|
msgstr "Réinitialiser la valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:50
|
||||||
|
msgid "Delete the suitcase"
|
||||||
|
msgstr "Supprimer la valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:52
|
||||||
|
msgid "Show suitcase's trash"
|
||||||
|
msgstr "Voir la corbeille de la valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:56
|
||||||
|
msgid "Manage data"
|
||||||
|
msgstr "Gérer les données"
|
||||||
|
|
||||||
|
#: templates/index.tpl:58
|
||||||
|
msgid "Backup your data"
|
||||||
|
msgstr "Sauvegarder vos données"
|
||||||
|
|
||||||
|
#: templates/index.tpl:59
|
||||||
|
msgid "Restaure your data"
|
||||||
|
msgstr "Restaurer vos données"
|
||||||
|
|
||||||
|
#: templates/index.tpl:61
|
||||||
|
msgid "Synchronize local data"
|
||||||
|
msgstr "Synchroniser les données locales"
|
||||||
|
|
||||||
|
#: templates/index.tpl:63
|
||||||
|
msgid "Purge local data"
|
||||||
|
msgstr "Purger les données locales"
|
||||||
|
|
||||||
|
#: templates/index.tpl:64
|
||||||
|
msgid "Load example data"
|
||||||
|
msgstr "Charger les données d'exemple"
|
||||||
|
|
||||||
|
#: templates/index.tpl:74
|
||||||
|
msgid "Login"
|
||||||
|
msgstr "Connexion"
|
||||||
|
|
||||||
|
#: templates/index.tpl:96
|
||||||
|
msgid "Suitcase name"
|
||||||
|
msgstr "Nom de la valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:102 templates/index.tpl:168 templates/index.tpl:218
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Ajouter"
|
||||||
|
|
||||||
|
#: templates/index.tpl:118
|
||||||
|
msgid "Name of the new suitcase"
|
||||||
|
msgstr "Nom de la nouvelle valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:124
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "Copier"
|
||||||
|
|
||||||
|
#: templates/index.tpl:140
|
||||||
|
msgid "New suitcase name"
|
||||||
|
msgstr "Nouveau nom de la valise"
|
||||||
|
|
||||||
|
#: templates/index.tpl:146 templates/index.tpl:190
|
||||||
|
msgid "Rename"
|
||||||
|
msgstr "Renommer"
|
||||||
|
|
||||||
|
#: templates/index.tpl:162
|
||||||
|
msgid "Category name"
|
||||||
|
msgstr "Nom de la catégorie"
|
||||||
|
|
||||||
|
#: templates/index.tpl:179
|
||||||
|
msgid "Rename the category"
|
||||||
|
msgstr "Renommer la catégorie"
|
||||||
|
|
||||||
|
#: templates/index.tpl:184
|
||||||
|
msgid "New category's name"
|
||||||
|
msgstr "Nouveau nom de la catégorie"
|
||||||
|
|
||||||
|
#: templates/index.tpl:207 templates/index.tpl:234
|
||||||
|
msgid "Element name"
|
||||||
|
msgstr "Nom de l'élément"
|
||||||
|
|
||||||
|
#: templates/index.tpl:229
|
||||||
|
msgid "Edit the element"
|
||||||
|
msgstr "Modifier l'élément"
|
||||||
|
|
||||||
|
#: templates/index.tpl:241
|
||||||
|
msgid "Modify"
|
||||||
|
msgstr "Modifier"
|
||||||
|
|
||||||
|
#: templates/index.tpl:252 templates/index.tpl:257
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Chargement..."
|
||||||
|
|
||||||
|
#: templates/index.tpl:271
|
||||||
|
msgid "Connection"
|
||||||
|
msgstr "Connexion"
|
||||||
|
|
||||||
|
#: templates/index.tpl:276
|
||||||
|
msgid "Username"
|
||||||
|
msgstr "Nom d'utilisateur"
|
||||||
|
|
||||||
|
#: templates/index.tpl:277
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Mot de passe"
|
||||||
|
|
||||||
|
#: templates/index.tpl:283 templates/index.tpl:326
|
||||||
|
msgid "Connect"
|
||||||
|
msgstr "Connexion"
|
||||||
|
|
||||||
|
#: templates/index.tpl:295
|
||||||
|
msgid "Welcome"
|
||||||
|
msgstr "Bienvenu"
|
||||||
|
|
||||||
|
#: templates/index.tpl:298
|
||||||
|
msgid ""
|
||||||
|
"<p>\n"
|
||||||
|
" This application allows you to manage lists of things not to "
|
||||||
|
"forget to pack in your\n"
|
||||||
|
" suitcase before your departure:\n"
|
||||||
|
" <ul>\n"
|
||||||
|
" <li>\n"
|
||||||
|
" To get started, create a suitcase, add the categories of "
|
||||||
|
"things you will need to\n"
|
||||||
|
" pack, and add all these things to it;\n"
|
||||||
|
" </li>\n"
|
||||||
|
" <li>\n"
|
||||||
|
" Before your departure, you can then gradually check off all "
|
||||||
|
"the things you have\n"
|
||||||
|
" already gathered and ensure you don't forget anything!\n"
|
||||||
|
" </li>\n"
|
||||||
|
" </ul>\n"
|
||||||
|
" </p>\n"
|
||||||
|
" <p>\n"
|
||||||
|
" <strong>Note:</strong> This application has been designed to work "
|
||||||
|
"completely locally.\n"
|
||||||
|
" The data manipulated (your suitcases, etc.) is stored only in your "
|
||||||
|
"internet browser.\n"
|
||||||
|
" It is also possible to export/import this information in JSON "
|
||||||
|
"format.<br/>\n"
|
||||||
|
" However, to facilitate the management of your suitcases from "
|
||||||
|
"multiple devices, it's\n"
|
||||||
|
" possible to synchronize this information on the server. For this, "
|
||||||
|
"you need an account,\n"
|
||||||
|
" and at this time, registrations are not open.\n"
|
||||||
|
" </p>\n"
|
||||||
|
" <p>\n"
|
||||||
|
" If you have an account, you can log in by clicking the <em>Login</"
|
||||||
|
"em> button below.\n"
|
||||||
|
" If not, click the <em>Anonymous usage</em> button to start using "
|
||||||
|
"the application.\n"
|
||||||
|
" </p>"
|
||||||
|
msgstr ""
|
||||||
|
"<p>\n"
|
||||||
|
" Cette application vous permet de gérer des listes de choses à ne pas "
|
||||||
|
"oublier de glisser dans votre valise avant votre départ :\n"
|
||||||
|
" <ul>\n"
|
||||||
|
" <li>Pour commencer, créer une valise, ajouter les catégories de choses "
|
||||||
|
"que vous aurez à y glisser et ajouter y toutes ces choses.</li>\n"
|
||||||
|
" <li>Avant votre départ, vous pourrez alors cocher petit à petit toutes "
|
||||||
|
"les choses que vous aurez déjà réunies et vous asurez de ne rien oublier !</"
|
||||||
|
"li>\n"
|
||||||
|
" </ul>\n"
|
||||||
|
"</p>\n"
|
||||||
|
"<p>\n"
|
||||||
|
" <strong>Note :</strong> Cette application a été conçue pour pouvoir "
|
||||||
|
"fonctionner complètement localement. Les données manipulées (vos "
|
||||||
|
"valises, ...) sont stockés\n"
|
||||||
|
" uniquement dans votre navigateur internet. Il est par ailleurs possible "
|
||||||
|
"d'exporter/importer ces informations au format JSON.<br/>\n"
|
||||||
|
" Cependant, pour faciliter la gestion de vos valises depuis plusieurs "
|
||||||
|
"appareils, il est possible de synchroniser ces informations sur le serveur. "
|
||||||
|
"Pour cela,\n"
|
||||||
|
" il vous faut un compte et à ce jour, les inscriptions ne sont pas "
|
||||||
|
"ouvertes.\n"
|
||||||
|
"</p>\n"
|
||||||
|
"<p>\n"
|
||||||
|
" Si vous disposez d'un compte, vous pouvez vous connecter en cliquant sur "
|
||||||
|
"le bouton <em>Connexion</em> ci-dessous.\n"
|
||||||
|
" À défaut, cliquer sur le bouton <em>Utilisation annonyme</em> pour "
|
||||||
|
"commencer à utiliser l'application.\n"
|
||||||
|
"</p>"
|
||||||
|
|
||||||
|
#: templates/index.tpl:327
|
||||||
|
msgid "Anonymous usage"
|
||||||
|
msgstr "Utilisation annonyme"
|
597
locales/messages.pot
Normal file
597
locales/messages.pot
Normal file
|
@ -0,0 +1,597 @@
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"POT-Creation-Date: 2024-09-22 16:25+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-09-22 16:25+0000\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/Auth/API.php:49
|
||||||
|
msgid "Invalid username or password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Auth/API.php:56
|
||||||
|
msgid "Invalid authentication token."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Auth/API.php:58
|
||||||
|
msgid "Authentication token expired."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Auth/API.php:65
|
||||||
|
msgid "Your account appears to have been deleted."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:27
|
||||||
|
msgid "Confirmation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:29
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:31
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:86
|
||||||
|
msgid "You have to enter the name of the suitcase!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:96 static/main.js:143 static/main.js:200
|
||||||
|
msgid "A suitcase exist with this name exist in the trash."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:101
|
||||||
|
msgid "This suitcase already exist!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:135
|
||||||
|
msgid "You have to enter the new name of the suitcase!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:149 static/main.js:206
|
||||||
|
msgid "A suitcase with this name already exist!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:164
|
||||||
|
msgid "An error occurred renaming this suitcase."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:193
|
||||||
|
msgid "You have to enter the new suitcase name."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:219
|
||||||
|
msgid "An error occurred copying the suitcase."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:240
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Reset the %s suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:241
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to reset the suitcase %s?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:260
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Delete the %s suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:261
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to delete the suitcase %s?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:278
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Restaure the %s suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:279
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to restaure the suitcase %s?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:311
|
||||||
|
msgid "You have to enter the category name!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:320 static/main.js:378
|
||||||
|
msgid "A category with this name already exist in the trash!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:326
|
||||||
|
msgid "A category with this name already exist!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:366
|
||||||
|
msgid "You have to enter the new name of the category!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:383
|
||||||
|
msgid "A category with this name already!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:414
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Delete the category %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:415
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to delete the category %s?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:433
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Restore the category %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:434
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to restore the category %s?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:497
|
||||||
|
msgid "Tow elements can't have the same name!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:505
|
||||||
|
#, javascript-format
|
||||||
|
msgid "The element '%s' already exist!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:528
|
||||||
|
msgid "You have to enter at least one element name!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:561
|
||||||
|
msgid "Another?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:566
|
||||||
|
msgid "Nb"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:593
|
||||||
|
msgid "You have to enter the new element name!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:609
|
||||||
|
msgid "An element with this name already exist in the trash!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:615
|
||||||
|
msgid "An element with this name already exist!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:659
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Delete the element %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:660
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to delete the element %s?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:681
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Restore the element %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:682
|
||||||
|
#, javascript-format
|
||||||
|
msgid "Are-you sure you want to restore the element %s?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:785
|
||||||
|
msgid "Add an element"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:823 static/main.js:963
|
||||||
|
msgid "Trash"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:836
|
||||||
|
msgid "The trash is empty."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:924
|
||||||
|
msgid "Your suitcases"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:995
|
||||||
|
msgid "No suitcase in the trash."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1050
|
||||||
|
msgid "Delete all local data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1051
|
||||||
|
msgid "Are-you sure you want to delete all local data (irreversible action)?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1068
|
||||||
|
msgid "Loading example data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1070
|
||||||
|
msgid ""
|
||||||
|
"Are-you sure you want to load example data in place of your own local data "
|
||||||
|
"(irreversible action)?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1120
|
||||||
|
msgid "Failed to decode JSON file."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1125
|
||||||
|
msgid "Import from file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1127
|
||||||
|
msgid ""
|
||||||
|
"Are-you sure you want to overwrite your local data with the data from this "
|
||||||
|
"file (irreversible action)?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1134
|
||||||
|
msgid "The file has been imported successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1141
|
||||||
|
msgid "An error occurred loading this file. Restoring previous data..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1148 static/main.js:1315
|
||||||
|
msgid "Previous data has been restored successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1154 static/main.js:1321
|
||||||
|
msgid "An error occurred restoring previous data."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1200
|
||||||
|
msgid "You have to enter your username and password!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1218
|
||||||
|
msgid "Connected."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1226
|
||||||
|
msgid "An error occurred logging in. Please try again later."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1247
|
||||||
|
msgid "Logout"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1248
|
||||||
|
msgid "Do you really want to log out?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1259
|
||||||
|
msgid "Logged out"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1262 static/main.js:1270
|
||||||
|
msgid "An error occurred logging you out. Please try again later."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1303
|
||||||
|
msgid "Data synchronized."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1308
|
||||||
|
msgid ""
|
||||||
|
"An error occurred loading data from the server. Restoring previous data..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1331 static/main.js:1353
|
||||||
|
msgid "An error occurred synchronizing your data. Please try again later."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1345
|
||||||
|
msgid "Your session appears to have expired, please re-authenticate."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1372
|
||||||
|
msgid "You must sign in before you can sync your data."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1386
|
||||||
|
msgid "Synchronize your suitcases from server"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1387
|
||||||
|
msgid "Are-you sure you want to synchronize your suitcases from server?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1450
|
||||||
|
msgid "An example of a suitcase?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1451
|
||||||
|
msgid "Would you like to load a sample suitcase to get started?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1468
|
||||||
|
msgid ""
|
||||||
|
"Your internet browser does not support local data storage. Therefore, "
|
||||||
|
"unfortunately you cannot use this application."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1557
|
||||||
|
msgid "Error loading local data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/main.js:1558
|
||||||
|
msgid "An error occurred while loading local data. Should we purge it?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:10
|
||||||
|
msgid "White paper"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:11
|
||||||
|
msgid "Pen"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:12
|
||||||
|
msgid "ID card/passport"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:18
|
||||||
|
msgid "Watch"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:19
|
||||||
|
msgid "Watch charger"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:20
|
||||||
|
msgid "Laptop"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:21
|
||||||
|
msgid "Laptop charger"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:294
|
||||||
|
#, javascript-format
|
||||||
|
msgid "An error occurred while loading the %s suitcase from the cache."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:417
|
||||||
|
msgid "An error occurred while loading the category list from the cache."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:565
|
||||||
|
#, javascript-format
|
||||||
|
msgid "An error occurred while loading the %s category from the cache."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: static/mysc_objects.js:636
|
||||||
|
msgid "Error loading your login information. Please log in again."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/support_info.tpl:4
|
||||||
|
msgid "Helpdesk page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/support_info.tpl:5
|
||||||
|
msgid ""
|
||||||
|
"Upon request, please download and forward the following information to the "
|
||||||
|
"support service:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/support_info.tpl:9
|
||||||
|
msgid "Download"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/support_info_content.tpl:1
|
||||||
|
msgid "Application URL:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/support_info_content.tpl:2
|
||||||
|
msgid "Current page URL:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/support_info_content.tpl:4
|
||||||
|
msgid "Connected user:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/support_info_content.tpl:6
|
||||||
|
msgid "Extra user information:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:39 templates/index.tpl:91
|
||||||
|
msgid "Add a suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:40
|
||||||
|
msgid "Show trash"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:41
|
||||||
|
msgid "Suitcases list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:43
|
||||||
|
msgid "Manage the suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:45 templates/index.tpl:157
|
||||||
|
msgid "Add a category"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:47 templates/index.tpl:135
|
||||||
|
msgid "Rename the suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:48 templates/index.tpl:113
|
||||||
|
msgid "Copy the suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:49
|
||||||
|
msgid "Reset the suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:50
|
||||||
|
msgid "Delete the suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:52
|
||||||
|
msgid "Show suitcase's trash"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:56
|
||||||
|
msgid "Manage data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:58
|
||||||
|
msgid "Backup your data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:59
|
||||||
|
msgid "Restaure your data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:61
|
||||||
|
msgid "Synchronize local data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:63
|
||||||
|
msgid "Purge local data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:64
|
||||||
|
msgid "Load example data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:74
|
||||||
|
msgid "Login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:96
|
||||||
|
msgid "Suitcase name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:102 templates/index.tpl:168 templates/index.tpl:218
|
||||||
|
msgid "Add"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:118
|
||||||
|
msgid "Name of the new suitcase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:124
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:140
|
||||||
|
msgid "New suitcase name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:146 templates/index.tpl:190
|
||||||
|
msgid "Rename"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:162
|
||||||
|
msgid "Category name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:179
|
||||||
|
msgid "Rename the category"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:184
|
||||||
|
msgid "New category's name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:207 templates/index.tpl:234
|
||||||
|
msgid "Element name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:229
|
||||||
|
msgid "Edit the element"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:241
|
||||||
|
msgid "Modify"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:252 templates/index.tpl:257
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:271
|
||||||
|
msgid "Connection"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:276
|
||||||
|
msgid "Username"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:277
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:283 templates/index.tpl:326
|
||||||
|
msgid "Connect"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:295
|
||||||
|
msgid "Welcome"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:298
|
||||||
|
msgid ""
|
||||||
|
"<p>\n"
|
||||||
|
" This application allows you to manage lists of things not to "
|
||||||
|
"forget to pack in your\n"
|
||||||
|
" suitcase before your departure:\n"
|
||||||
|
" <ul>\n"
|
||||||
|
" <li>\n"
|
||||||
|
" To get started, create a suitcase, add the categories of "
|
||||||
|
"things you will need to\n"
|
||||||
|
" pack, and add all these things to it;\n"
|
||||||
|
" </li>\n"
|
||||||
|
" <li>\n"
|
||||||
|
" Before your departure, you can then gradually check off all "
|
||||||
|
"the things you have\n"
|
||||||
|
" already gathered and ensure you don't forget anything!\n"
|
||||||
|
" </li>\n"
|
||||||
|
" </ul>\n"
|
||||||
|
" </p>\n"
|
||||||
|
" <p>\n"
|
||||||
|
" <strong>Note:</strong> This application has been designed to work "
|
||||||
|
"completely locally.\n"
|
||||||
|
" The data manipulated (your suitcases, etc.) is stored only in your "
|
||||||
|
"internet browser.\n"
|
||||||
|
" It is also possible to export/import this information in JSON "
|
||||||
|
"format.<br/>\n"
|
||||||
|
" However, to facilitate the management of your suitcases from "
|
||||||
|
"multiple devices, it's\n"
|
||||||
|
" possible to synchronize this information on the server. For this, "
|
||||||
|
"you need an account,\n"
|
||||||
|
" and at this time, registrations are not open.\n"
|
||||||
|
" </p>\n"
|
||||||
|
" <p>\n"
|
||||||
|
" If you have an account, you can log in by clicking the <em>Login</"
|
||||||
|
"em> button below.\n"
|
||||||
|
" If not, click the <em>Anonymous usage</em> button to start using "
|
||||||
|
"the application.\n"
|
||||||
|
" </p>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/index.tpl:327
|
||||||
|
msgid "Anonymous usage"
|
||||||
|
msgstr ""
|
301
static/main.js
301
static/main.js
|
@ -24,11 +24,11 @@ alertify.defaults = {
|
||||||
// language resources
|
// language resources
|
||||||
glossary: {
|
glossary: {
|
||||||
// Dialog title text
|
// Dialog title text
|
||||||
title: "Confirmation",
|
title: _("Confirmation"),
|
||||||
// ok button text
|
// ok button text
|
||||||
ok: "OK",
|
ok: _("OK"),
|
||||||
// cancel button text
|
// cancel button text
|
||||||
cancel: "Annuler",
|
cancel: _("Cancel"),
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
// class name attached to prompt dialog input textbox.
|
// class name attached to prompt dialog input textbox.
|
||||||
|
@ -82,19 +82,23 @@ on_valid_add_scase_modal = function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var name = $("#add_scase_name")[0].value;
|
var name = $("#add_scase_name")[0].value;
|
||||||
if (name == "") {
|
if (name == "") {
|
||||||
alertify.notify("Vous devez saisir le nom de la valise !", "error", 5);
|
alertify.notify(
|
||||||
|
_("You have to enter the name of the suitcase!"),
|
||||||
|
"error",
|
||||||
|
5
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var nameshake = scases.byName(name);
|
var nameshake = scases.byName(name);
|
||||||
if (nameshake) {
|
if (nameshake) {
|
||||||
if (nameshake.removed) {
|
if (nameshake.removed) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une valise de ce nom existe dans la corbeille !",
|
_("A suitcase exist with this name exist in the trash."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify("Cette valise existe déjà !", "error", 5);
|
alertify.notify(_("This suitcase already exist!"), "error", 5);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -129,7 +133,7 @@ on_valid_rename_scase_modal = function (e) {
|
||||||
var name = $("#rename_scase_name")[0].value;
|
var name = $("#rename_scase_name")[0].value;
|
||||||
if (name == "") {
|
if (name == "") {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Vous devez saisir le nouveau nom de la valise !",
|
_("You have to enter the new name of the suitcase!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -140,12 +144,16 @@ on_valid_rename_scase_modal = function (e) {
|
||||||
if (nameshake) {
|
if (nameshake) {
|
||||||
if (nameshake.removed) {
|
if (nameshake.removed) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une valise portant ce nom existe dans la corbeille !",
|
_("A suitcase exist with this name exist in the trash."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify("Une valise portant ce nom existe déjà !", "error", 5);
|
alertify.notify(
|
||||||
|
_("A suitcase with this name already exist!"),
|
||||||
|
"error",
|
||||||
|
5
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -157,7 +165,7 @@ on_valid_rename_scase_modal = function (e) {
|
||||||
auto_sync_local_data();
|
auto_sync_local_data();
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en renomant la valise...",
|
_("An error occurred renaming this suitcase."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -186,23 +194,23 @@ on_valid_copy_scase_modal = function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var name = $("#copy_scase_name")[0].value;
|
var name = $("#copy_scase_name")[0].value;
|
||||||
if (name == "") {
|
if (name == "") {
|
||||||
alertify.notify(
|
alertify.notify(_("You have to enter the new suitcase name."), "error", 5);
|
||||||
"Vous devez saisir le nom de la nouvelle valise !",
|
|
||||||
"error",
|
|
||||||
5
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var nameshake = scases.byName(name);
|
var nameshake = scases.byName(name);
|
||||||
if (nameshake) {
|
if (nameshake) {
|
||||||
if (nameshake.removed) {
|
if (nameshake.removed) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une valise portant ce nom existe dans la corbeille !",
|
_("A suitcase exist with this name exist in the trash."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify("Une valise portant ce nom existe déjà !", "error", 5);
|
alertify.notify(
|
||||||
|
_("A suitcase with this name already exist!"),
|
||||||
|
"error",
|
||||||
|
5
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -212,11 +220,7 @@ on_valid_copy_scase_modal = function (e) {
|
||||||
show_scase(scase);
|
show_scase(scase);
|
||||||
auto_sync_local_data();
|
auto_sync_local_data();
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(_("An error occurred copying the suitcase."), "error", 5);
|
||||||
"Une erreur est survenue en copiant la valise...",
|
|
||||||
"error",
|
|
||||||
5
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
$("#copy_scase_modal").modal("hide");
|
$("#copy_scase_modal").modal("hide");
|
||||||
};
|
};
|
||||||
|
@ -237,8 +241,8 @@ on_reset_scase_btn_click = function (event) {
|
||||||
var scase = scases.byName($("#cats").data("scase"));
|
var scase = scases.byName($("#cats").data("scase"));
|
||||||
if (scase) {
|
if (scase) {
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
`Réinitialisation de la valise ${scase.name}`,
|
_("Reset the %s suitcase", scase.name),
|
||||||
`Voulez-vous vraiment réinitialiser la valise ${scase.name} ?`,
|
_("Are-you sure you want to reset the suitcase %s?", scase.name),
|
||||||
function (data) {
|
function (data) {
|
||||||
scases.resetSCase(scase.name);
|
scases.resetSCase(scase.name);
|
||||||
scases.save();
|
scases.save();
|
||||||
|
@ -257,8 +261,8 @@ on_delete_scase_btn_click = function (event) {
|
||||||
var scase = scases.byName($("#cats").data("scase"));
|
var scase = scases.byName($("#cats").data("scase"));
|
||||||
if (scase) {
|
if (scase) {
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
`Suppression de la valise ${scase.name}`,
|
_("Delete the %s suitcase", scase.name),
|
||||||
`Voulez-vous vraiment supprimer la valise ${scase.name} ?`,
|
_("Are-you sure you want to delete the suitcase %s?", scase.name),
|
||||||
function (data) {
|
function (data) {
|
||||||
scases.removeSCase(scase.name);
|
scases.removeSCase(scase.name);
|
||||||
scases.save();
|
scases.save();
|
||||||
|
@ -275,8 +279,8 @@ on_restore_scase_btn_click = function (event) {
|
||||||
var scase = event.data.scase;
|
var scase = event.data.scase;
|
||||||
if (scase) {
|
if (scase) {
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
`Restauration de la valise ${scase.name}`,
|
_("Restaure the %s suitcase", scase.name),
|
||||||
`Voulez-vous vraiment restaurer la valise ${scase.name} ?`,
|
_("Are-you sure you want to restaure the suitcase %s?", scase.name),
|
||||||
function (data) {
|
function (data) {
|
||||||
scase.restore();
|
scase.restore();
|
||||||
scases.save();
|
scases.save();
|
||||||
|
@ -308,7 +312,7 @@ on_valid_add_cat_modal = function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var name = $("#add_cat_name")[0].value;
|
var name = $("#add_cat_name")[0].value;
|
||||||
if (name == "") {
|
if (name == "") {
|
||||||
alertify.notify("Vous devez saisir le nom de la catégorie !", "error", 5);
|
alertify.notify(_("You have to enter the category name!"), "error", 5);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var scase = scases.byName($("#cats").data("scase"));
|
var scase = scases.byName($("#cats").data("scase"));
|
||||||
|
@ -317,13 +321,13 @@ on_valid_add_cat_modal = function (e) {
|
||||||
if (nameshake) {
|
if (nameshake) {
|
||||||
if (nameshake.removed) {
|
if (nameshake.removed) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une catégorie portant ce nom existe dans la corbeille !",
|
_("A category with this name already exist in the trash!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une catégorie portant ce nom existe déjà !",
|
_("A category with this name already exist!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -363,7 +367,7 @@ on_valid_rename_cat_modal = function (e) {
|
||||||
var name = $("#rename_cat_name")[0].value;
|
var name = $("#rename_cat_name")[0].value;
|
||||||
if (name == "") {
|
if (name == "") {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Vous devez saisir le nouveau nom de la catégorie !",
|
_("You have to enter the new name of the category!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -375,12 +379,12 @@ on_valid_rename_cat_modal = function (e) {
|
||||||
var namesake = scase.cats.byName(name);
|
var namesake = scase.cats.byName(name);
|
||||||
if (namesake.removed) {
|
if (namesake.removed) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une catégorie de se nom existe dans la corbeille !",
|
_("A category with this name already exist in the trash!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify("Cette catégorie existe déjà !", "error", 5);
|
alertify.notify(_("A category with this name already!"), "error", 5);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -411,8 +415,8 @@ on_delete_cat_btn_click = function (event) {
|
||||||
if (scase) {
|
if (scase) {
|
||||||
var cat = event.data.cat.name;
|
var cat = event.data.cat.name;
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
`Suppression de la catégorie ${cat}`,
|
_("Delete the category %s", cat),
|
||||||
`Voulez-vous vraiment supprimer la catégorie ${cat} ?`,
|
_("Are-you sure you want to delete the category %s?", cat),
|
||||||
function (data) {
|
function (data) {
|
||||||
scase.cats.removeCat(cat);
|
scase.cats.removeCat(cat);
|
||||||
scases.save();
|
scases.save();
|
||||||
|
@ -430,8 +434,8 @@ on_restore_cat_btn_click = function (event) {
|
||||||
if (scase) {
|
if (scase) {
|
||||||
var cat = event.data.cat.name;
|
var cat = event.data.cat.name;
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
`Restauration de la catégorie ${cat}`,
|
_("Restore the category %s", cat),
|
||||||
`Voulez-vous vraiment restaurer la catégorie ${cat} ?`,
|
_("Are-you sure you want to restore the category %s?", cat),
|
||||||
function (data) {
|
function (data) {
|
||||||
scase.cats.restoreCat(cat);
|
scase.cats.restoreCat(cat);
|
||||||
scases.save();
|
scases.save();
|
||||||
|
@ -494,7 +498,7 @@ on_valid_add_thing_modal = function (e) {
|
||||||
if (label && label != "") {
|
if (label && label != "") {
|
||||||
if (labels.indexOf(label) > -1) {
|
if (labels.indexOf(label) > -1) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Deux élements ne peuvent porter le même nom !",
|
_("Tow elements can't have the same name!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -502,11 +506,7 @@ on_valid_add_thing_modal = function (e) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (cat.byLabel(label)) {
|
if (cat.byLabel(label)) {
|
||||||
alertify.notify(
|
alertify.notify(_("The element '%s' already exist!"), "error", 5);
|
||||||
"L'élément '" + label + "' existe déjà !",
|
|
||||||
"error",
|
|
||||||
5
|
|
||||||
);
|
|
||||||
error = true;
|
error = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -529,7 +529,7 @@ on_valid_add_thing_modal = function (e) {
|
||||||
}
|
}
|
||||||
if (things.length == 0) {
|
if (things.length == 0) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Vous devez saisir au moins un nom d'élément !",
|
_("You have to enter at least one element name!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -561,10 +561,14 @@ on_add_thing_label_focus = function (event) {
|
||||||
if ($("input.add_thing_label").last()[0] == event.target) {
|
if ($("input.add_thing_label").last()[0] == event.target) {
|
||||||
var new_input_group = $('<div class="form-group add_thing_other"></div>');
|
var new_input_group = $('<div class="form-group add_thing_other"></div>');
|
||||||
var new_input_label = $(
|
var new_input_label = $(
|
||||||
'<input type="text" class="form-control add_thing_label" placeholder="Encore un ?"/>'
|
`<input type="text" class="form-control add_thing_label" placeholder="${_(
|
||||||
|
"Another?"
|
||||||
|
)}"/>`
|
||||||
);
|
);
|
||||||
var new_input_nb = $(
|
var new_input_nb = $(
|
||||||
'<input type="number" class="form-control add_thing_nb" placeholder="Nb"/>'
|
`<input type="number" class="form-control add_thing_nb" placeholder="${_(
|
||||||
|
"Nb"
|
||||||
|
)}"/>`
|
||||||
);
|
);
|
||||||
new_input_group.append(new_input_label);
|
new_input_group.append(new_input_label);
|
||||||
new_input_group.append(" ");
|
new_input_group.append(" ");
|
||||||
|
@ -590,11 +594,7 @@ on_valid_edit_thing_modal = function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var label = $("#edit_thing_label").val();
|
var label = $("#edit_thing_label").val();
|
||||||
if (label == "") {
|
if (label == "") {
|
||||||
alertify.notify(
|
alertify.notify(_("You have to enter the new element name!"), "error", 5);
|
||||||
"Vous devez saisir le nouveau nom de l'élément !",
|
|
||||||
"error",
|
|
||||||
5
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var nb = parseInt($("#edit_thing_nb").val());
|
var nb = parseInt($("#edit_thing_nb").val());
|
||||||
|
@ -610,12 +610,16 @@ on_valid_edit_thing_modal = function (e) {
|
||||||
if (namesake) {
|
if (namesake) {
|
||||||
if (namesake.removed) {
|
if (namesake.removed) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Un élément de ce nom existe dans la corbeille !",
|
_("An element with this name already exist in the trash!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify("Un élément de ce nom existe déjà !", "error", 5);
|
alertify.notify(
|
||||||
|
_("An element with this name already exist!"),
|
||||||
|
"error",
|
||||||
|
5
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -656,8 +660,8 @@ on_delete_thing_btn_click = function (event) {
|
||||||
if (cat) {
|
if (cat) {
|
||||||
var thing = event.data.thing.label;
|
var thing = event.data.thing.label;
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
`Suppression de l'élément ${thing}`,
|
_("Delete the element %s", thing),
|
||||||
`Voulez-vous vraiment supprimer l'élément ${thing} ?`,
|
_("Are-you sure you want to delete the element %s?", thing),
|
||||||
function (data) {
|
function (data) {
|
||||||
cat.removeThing(thing);
|
cat.removeThing(thing);
|
||||||
scases.save();
|
scases.save();
|
||||||
|
@ -678,8 +682,8 @@ on_restore_thing_btn_click = function (event) {
|
||||||
if (cat) {
|
if (cat) {
|
||||||
var thing = event.data.thing.label;
|
var thing = event.data.thing.label;
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
`Restauration de l'élément ${thing}`,
|
_("Restore the element %s", thing),
|
||||||
`Voulez-vous vraiment restaurer l'élément ${thing} ?`,
|
_("Are-you sure you want to restore the element %s?", thing),
|
||||||
function (data) {
|
function (data) {
|
||||||
cat.restoreThing(thing);
|
cat.restoreThing(thing);
|
||||||
scases.save();
|
scases.save();
|
||||||
|
@ -698,7 +702,7 @@ on_restore_thing_btn_click = function (event) {
|
||||||
show_cat = function (scase, cat, displayed) {
|
show_cat = function (scase, cat, displayed) {
|
||||||
var panel = $('<div class="panel panel-default"></div>');
|
var panel = $('<div class="panel panel-default"></div>');
|
||||||
var panel_heading = $('<div class="panel-heading" role="tab"></div>');
|
var panel_heading = $('<div class="panel-heading" role="tab"></div>');
|
||||||
var panel_title = $('<h4 class="panel-title">' + cat.name + " </h4>");
|
var panel_title = $(`<h4 class="panel-title">${cat.name}</h4>`);
|
||||||
panel_title.data("scase", scase);
|
panel_title.data("scase", scase);
|
||||||
panel_title.data("cat", cat);
|
panel_title.data("cat", cat);
|
||||||
panel_title.bind("click", on_title_click);
|
panel_title.bind("click", on_title_click);
|
||||||
|
@ -712,9 +716,7 @@ show_cat = function (scase, cat, displayed) {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
tag.append(
|
tag.append($(`<span class="badge">${stats.done} / ${stats.things}</span>`));
|
||||||
$('<span class="badge">' + stats.done + " / " + stats.things + "</span>")
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var delete_btn = $(
|
var delete_btn = $(
|
||||||
|
@ -739,20 +741,17 @@ show_cat = function (scase, cat, displayed) {
|
||||||
if (displayed) {
|
if (displayed) {
|
||||||
panel_collapse.addClass("in");
|
panel_collapse.addClass("in");
|
||||||
}
|
}
|
||||||
var ul = $('<ul class="list-group" data-cat="' + cat.name + '"></ul>');
|
var ul = $(`<ul class="list-group" data-cat="${cat.name}"></ul>`);
|
||||||
for (idx in cat.things) {
|
for (idx in cat.things) {
|
||||||
if (cat.things[idx].removed) {
|
if (cat.things[idx].removed) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var li = $(
|
var li = $(
|
||||||
'<li class="list-group-item checkable" data-label="' +
|
`<li class="list-group-item checkable" data-label="${cat.things[idx].label}">` +
|
||||||
cat.things[idx].label +
|
`${cat.things[idx].label}</li>`
|
||||||
'">' +
|
|
||||||
cat.things[idx].label +
|
|
||||||
"</li>"
|
|
||||||
);
|
);
|
||||||
if (cat.things[idx].nb > 1) {
|
if (cat.things[idx].nb > 1) {
|
||||||
li.append(" <em>(" + cat.things[idx].nb + ")</em>");
|
li.append(` <em>(${cat.things[idx].nb})</em>`);
|
||||||
}
|
}
|
||||||
if (cat.things[idx].checked) {
|
if (cat.things[idx].checked) {
|
||||||
li.addClass("checked");
|
li.addClass("checked");
|
||||||
|
@ -786,7 +785,9 @@ show_cat = function (scase, cat, displayed) {
|
||||||
ul.append(li);
|
ul.append(li);
|
||||||
}
|
}
|
||||||
var li = $(
|
var li = $(
|
||||||
'<li class="list-group-item"><span class="glyphicon glyphicon-plus-sign"></span> Ajouter un élément</li>'
|
`<li class="list-group-item"><span class="glyphicon glyphicon-plus-sign"></span> ${_(
|
||||||
|
"Add an element"
|
||||||
|
)}</li>`
|
||||||
);
|
);
|
||||||
li.bind("click", on_li_add_click);
|
li.bind("click", on_li_add_click);
|
||||||
ul.append(li);
|
ul.append(li);
|
||||||
|
@ -797,11 +798,8 @@ show_cat = function (scase, cat, displayed) {
|
||||||
|
|
||||||
show_scase = function (scase, display_cat) {
|
show_scase = function (scase, display_cat) {
|
||||||
clear_page(
|
clear_page(
|
||||||
'<h3><span class="glyphicon glyphicon-briefcase" aria-hidden="true"></span> ' +
|
`<h3><span class="glyphicon glyphicon-briefcase" aria-hidden="true"></span> ${scase.name}</h3>` +
|
||||||
scase.name +
|
`<div class="panel-group" id="cats" role="tablist" aria-multiselectable="true" data-scase="${scase.name}"></div>`
|
||||||
'</h3><div class="panel-group" id="cats" role="tablist" aria-multiselectable="true" data-scase="' +
|
|
||||||
scase.name +
|
|
||||||
'"></div>'
|
|
||||||
);
|
);
|
||||||
scase.cats.each(function (idx, cat) {
|
scase.cats.each(function (idx, cat) {
|
||||||
if (cat.removed) {
|
if (cat.removed) {
|
||||||
|
@ -824,11 +822,11 @@ on_back_to_scases_btn_click = function (e) {
|
||||||
*******************/
|
*******************/
|
||||||
show_scase_trash = function (scase, display_cat) {
|
show_scase_trash = function (scase, display_cat) {
|
||||||
clear_page(
|
clear_page(
|
||||||
'<h3><span class="glyphicon glyphicon-trash" aria-hidden="true"></span>' +
|
`<h3><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> ${
|
||||||
scase.name +
|
scase.name
|
||||||
' : Corbeille <button class="btn btn-default btn-xs" id="back_btn"><span class="glyphicon glyphicon-arrow-left"></button></h3><div class="panel-group" id="cats" role="tablist" aria-multiselectable="true" data-scase="' +
|
} - ${_("Trash")}` +
|
||||||
scase.name +
|
' <button class="btn btn-default btn-xs" id="back_btn"><span class="glyphicon glyphicon-arrow-left"></button>' +
|
||||||
'"></div>'
|
`</h3><div class="panel-group" id="cats" role="tablist" aria-multiselectable="true" data-scase="${scase.name}"></div>`
|
||||||
);
|
);
|
||||||
|
|
||||||
$("#content h3 #back_btn").bind("click", { scase: scase }, function (event) {
|
$("#content h3 #back_btn").bind("click", { scase: scase }, function (event) {
|
||||||
|
@ -839,7 +837,7 @@ show_scase_trash = function (scase, display_cat) {
|
||||||
show_cat_trash(scase, cat, cat.name == display_cat);
|
show_cat_trash(scase, cat, cat.name == display_cat);
|
||||||
});
|
});
|
||||||
if ($("#cats .panel").length == 0) {
|
if ($("#cats .panel").length == 0) {
|
||||||
$("#content").append('<p class="center">La corbeille est vide.</p>');
|
$("#content").append(`<p class="center">${_("The trash is empty.")}</p>`);
|
||||||
}
|
}
|
||||||
set_location(scase.name, display_cat, "trash");
|
set_location(scase.name, display_cat, "trash");
|
||||||
show_menu("scase");
|
show_menu("scase");
|
||||||
|
@ -848,7 +846,7 @@ show_scase_trash = function (scase, display_cat) {
|
||||||
show_cat_trash = function (scase, cat, displayed) {
|
show_cat_trash = function (scase, cat, displayed) {
|
||||||
var panel = $('<div class="panel panel-default"></div>');
|
var panel = $('<div class="panel panel-default"></div>');
|
||||||
var panel_heading = $('<div class="panel-heading" role="tab"></div>');
|
var panel_heading = $('<div class="panel-heading" role="tab"></div>');
|
||||||
var panel_title = $('<h4 class="panel-title">' + cat.name + " </h4>");
|
var panel_title = $(`<h4 class="panel-title">${cat.name}</h4>`);
|
||||||
panel_title.data("scase", scase);
|
panel_title.data("scase", scase);
|
||||||
panel_title.data("cat", cat);
|
panel_title.data("cat", cat);
|
||||||
panel_title.data("trash", true);
|
panel_title.data("trash", true);
|
||||||
|
@ -862,7 +860,7 @@ show_cat_trash = function (scase, cat, displayed) {
|
||||||
|
|
||||||
if (cat.removed) {
|
if (cat.removed) {
|
||||||
var stats = cat.stats();
|
var stats = cat.stats();
|
||||||
tag.append($('<span class="badge">' + stats.things + "</span>"));
|
tag.append($(`<span class="badge">${stats.things}</span>`));
|
||||||
|
|
||||||
var restore_btn = $(
|
var restore_btn = $(
|
||||||
'<button class="btn btn-default btn-xs pull-right"><span class="glyphicon glyphicon-ok"></button>'
|
'<button class="btn btn-default btn-xs pull-right"><span class="glyphicon glyphicon-ok"></button>'
|
||||||
|
@ -880,7 +878,7 @@ show_cat_trash = function (scase, cat, displayed) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
panel_title.bind("click", on_title_click);
|
panel_title.bind("click", on_title_click);
|
||||||
tag.append($('<span class="badge">' + deleted_things.length + "</span>"));
|
tag.append($(`<span class="badge">${deleted_things.length}</span>`));
|
||||||
|
|
||||||
var panel_collapse = $(
|
var panel_collapse = $(
|
||||||
'<div class="panel-collapse collapse" role="tabpanel"></div>'
|
'<div class="panel-collapse collapse" role="tabpanel"></div>'
|
||||||
|
@ -888,14 +886,10 @@ show_cat_trash = function (scase, cat, displayed) {
|
||||||
if (displayed) {
|
if (displayed) {
|
||||||
panel_collapse.addClass("in");
|
panel_collapse.addClass("in");
|
||||||
}
|
}
|
||||||
var ul = $('<ul class="list-group" data-cat="' + cat.name + '"></ul>');
|
var ul = $(`<ul class="list-group" data-cat="${cat.name}"></ul>`);
|
||||||
for (idx in deleted_things) {
|
for (idx in deleted_things) {
|
||||||
var li = $(
|
var li = $(
|
||||||
'<li class="list-group-item" data-label="' +
|
`<li class="list-group-item" data-label="${deleted_things[idx].label}">${deleted_things[idx].label}</li>`
|
||||||
deleted_things[idx].label +
|
|
||||||
'">' +
|
|
||||||
deleted_things[idx].label +
|
|
||||||
"</li>"
|
|
||||||
);
|
);
|
||||||
var li_actions = $('<span class="actions pull-right"></span>');
|
var li_actions = $('<span class="actions pull-right"></span>');
|
||||||
|
|
||||||
|
@ -930,7 +924,9 @@ on_back_to_scase_btn_click = function (e) {
|
||||||
* Show scases
|
* Show scases
|
||||||
*******************/
|
*******************/
|
||||||
show_scases = function () {
|
show_scases = function () {
|
||||||
clear_page('<h3>Vos valises</h3><ul class="list-group" id="scases"></ul>');
|
clear_page(
|
||||||
|
`<h3>${_("Your suitcases")}</h3><ul class="list-group" id="scases"></ul>`
|
||||||
|
);
|
||||||
scases.each(function (idx, scase) {
|
scases.each(function (idx, scase) {
|
||||||
if (scase.removed) {
|
if (scase.removed) {
|
||||||
return;
|
return;
|
||||||
|
@ -941,19 +937,14 @@ show_scases = function () {
|
||||||
tag +=
|
tag +=
|
||||||
'<span class="label label-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></span>';
|
'<span class="label label-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></span>';
|
||||||
} else {
|
} else {
|
||||||
tag +=
|
tag += `<span class="badge">${stats.done} / ${stats.things}</span>`;
|
||||||
'<span class="badge">' + stats.done + " / " + stats.things + "</span>";
|
|
||||||
}
|
}
|
||||||
tag += "</span>";
|
tag += "</span>";
|
||||||
|
|
||||||
var li = $(
|
var li = $(
|
||||||
'<li class="list-group-item" data-name="' +
|
`<li class="list-group-item" data-name="${scase.name}"><span class="scase-name">` +
|
||||||
scase.name +
|
'<span class="glyphicon glyphicon-briefcase" aria-hidden="true"></span> ' +
|
||||||
'"><span class="scase-name"><span class="glyphicon glyphicon-briefcase" aria-hidden="true"></span> ' +
|
`${scase.name}</span>${tag}</li>`
|
||||||
scase.name +
|
|
||||||
"</span>" +
|
|
||||||
tag +
|
|
||||||
"</li>"
|
|
||||||
);
|
);
|
||||||
li.bind("click", on_scase_click);
|
li.bind("click", on_scase_click);
|
||||||
$("#scases").append(li);
|
$("#scases").append(li);
|
||||||
|
@ -973,7 +964,9 @@ on_scase_click = function (event) {
|
||||||
*******************/
|
*******************/
|
||||||
show_scases_trash = function () {
|
show_scases_trash = function () {
|
||||||
clear_page(
|
clear_page(
|
||||||
'<h3>Corbeille <button class="btn btn-default btn-xs" id="back_btn"><span class="glyphicon glyphicon-arrow-left"></button></h3><ul class="list-group" id="scases"></ul>'
|
`<h3>${_("Trash")} <button class="btn btn-default btn-xs" id="back_btn">` +
|
||||||
|
'<span class="glyphicon glyphicon-arrow-left"></button></h3>' +
|
||||||
|
'<ul class="list-group" id="scases"></ul>'
|
||||||
);
|
);
|
||||||
$("#content h3 #back_btn").bind("click", function (event) {
|
$("#content h3 #back_btn").bind("click", function (event) {
|
||||||
show_scases();
|
show_scases();
|
||||||
|
@ -985,7 +978,7 @@ show_scases_trash = function () {
|
||||||
}
|
}
|
||||||
var stats = scase.stats();
|
var stats = scase.stats();
|
||||||
var tags = $('<span class="count-tag pull-right"></span>');
|
var tags = $('<span class="count-tag pull-right"></span>');
|
||||||
tags.append('<span class="badge">' + stats.things + "</span>");
|
tags.append(`<span class="badge">${stats.things}</span>`);
|
||||||
|
|
||||||
var restore_btn = $(
|
var restore_btn = $(
|
||||||
'<button class="btn btn-default btn-xs pull-right"><span class="glyphicon glyphicon-ok"></button>'
|
'<button class="btn btn-default btn-xs pull-right"><span class="glyphicon glyphicon-ok"></button>'
|
||||||
|
@ -994,18 +987,16 @@ show_scases_trash = function () {
|
||||||
tags.append(restore_btn);
|
tags.append(restore_btn);
|
||||||
|
|
||||||
var li = $(
|
var li = $(
|
||||||
'<li class="list-group-item" data-name="' +
|
`<li class="list-group-item" data-name="${scase.name}"><span class="scase-name">` +
|
||||||
scase.name +
|
'<span class="glyphicon glyphicon-briefcase" aria-hidden="true"></span> ' +
|
||||||
'"><span class="scase-name"><span class="glyphicon glyphicon-briefcase" aria-hidden="true"></span> ' +
|
`${scase.name}</span></li>`
|
||||||
scase.name +
|
|
||||||
"</span></li>"
|
|
||||||
);
|
);
|
||||||
li.append(tags);
|
li.append(tags);
|
||||||
$("#scases").append(li);
|
$("#scases").append(li);
|
||||||
});
|
});
|
||||||
if ($("#scases li").length == 0) {
|
if ($("#scases li").length == 0) {
|
||||||
$("#content").append(
|
$("#content").append(
|
||||||
'<p class="center">Aucune valise dans la corbeille.</p>'
|
`<p class="center">${_("No suitcase in the trash.")}</p>`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
show_menu("scases");
|
show_menu("scases");
|
||||||
|
@ -1030,7 +1021,7 @@ clear_page = function (new_content) {
|
||||||
***********************/
|
***********************/
|
||||||
show_menu = function (menu) {
|
show_menu = function (menu) {
|
||||||
$(".menu").css("display", "none");
|
$(".menu").css("display", "none");
|
||||||
$(".menu-" + menu).css("display", "block");
|
$(`.menu-${menu}`).css("display", "block");
|
||||||
};
|
};
|
||||||
|
|
||||||
/*******************
|
/*******************
|
||||||
|
@ -1060,8 +1051,8 @@ navbar_collapse_hide = function () {
|
||||||
clear_local_data = function () {
|
clear_local_data = function () {
|
||||||
navbar_collapse_hide();
|
navbar_collapse_hide();
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
"Suppression de toutes les données locales",
|
_("Delete all local data"),
|
||||||
"Etes-vous sûre de vouloir supprimer les données locales (action irréversible) ?",
|
_("Are-you sure you want to delete all local data (irreversible action)?"),
|
||||||
on_confirm_clear_local_data,
|
on_confirm_clear_local_data,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
@ -1078,8 +1069,10 @@ on_confirm_clear_local_data = function (data) {
|
||||||
load_example_data = function () {
|
load_example_data = function () {
|
||||||
navbar_collapse_hide();
|
navbar_collapse_hide();
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
"Chargement des données d'exemple",
|
_("Loading example data"),
|
||||||
"Etes-vous sûre de vouloir charger les données d'exemple à la place de vos propres données (action irréversible) ?",
|
_(
|
||||||
|
"Are-you sure you want to load example data in place of your own local data (irreversible action)?"
|
||||||
|
),
|
||||||
function () {
|
function () {
|
||||||
delete localStorage.scases;
|
delete localStorage.scases;
|
||||||
scases = new SCaseList();
|
scases = new SCaseList();
|
||||||
|
@ -1098,7 +1091,7 @@ export_local_data = function () {
|
||||||
navbar_collapse_hide();
|
navbar_collapse_hide();
|
||||||
$("#export_local_data").attr(
|
$("#export_local_data").attr(
|
||||||
"href",
|
"href",
|
||||||
"data:application/json;base64," + btoa(JSON.stringify(scases.export()))
|
`data:application/json;base64,${btoa(JSON.stringify(scases.export()))}`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1128,33 +1121,41 @@ import_local_data = function () {
|
||||||
data = JSON.parse(json_data);
|
data = JSON.parse(json_data);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
pleaseWaitHide();
|
pleaseWaitHide();
|
||||||
alertify.notify("Impossible de décodé le fichier.", "error", 5);
|
alertify.notify(_("Failed to decode JSON file."), "error", 5);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pleaseWaitHide();
|
pleaseWaitHide();
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
"Importation depuis un fichier",
|
_("Import from file"),
|
||||||
"Etes-vous sûre de vouloir écraser vos données locales par celle issues de ce fichier ?",
|
_(
|
||||||
|
"Are-you sure you want to overwrite your local data with the data from this file (irreversible action)?"
|
||||||
|
),
|
||||||
function () {
|
function () {
|
||||||
var backData = scases.export();
|
var backData = scases.export();
|
||||||
scases = new SCaseList();
|
scases = new SCaseList();
|
||||||
if (scases.loadFromJsonData(data)) {
|
if (scases.loadFromJsonData(data)) {
|
||||||
alertify.notify("Le fichier a bien été importé.", "success", 3);
|
alertify.notify(
|
||||||
|
_("The file has been imported successfully."),
|
||||||
|
"success",
|
||||||
|
3
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en chargeant ce fichier. Restauration des données précédentes...",
|
_(
|
||||||
|
"An error occurred loading this file. Restoring previous data..."
|
||||||
|
),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
if (scases.loadFromJsonData(backData)) {
|
if (scases.loadFromJsonData(backData)) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Les données précédentes ont bien été restaurées.",
|
_("Previous data has been restored successfully."),
|
||||||
"success",
|
"success",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en restaurant les données précédentes.",
|
_("An error occurred restoring previous data."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1200,7 +1201,7 @@ on_valid_login_modal = function (e) {
|
||||||
var password = $("#login_password").val();
|
var password = $("#login_password").val();
|
||||||
if (!username || !password) {
|
if (!username || !password) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Vous devez saisir votre nom d'utilisateur et votre mot de passe !",
|
_("You have to enter your username and password!"),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1218,15 +1219,15 @@ on_valid_login_modal = function (e) {
|
||||||
user.save();
|
user.save();
|
||||||
$("#login_modal").modal("hide");
|
$("#login_modal").modal("hide");
|
||||||
show_user();
|
show_user();
|
||||||
alertify.notify("Connecté.", "success", 3);
|
alertify.notify(_("Connected."), "success", 3);
|
||||||
propose_sync_local_data();
|
propose_sync_local_data();
|
||||||
} else {
|
} else {
|
||||||
alertify.notify("Nom d'utilisateur ou mot de passe.", "error", 5);
|
alertify.notify(_("Invalid username or password."), "error", 5);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.fail(function () {
|
.fail(function () {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en vous identifiant. Merci de réessayer ultèrieument.",
|
_("An error occurred logging in. Please try again later."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1234,7 +1235,7 @@ on_valid_login_modal = function (e) {
|
||||||
};
|
};
|
||||||
|
|
||||||
on_show_login_modal = function () {
|
on_show_login_modal = function () {
|
||||||
$("#login_username").val(user.username ? user.username : "");
|
$("#login_username").val(user.username || "");
|
||||||
if (user.username) $("#login_password").focus();
|
if (user.username) $("#login_password").focus();
|
||||||
else $("#login_username").focus();
|
else $("#login_username").focus();
|
||||||
};
|
};
|
||||||
|
@ -1247,8 +1248,8 @@ on_logout_button_click = function () {
|
||||||
if (!user.connected()) return;
|
if (!user.connected()) return;
|
||||||
navbar_collapse_hide();
|
navbar_collapse_hide();
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
"Déconnexion",
|
_("Logout"),
|
||||||
"Voulez-vous vraiment vous déconnecter ?",
|
_("Do you really want to log out?"),
|
||||||
function (data) {
|
function (data) {
|
||||||
$.post("logout", {
|
$.post("logout", {
|
||||||
username: user.username,
|
username: user.username,
|
||||||
|
@ -1259,10 +1260,10 @@ on_logout_button_click = function () {
|
||||||
user.reset();
|
user.reset();
|
||||||
user.save();
|
user.save();
|
||||||
show_user();
|
show_user();
|
||||||
alertify.notify("Déconnecté.", "success", 3);
|
alertify.notify(_("Logged out"), "success", 3);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en vous déconnectant. Merci de réessayer ultèrieument.",
|
_("An error occurred logging you out. Please try again later."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1270,7 +1271,7 @@ on_logout_button_click = function () {
|
||||||
})
|
})
|
||||||
.fail(function () {
|
.fail(function () {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en vous déconnectant. Merci de réessayer ultèrieument.",
|
_("An error occurred logging you out. Please try again later."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1303,23 +1304,25 @@ sync_local_data = function (callback) {
|
||||||
scases = new SCaseList();
|
scases = new SCaseList();
|
||||||
if (scases.loadFromJsonData(data)) {
|
if (scases.loadFromJsonData(data)) {
|
||||||
scases.save();
|
scases.save();
|
||||||
alertify.notify("Données synchronisées.", "success", 3);
|
alertify.notify(_("Data synchronized."), "success", 3);
|
||||||
if (callback) callback(true);
|
if (callback) callback(true);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en chargeant les données issues du serveur. Restauration des données précédentes...",
|
_(
|
||||||
|
"An error occurred loading data from the server. Restoring previous data..."
|
||||||
|
),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
if (scases.loadFromJsonData(backData)) {
|
if (scases.loadFromJsonData(backData)) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Les données précédentes ont bien été restaurées.",
|
_("Previous data has been restored successfully."),
|
||||||
"success",
|
"success",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en restaurant les données précédentes.",
|
_("An error occurred restoring previous data."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1328,7 +1331,9 @@ sync_local_data = function (callback) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en synchronisant vos données. Merci de réessayer ultèrieument.",
|
_(
|
||||||
|
"An error occurred synchronizing your data. Please try again later."
|
||||||
|
),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1341,14 +1346,16 @@ sync_local_data = function (callback) {
|
||||||
user.save();
|
user.save();
|
||||||
show_user();
|
show_user();
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Votre session semble avoir expirée, merci de vous réauthentifier.",
|
_("Your session appears to have expired, please re-authenticate."),
|
||||||
"error",
|
"error",
|
||||||
8
|
8
|
||||||
);
|
);
|
||||||
$("#login_modal").modal("show");
|
$("#login_modal").modal("show");
|
||||||
} else {
|
} else {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Une erreur est survenue en synchronisant vos données. Merci de réessayer ultèrieument.",
|
_(
|
||||||
|
"An error occurred synchronizing your data. Please try again later."
|
||||||
|
),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1366,7 +1373,7 @@ on_sync_local_data_btn_click = function () {
|
||||||
navbar_collapse_hide();
|
navbar_collapse_hide();
|
||||||
if (!is_connected()) {
|
if (!is_connected()) {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Vous devez vous connecter avant de pouvoir synchroniser vos données.",
|
_("You must sign in before you can sync your data."),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1380,8 +1387,8 @@ on_sync_local_data_btn_click = function () {
|
||||||
};
|
};
|
||||||
propose_sync_local_data = function () {
|
propose_sync_local_data = function () {
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
"Synchronisation de vos valises depuis le serveur",
|
_("Synchronize your suitcases from server"),
|
||||||
"Voulez-vous synchroniser vos valises depuis le serveur ?",
|
_("Are-you sure you want to synchronize your suitcases from server?"),
|
||||||
function () {
|
function () {
|
||||||
pleaseWaitShow();
|
pleaseWaitShow();
|
||||||
sync_local_data(function (success) {
|
sync_local_data(function (success) {
|
||||||
|
@ -1444,8 +1451,8 @@ on_welcome_annonymous_click = function () {
|
||||||
|
|
||||||
propose_example_data = function () {
|
propose_example_data = function () {
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
"Un exemple de valise ?",
|
_("An example of a suitcase?"),
|
||||||
"Souhaitez-vous charger un exemple de valise pour commencer ?",
|
_("Would you like to load a sample suitcase to get started?"),
|
||||||
function () {
|
function () {
|
||||||
scases.importExampleData();
|
scases.importExampleData();
|
||||||
scases.save();
|
scases.save();
|
||||||
|
@ -1461,7 +1468,9 @@ propose_example_data = function () {
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
if (typeof localStorage === "undefined") {
|
if (typeof localStorage === "undefined") {
|
||||||
alertify.notify(
|
alertify.notify(
|
||||||
"Votre navigateur internet ne support pas le stockage de données locale. Vous ne pouvez donc malheureusment pas utiliser cette application.",
|
_(
|
||||||
|
"Your internet browser does not support local data storage. Therefore, unfortunately you cannot use this application."
|
||||||
|
),
|
||||||
"error",
|
"error",
|
||||||
5
|
5
|
||||||
);
|
);
|
||||||
|
@ -1549,8 +1558,8 @@ $(document).ready(function () {
|
||||||
|
|
||||||
case false:
|
case false:
|
||||||
alertify.confirm(
|
alertify.confirm(
|
||||||
"Erreur en chargeant les données locales",
|
_("Error loading local data"),
|
||||||
"Une erreur est survenue en chargeant les données locales. On les purges ?",
|
_("An error occurred while loading local data. Should we purge it?"),
|
||||||
function (data) {
|
function (data) {
|
||||||
delete localStorage.scases;
|
delete localStorage.scases;
|
||||||
location.reload();
|
location.reload();
|
||||||
|
|
|
@ -7,17 +7,18 @@ function SCaseList() {
|
||||||
Papier: {
|
Papier: {
|
||||||
color: "#f00",
|
color: "#f00",
|
||||||
things: [
|
things: [
|
||||||
{ label: "Papier blanc", nb: 1 },
|
{ label: _("White paper"), nb: 1 },
|
||||||
{ label: "Stylo", nb: 3 },
|
{ label: _("Pen"), nb: 3 },
|
||||||
{ label: "Carte d'identité", nb: 1 },
|
{ label: _("ID card/passport"), nb: 1 },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
Multimédia: {
|
Multimédia: {
|
||||||
color: "#0f0",
|
color: "#0f0",
|
||||||
things: [
|
things: [
|
||||||
{ label: "Montre", nb: 1 },
|
{ label: _("Watch"), nb: 1 },
|
||||||
{ label: "Chargeur montre", nb: 1 },
|
{ label: _("Watch charger"), nb: 1 },
|
||||||
{ label: "PC portable", nb: 1 },
|
{ label: _("Laptop"), nb: 1 },
|
||||||
|
{ label: _("Laptop charger"), nb: 1 },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -281,7 +282,7 @@ function SCase(uuid, name, data) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Contructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
if (jQuery.type(data) == "object") {
|
if (jQuery.type(data) == "object") {
|
||||||
try {
|
try {
|
||||||
|
@ -289,9 +290,10 @@ function SCase(uuid, name, data) {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
alert(
|
alert(
|
||||||
"Une erreur est survenue en chargeant la valise " +
|
_(
|
||||||
this.name +
|
"An error occurred while loading the %s suitcase from the cache.",
|
||||||
" depuis le cache"
|
this.name
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -404,7 +406,7 @@ function CatList(data) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Contructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
if (jQuery.type(data) == "object") {
|
if (jQuery.type(data) == "object") {
|
||||||
try {
|
try {
|
||||||
|
@ -412,7 +414,7 @@ function CatList(data) {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
alert(
|
alert(
|
||||||
"Une erreur est survenue en chargeant la liste de catégorie depuis le cache"
|
_("An error occurred while loading the category list from the cache.")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -551,7 +553,7 @@ function Cat(uuid, name, color, data) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Contructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
if (jQuery.type(data) == "object") {
|
if (jQuery.type(data) == "object") {
|
||||||
try {
|
try {
|
||||||
|
@ -559,9 +561,10 @@ function Cat(uuid, name, color, data) {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
alert(
|
alert(
|
||||||
"Une erreur est survenue en chargeant la catégorie catégorie " +
|
_(
|
||||||
this.name +
|
"An error occurred while loading the %s category from the cache.",
|
||||||
" depuis le cache"
|
this.name
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -630,9 +633,7 @@ function User() {
|
||||||
this.name = data.name;
|
this.name = data.name;
|
||||||
this.token = data.token;
|
this.token = data.token;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
alert(
|
alert(_("Error loading your login information. Please log in again."));
|
||||||
"Erreur en chargeant vos informations de connexion. Merci de vous reconnecter."
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -36,39 +36,43 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse navbar-collapse" id="navbar-top-collapse">
|
<div class="collapse navbar-collapse" id="navbar-top-collapse">
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li class="menu menu-scases"><a href="#add_scase" id="add_scase_btn"><span class="glyphicon glyphicon-plus-sign"></span> Ajouter une valise</a></li>
|
<li class="menu menu-scases"><a href="#add_scase" id="add_scase_btn"><span class="glyphicon glyphicon-plus-sign"></span> {t}Add a suitcase{/t}</a></li>
|
||||||
<li class="menu menu-scases"><a href="#scases_trash" id="scases_trash_btn"><span class="glyphicon glyphicon-trash"></span> Voir la corbeille</a></li>
|
<li class="menu menu-scases"><a href="#scases_trash" id="scases_trash_btn"><span class="glyphicon glyphicon-trash"></span> {t}Show trash{/t}</a></li>
|
||||||
<li class="menu menu-scase"><a href="#scases" id="back_to_scases"><span class="glyphicon glyphicon-briefcase"></span> Liste des valises</a></li>
|
<li class="menu menu-scase"><a href="#scases" id="back_to_scases"><span class="glyphicon glyphicon-briefcase"></span> {t}Suitcases list{/t}</a></li>
|
||||||
<li class="menu menu-scase dropdown">
|
<li class="menu menu-scase dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class='glyphicon glyphicon-tag'></span> Gérer la valise <b class="caret"></b></a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class='glyphicon glyphicon-tag'></span> {t}Manage the suitcase{/t} <b class="caret"></b></a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a href="#add_cat" id="add_cat_btn"><span class="glyphicon glyphicon-plus-sign"></span> Ajouter une catégorie</a></li>
|
<li><a href="#add_cat" id="add_cat_btn"><span class="glyphicon glyphicon-plus-sign"></span> {t}Add a category{/t}</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="#rename_scase" id="rename_scase_btn"><span class="glyphicon glyphicon-edit"></span> Renommer la valise</a></li>
|
<li><a href="#rename_scase" id="rename_scase_btn"><span class="glyphicon glyphicon-edit"></span> {t}Rename the suitcase{/t}</a></li>
|
||||||
<li><a href="#copy_scase" id="copy_scase_btn"><span class="glyphicon glyphicon-duplicate"></span> Copier la valise</a></li>
|
<li><a href="#copy_scase" id="copy_scase_btn"><span class="glyphicon glyphicon-duplicate"></span> {t}Copy the suitcase{/t}</a></li>
|
||||||
<li><a href="#reset_scase" id="reset_scase_btn"><span class="glyphicon glyphicon-cog"></span> Réinitialiser la valise</a></li>
|
<li><a href="#reset_scase" id="reset_scase_btn"><span class="glyphicon glyphicon-cog"></span> {t}Reset the suitcase{/t}</a></li>
|
||||||
<li><a href="#delete_scase" id="delete_scase_btn"><span class="glyphicon glyphicon-trash"></span> Supprimer la valise</a></li>
|
<li><a href="#delete_scase" id="delete_scase_btn"><span class="glyphicon glyphicon-trash"></span> {t}Delete the suitcase{/t}</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="#scase_trash" id="scase_trash_btn"><span class="glyphicon glyphicon-trash"></span> Voir la corbeille de la valise</a></li>
|
<li><a href="#scase_trash" id="scase_trash_btn"><span class="glyphicon glyphicon-trash"></span> {t}Show suitcase's trash{/t}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class='glyphicon glyphicon-hdd'></span> Gérer vos données <b class="caret"></b></a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class='glyphicon glyphicon-hdd'></span> {t}Manage data{/t} <b class="caret"></b></a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a id='export_local_data' href='#' download='mysc_export.json'><span class='glyphicon glyphicon-save'></span> Sauvegarder vos données</a></li>
|
<li><a id='export_local_data' href='#' download='mysc_export.json'><span class='glyphicon glyphicon-save'></span> {t}Backup your data{/t}</a></li>
|
||||||
<li><a id='import_local_data' href='#' download='mysc_export.json'><span class='glyphicon glyphicon-open'></span> Restaurer vos données</a></li>
|
<li><a id='import_local_data' href='#' download='mysc_export.json'><span class='glyphicon glyphicon-open'></span> {t}Restaure your data{/t}</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a id='sync_local_data'><span class='glyphicon glyphicon-refresh'></span> Synchroniser les données locales</a></li>
|
<li><a id='sync_local_data'><span class='glyphicon glyphicon-refresh'></span> {t}Synchronize local data{/t}</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a id='clear_local_data'><span class='glyphicon glyphicon-trash'></span> Purger les données locales</a></li>
|
<li><a id='clear_local_data'><span class='glyphicon glyphicon-trash'></span> {t}Purge local data{/t}</a></li>
|
||||||
<li><a id='load_example_data'><span class='glyphicon glyphicon-trash'></span> Charger les données d'exemple</a></li>
|
<li><a id='load_example_data'><span class='glyphicon glyphicon-trash'></span> {t}Load example data{/t}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class='glyphicon glyphicon-user'></span> <span id="username"></span> <b class="caret"></b></a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||||
|
<span class='glyphicon glyphicon-user'></span>
|
||||||
|
<span id="username"></span>
|
||||||
|
<b class="caret"></b>
|
||||||
|
</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><a id='login' href='#'><span class='glyphicon glyphicon-loging'></span> Connexion</a></li>
|
<li><a id='login' href='#'><span class='glyphicon glyphicon-loging'></span> {t}Login{/t}</a></li>
|
||||||
<li><a id='logout' href='#'><span class='glyphicon glyphicon-logout'></span> Déconnexion</a></li>
|
<li><a id='logout' href='#'><span class='glyphicon glyphicon-logout'></span> {t}Logout{/t}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -84,18 +88,18 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Ajouter une valise</h4>
|
<h4 class="modal-title">{t}Add a suitcase{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form class="form-horizontal" role="form">
|
<form class="form-horizontal" role="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' id='add_scase_name' class="form-control" placeholder="Nom de la valise"/>
|
<input type='text' id='add_scase_name' class="form-control" placeholder="{t}Suitcase name{/t}"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{t}Cancel{/t}</button>
|
||||||
<button type="button" class="btn btn-primary" id='add_scase_submit'>Ajouter</button>
|
<button type="button" class="btn btn-primary" id='add_scase_submit'>{t}Add{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -106,18 +110,18 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Copier une valise</h4>
|
<h4 class="modal-title">{t}Copy the suitcase{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form class="form-horizontal" role="form">
|
<form class="form-horizontal" role="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' id='copy_scase_name' class="form-control" placeholder="Nom de la nouvelle valise"/>
|
<input type='text' id='copy_scase_name' class="form-control" placeholder="{t}Name of the new suitcase{/t}"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{t}Cancel{/t}</button>
|
||||||
<button type="button" class="btn btn-primary" id='copy_scase_submit'>Copier</button>
|
<button type="button" class="btn btn-primary" id='copy_scase_submit'>{t}Copy{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -128,18 +132,18 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Renomer la valise</h4>
|
<h4 class="modal-title">{t}Rename the suitcase{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form class="form-horizontal" role="form">
|
<form class="form-horizontal" role="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' id='rename_scase_name' class="form-control" placeholder="Nom de la nouvelle valise"/>
|
<input type='text' id='rename_scase_name' class="form-control" placeholder="{t}New suitcase name{/t}"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{t}Cancel{/t}</button>
|
||||||
<button type="button" class="btn btn-primary" id='rename_scase_submit'>Renomer</button>
|
<button type="button" class="btn btn-primary" id='rename_scase_submit'>{t}Rename{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -150,18 +154,18 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Ajouter une catégorie</h4>
|
<h4 class="modal-title">{t}Add a category{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form class="form-horizontal" role="form">
|
<form class="form-horizontal" role="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' id='add_cat_name' class="form-control" placeholder="Nom de la catégorie"/>
|
<input type='text' id='add_cat_name' class="form-control" placeholder="{t}Category name{/t}"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{t}Cancel{/t}</button>
|
||||||
<button type="button" class="btn btn-primary" id='add_cat_submit'>Ajouter</button>
|
<button type="button" class="btn btn-primary" id='add_cat_submit'>{t}Add{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -172,18 +176,18 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Renommer une catégorie</h4>
|
<h4 class="modal-title">{t}Rename the category{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form class="form-horizontal" role="form">
|
<form class="form-horizontal" role="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' id='rename_cat_name' class="form-control" placeholder="Nouveau nom de la catégorie"/>
|
<input type='text' id='rename_cat_name' class="form-control" placeholder="{t}New category's name{/t}"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{t}Cancel{/t}</button>
|
||||||
<button type="button" class="btn btn-primary" id='rename_cat_submit'>Renommer</button>
|
<button type="button" class="btn btn-primary" id='rename_cat_submit'>{t}Rename{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -195,23 +199,23 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Ajouter un élément</h4>
|
<h4 class="modal-title">{t}Add an element{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form role="form">
|
<form role="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' class='form-control add_thing_label' placeholder="Nom de l'élément"/>
|
<input type='text' class='form-control add_thing_label' placeholder="{t}Element name{/t}"/>
|
||||||
<input type='number' class='form-control add_thing_nb' placeholder="Nb"/>
|
<input type='number' class='form-control add_thing_nb' placeholder="{t}Nb{/t}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' class='form-control add_thing_label' placeholder="Un autre ?"/>
|
<input type='text' class='form-control add_thing_label' placeholder="{t}Another?{/t}"/>
|
||||||
<input type='number' class='form-control add_thing_nb' placeholder="Nb"/>
|
<input type='number' class='form-control add_thing_nb' placeholder="{t}Nb{/t}"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{t}Cancel{/t}</button>
|
||||||
<button type="button" class="btn btn-primary" id='add_thing_submit'>Ajouter</button>
|
<button type="button" class="btn btn-primary" id='add_thing_submit'>{t}Add{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -222,19 +226,19 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Modifier un élément</h4>
|
<h4 class="modal-title">{t}Edit the element{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form class="form-horizontal" role="form">
|
<form class="form-horizontal" role="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' id='edit_thing_label' class="form-control" placeholder="Nouveau nom de l'élément"/>
|
<input type='text' id='edit_thing_label' class="form-control" placeholder="{t}Element name{/t}"/>
|
||||||
<input type='number' id='edit_thing_nb' class="form-control" placeholder="Nb"/>
|
<input type='number' id='edit_thing_nb' class="form-control" placeholder="{t}Nb{/t}"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{t}Cancel{/t}</button>
|
||||||
<button type="button" class="btn btn-primary" id='edit_thing_submit'>Modifier</button>
|
<button type="button" class="btn btn-primary" id='edit_thing_submit'>{t}Modify{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -245,12 +249,12 @@
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h2 class="modal-title">Chargement...</h2>
|
<h2 class="modal-title">{t}Loading...{/t}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="progress progress-striped active">
|
<div class="progress progress-striped active">
|
||||||
<div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
|
<div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
|
||||||
<span class="sr-only">Chargement...</span>
|
<span class="sr-only">{t}Loading...{/t}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -264,19 +268,19 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Connexion</h4>
|
<h4 class="modal-title">{t}Connection{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form class="form-horizontal" role="form" action="login">
|
<form class="form-horizontal" role="form" action="login">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type='text' id='login_username' class="form-control" placeholder="Nom d'utilisateur" required/>
|
<input type='text' id='login_username' class="form-control" placeholder="{t}Username{/t}" required/>
|
||||||
<input type='password' id='login_password' class="form-control" placeholder="Mot de passe" required/>
|
<input type='password' id='login_password' class="form-control" placeholder="{t}Password{/t}" required/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{t}Cancel{/t}</button>
|
||||||
<button type="button" class="btn btn-primary" id='login_submit'>Connexion</button>
|
<button type="button" class="btn btn-primary" id='login_submit'>{t}Connect{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -288,30 +292,39 @@
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<h4 class="modal-title">Bienvenu</h4>
|
<h4 class="modal-title">{t}Welcome{/t}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<p>
|
{t escape=false}<p>
|
||||||
Cette application vous permet de gérer des listes de choses à ne pas oublier de glisser dans votre valise avant votre départ :
|
This application allows you to manage lists of things not to forget to pack in your
|
||||||
|
suitcase before your departure:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Pour commencer, créer une valise, ajouter les catégories de choses que vous aurez à y glisser et ajouter y toutes ces choses.</li>
|
<li>
|
||||||
<li>Avant votre départ, vous pourrez alors cocher petit à petit toutes les choses que vous aurez déjà réunies et vous asurez de ne rien oublier !</li>
|
To get started, create a suitcase, add the categories of things you will need to
|
||||||
|
pack, and add all these things to it;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Before your departure, you can then gradually check off all the things you have
|
||||||
|
already gathered and ensure you don't forget anything!
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<strong>Note :</strong> Cette application a été conçue pour pouvoir fonctionner complètement localement. Les données manipulées (vos valises, ...) sont stockés
|
<strong>Note:</strong> This application has been designed to work completely locally.
|
||||||
uniquement dans votre navigateur internet. Il est par ailleurs possible d'exporter/importer ces informations au format JSON.<br/>
|
The data manipulated (your suitcases, etc.) is stored only in your internet browser.
|
||||||
Cependant, pour faciliter la gestion de vos valises depuis plusieurs appareils, il est possible de synchroniser ces informations sur le serveur. Pour cela,
|
It is also possible to export/import this information in JSON format.<br/>
|
||||||
il vous faut un compte et à ce jour, les inscriptions ne sont pas ouvertes.
|
However, to facilitate the management of your suitcases from multiple devices, it's
|
||||||
|
possible to synchronize this information on the server. For this, you need an account,
|
||||||
|
and at this time, registrations are not open.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Si vous disposez d'un compte, vous pouvez vous connecter en cliquant sur le bouton <em>Connexion</em> ci-dessous.
|
If you have an account, you can log in by clicking the <em>Login</em> button below.
|
||||||
À défaut, cliquer sur le bouton <em>Utilisation annonyme</em> pour commencer à utiliser l'application.
|
If not, click the <em>Anonymous usage</em> button to start using the application.
|
||||||
</p>
|
</p>{/t}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-primary" id='welcome_connect'>Connexion</button>
|
<button type="button" class="btn btn-primary" id='welcome_connect'>{t}Connect{/t}</button>
|
||||||
<button type="button" class="btn btn-default" id='welcome_annonymous'>Utilisation annonyme</button>
|
<button type="button" class="btn btn-default" id='welcome_annonymous'>{t}Anonymous usage{/t}</button>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
|
@ -323,9 +336,10 @@
|
||||||
<script src="{static_url path="lib/alertify/alertify.min.js"}"></script>
|
<script src="{static_url path="lib/alertify/alertify.min.js"}"></script>
|
||||||
<script src="{static_url path="lib/bootstrap/js/bootstrap.js"}"></script>
|
<script src="{static_url path="lib/bootstrap/js/bootstrap.js"}"></script>
|
||||||
|
|
||||||
<script>
|
<!-- Other libs & JavaScript scripts -->
|
||||||
|
{foreach $js as $path}
|
||||||
</script>
|
<script language="javascript" src="{$path|escape:"quotes"}"></script>
|
||||||
|
{/foreach}
|
||||||
|
|
||||||
<script src="{static_url path="lib/uuid.js"}"></script>
|
<script src="{static_url path="lib/uuid.js"}"></script>
|
||||||
<script src="{static_url path="mysc_objects.js"}"></script>
|
<script src="{static_url path="mysc_objects.js"}"></script>
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{extends file='Tpl:empty.tpl'}
|
{extends file='Tpl:empty.tpl'}
|
||||||
{block name="pagetitle"}{/block}
|
{block name="pagetitle"}{/block}
|
||||||
{block name="content"}
|
{block name="content"}
|
||||||
<h1>Page d'aide à l'assistance utilisateurs</h1>
|
<h1>{t}Helpdesk page{/t}</h1>
|
||||||
<p>À leur demande, merci de télécharger et transmettre les informations ci-dessous au service support :</p>
|
<p>{t}Upon request, please download and forward the following information to the support service:{/t}</p>
|
||||||
<div class="text-center mb-2">
|
<div class="text-center mb-2">
|
||||||
<a href="{$request->current_url}?download" class="btn btn-primary">
|
<a href="{$request->current_url}?download" class="btn btn-primary">
|
||||||
<i class="fa fa-download" aria-hidden="true"></i>
|
<i class="fa fa-download" aria-hidden="true"></i>
|
||||||
Télécharger
|
{t}Download{/t}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<pre class="text-bg-light p-3 copyable">{include file="Tpl:support_info_content.tpl"}</pre>
|
<pre class="text-bg-light p-3 copyable">{include file="Tpl:support_info_content.tpl"}</pre>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
URL de l'application : {$public_root_url}
|
{t}Application URL:{/t} {$public_root_url}
|
||||||
URL de la page consultée : {$public_root_url}/{$request->current_url}
|
{t}Current page URL:{/t} {$public_root_url}/{$request->current_url}
|
||||||
|
|
||||||
Utilisateur connecté : {$auth_user->username}
|
{t}Connected user:{/t} {$auth_user->username}
|
||||||
|
|
||||||
Informations supplémentaires sur l'utilisateur :
|
{t}Extra user information:{/t}
|
||||||
================================================
|
================================================
|
||||||
{var_dump data=$auth_user->info}
|
{var_dump data=$auth_user->info}
|
||||||
|
|
Loading…
Reference in a new issue