Replace Composer package with npm package to handle js languages strings

This commit is contained in:
Bubka 2020-09-30 20:48:42 +02:00
parent f80636ee6e
commit 2d541394cc
11 changed files with 40 additions and 740 deletions

View File

@ -66,7 +66,6 @@ #### Prepare some stuff
php artisan passport:install php artisan passport:install
php artisan storage:link php artisan storage:link
php artisan config:cache php artisan config:cache
php artisan vue-i18n:generate
``` ```
You are ready to go. You are ready to go.

View File

@ -23,7 +23,6 @@
"beyondcode/laravel-dump-server": "^1.0", "beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0", "filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4", "fzaninotto/faker": "^1.4",
"martinlindhe/laravel-vue-i18n-generator": "^0.1.42",
"mockery/mockery": "^1.0", "mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0", "nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^7.5" "phpunit/phpunit": "^7.5"

58
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "76b4fd00e8ddf636583ffb0a3dcc30bb", "content-hash": "f01d597b2ba10db6dcab71530946be5a",
"packages": [ "packages": [
{ {
"name": "appstract/laravel-options", "name": "appstract/laravel-options",
@ -5219,61 +5219,6 @@
], ],
"time": "2020-07-09T08:09:16+00:00" "time": "2020-07-09T08:09:16+00:00"
}, },
{
"name": "martinlindhe/laravel-vue-i18n-generator",
"version": "0.1.46",
"source": {
"type": "git",
"url": "https://github.com/martinlindhe/laravel-vue-i18n-generator.git",
"reference": "ddc52890f0204dff64d25e30c3473332904c6138"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/martinlindhe/laravel-vue-i18n-generator/zipball/ddc52890f0204dff64d25e30c3473332904c6138",
"reference": "ddc52890f0204dff64d25e30c3473332904c6138",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
"illuminate/console": "~5.1.0|~5.2.0|~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|~6.0|~7.0",
"illuminate/support": "~5.1.0|~5.2.0|~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|~6.0|~7.0",
"php": ">=5.5.0"
},
"require-dev": {
"phpunit/phpunit": "~4.7"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"MartinLindhe\\VueInternationalizationGenerator\\GeneratorProvider"
]
}
},
"autoload": {
"psr-4": {
"MartinLindhe\\VueInternationalizationGenerator\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Martin Lindhe",
"email": "martin@ubique.se"
}
],
"description": "Generates a vue-i18n compatible include file from your Laravel translations.",
"homepage": "http://github.com/martinlindhe/laravel-vue-i18n-generator",
"keywords": [
"laravel",
"vue-i18n"
],
"time": "2020-03-10T18:55:52+00:00"
},
{ {
"name": "mockery/mockery", "name": "mockery/mockery",
"version": "1.3.3", "version": "1.3.3",
@ -6012,6 +5957,7 @@
"keywords": [ "keywords": [
"tokenizer" "tokenizer"
], ],
"abandoned": true,
"time": "2019-09-17T06:23:10+00:00" "time": "2019-09-17T06:23:10+00:00"
}, },
{ {

View File

@ -1,93 +0,0 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Laravel translations path
|--------------------------------------------------------------------------
|
| The default path where the translations are stored by Laravel.
| Note: the path will be prepended to point to the App directory.
|
*/
'langPath' => '/resources/lang',
/*
|--------------------------------------------------------------------------
| Laravel translation files
|--------------------------------------------------------------------------
|
| You can choose which translation files to be generated.
| Note: leave this empty for all the translation files to be generated.
|
*/
'langFiles' => [
/*
'pagination',
'passwords'
*/
],
/*
|--------------------------------------------------------------------------
| Excluded files & folders
|--------------------------------------------------------------------------
|
| Exclude translation files, generic files or folders you don't need.
|
*/
'excludes' => [
/*
'validation',
'example.file',
'example-folder',
*/
],
/*
|--------------------------------------------------------------------------
| Output file
|--------------------------------------------------------------------------
|
| The javascript path where I will place the generated file.
| Note: the path will be prepended to point to the App directory.
|
*/
'jsPath' => '/resources/js/langs/',
'jsFile' => '/resources/js/langs/locales.js',
/*
|--------------------------------------------------------------------------
| i18n library
|--------------------------------------------------------------------------
|
| Specify the library you use for localization.
| Options are vue-i18n or vuex-i18n.
|
*/
'i18nLib' => 'vue-i18n',
/*
|--------------------------------------------------------------------------
| Output messages
|--------------------------------------------------------------------------
|
| Specify if the library should show "written to" messages
| after generating json files.
|
*/
'showOutputMessages' => false,
/*
|--------------------------------------------------------------------------
| Escape character
|--------------------------------------------------------------------------
|
| Allows to escape translations strings that should not be treated as a
| variable
|
*/
'escape_char' => '!',
];

36
package-lock.json generated
View File

@ -1076,6 +1076,18 @@
"resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.10.tgz", "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.10.tgz",
"integrity": "sha512-b2+SLF31h32LSepVcXe+BQ63yvbq5qmTCy4KfFogCYm2bn68H5sDWUnX+U7MBqnM2aeEk9M7xSoqGnu+wSdY6w==" "integrity": "sha512-b2+SLF31h32LSepVcXe+BQ63yvbq5qmTCy4KfFogCYm2bn68H5sDWUnX+U7MBqnM2aeEk9M7xSoqGnu+wSdY6w=="
}, },
"@kirschbaum-development/laravel-translations-loader": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@kirschbaum-development/laravel-translations-loader/-/laravel-translations-loader-1.0.2.tgz",
"integrity": "sha512-85FhK4AXZJSgWyjE1wg0+qaT0kL+VYUTY/gk9TmCxPL6qYFW3BXxjQi0pPDr7D6F2X+23s7At7ogf4xK0AEUWw==",
"dev": true,
"requires": {
"klaw-sync": "^6.0.0",
"loader-utils": "^1.1.0",
"lodash": "^4.17.11",
"php-array-parser": "^1.0.1"
}
},
"@mrmlnc/readdir-enhanced": { "@mrmlnc/readdir-enhanced": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
@ -5360,6 +5372,15 @@
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true "dev": true
}, },
"klaw-sync": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
"integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11"
}
},
"laravel-mix": { "laravel-mix": {
"version": "5.0.5", "version": "5.0.5",
"resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-5.0.5.tgz", "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-5.0.5.tgz",
@ -6550,6 +6571,21 @@
"sha.js": "^2.4.8" "sha.js": "^2.4.8"
} }
}, },
"php-array-parser": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/php-array-parser/-/php-array-parser-1.0.1.tgz",
"integrity": "sha512-elnanzvSd/+U2eWD9Hp2MIab6LzWlnp9J+sTrQasDoR6VsWMDa3fDYBS8pojvu3RwPbpgDUHUxV5WGhfJ1NewQ==",
"dev": true,
"requires": {
"php-parser": "^2.0.3"
}
},
"php-parser": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/php-parser/-/php-parser-2.2.0.tgz",
"integrity": "sha1-ZzhPClkz2770C+qwqzHQuMWC/4g=",
"dev": true
},
"picomatch": { "picomatch": {
"version": "2.2.2", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",

View File

@ -10,6 +10,7 @@
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
}, },
"devDependencies": { "devDependencies": {
"@kirschbaum-development/laravel-translations-loader": "^1.0.2",
"cross-env": "^5.2.1", "cross-env": "^5.2.1",
"laravel-mix": "^5.0.5", "laravel-mix": "^5.0.5",
"lodash": "^4.17.20", "lodash": "^4.17.20",

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
import Vue from 'vue' import Vue from 'vue'
import VueInternationalization from 'vue-i18n'; import VueInternationalization from 'vue-i18n';
import Locale from './locales'; import Locale from '@kirschbaum-development/laravel-translations-loader/php!@kirschbaum-development/laravel-translations-loader';
Vue.use(VueInternationalization); Vue.use(VueInternationalization);

View File

@ -1,585 +0,0 @@
export default {
"en": {
"auth": {
"sign_out": "Sign out",
"sign_in": "Sign in",
"register": "Register",
"hello": "Hi {username} !",
"throttle": "Too many login attempts. Please try again in {seconds} seconds.",
"already_authenticated": "Already authenticated",
"confirm": {
"logout": "Are you sure you want to log out?"
},
"forms": {
"name": "Name",
"login": "Login",
"email": "Email",
"password": "Password",
"confirm_password": "Confirm password",
"confirm_new_password": "Confirm new password",
"dont_have_account_yet": "Don't have your account yet?",
"already_register": "Already registered?",
"password_do_not_match": "Password do not match",
"forgot_your_password": "Forgot your password?",
"request_password_reset": "Request a password reset",
"reset_password": "Reset password",
"new_password": "New password",
"current_password": {
"label": "Current password",
"help": "Fill in your current password to confirm that it's you"
},
"change_password": "Change password",
"send_password_reset_link": "Send password reset link",
"change_your_password": "Change your password",
"password_successfully_changed": "Password successfully changed ",
"edit_account": "Edit account",
"profile_saved": "Profile successfully updated!",
"welcome_to_demo_app_use_those_credentials": "Welcome to the 2FAuth demo.<br><br>You can connect using the email address <strong>demo@2fauth.app</strong> and the password <strong>demo</demo>"
}
},
"commons": {
"cancel": "Cancel",
"update": "Update",
"copy_to_clipboard": "Copy to clipboard",
"copied_to_clipboard": "Copied to clipboard",
"profile": "Profile",
"edit": "Edit",
"delete": "Delete",
"save": "Save",
"close": "Close",
"demo_do_not_post_sensitive_data": "This is a demo app, do not post any sensitive data",
"selected": "selected"
},
"errors": {
"resource_not_found": "Resource not found",
"error_occured": "An error occured:",
"already_one_user_registered": "There is already a registered user.",
"cannot_register_more_user": "You cannot register more than one user.",
"refresh": "refresh",
"please": "Please ",
"response": {
"no_valid_otp": "No valid OTP resource in this QR code"
},
"something_wrong_with_server": "Something is wrong with your server",
"Unable_to_decrypt_uri": "Unable to decrypt uri",
"wrong_current_password": "Wrong current password, nothing has changed"
},
"languages": {
"en": "English",
"fr": "French"
},
"pagination": {
"previous": "&laquo; Previous",
"next": "Next &raquo;"
},
"passwords": {
"password": "Passwords must be at least eight characters and match the confirmation.",
"reset": "Your password has been reset!",
"sent": "We have e-mailed your password reset link!",
"token": "This password reset token is invalid.",
"user": "We can't find a user with that e-mail address."
},
"settings": {
"settings": "Settings",
"account": "Account",
"password": "Password",
"options": "Options",
"confirm": [],
"forms": {
"edit_settings": "Edit settings",
"setting_saved": "Settings saved",
"language": {
"label": "Language",
"help": "Change the language used to translate the app interface."
},
"show_token_as_dot": {
"label": "Show generated tokens as dot",
"help": "Replace generated token caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."
},
"close_token_on_copy": {
"label": "Close token after copy",
"help": "Automatically close the popup showing the generated token after it has been copied"
},
"use_basic_qrcode_reader": {
"label": "Use basic qrcode reader",
"help": "If you experiences issues when capturing qrCodes enables this option to switch to a more basic but more reliable qrcode reader"
},
"display_mode": {
"label": "Display mode",
"help": "Choose whether you want accounts to be displayed as a list or as a grid"
},
"grid": "Grid",
"list": "List"
}
},
"twofaccounts": {
"service": "Service",
"account": "Account",
"icon": "Icon",
"new": "New",
"no_account_here": "No 2FA here!",
"add_first_account": "Add your first account",
"use_full_form": "Or use the full form",
"add_one": "Add one",
"manage": "Manage",
"done": "Done",
"forms": {
"service": {
"placeholder": "example.com"
},
"account": {
"placeholder": "John DOE"
},
"new_account": "New account",
"edit_account": "Edit account",
"otp_uri": "OTP Uri",
"hotp_counter": "HOTP Counter",
"scan_qrcode": "Scan a qrcode",
"use_qrcode": {
"val": "Use a qrcode",
"title": "Use a QR code to fill the form magically"
},
"unlock": {
"val": "Unlock",
"title": "Unlock it (at your own risk)"
},
"lock": {
"val": "Lock",
"title": "Lock it"
},
"choose_image": "Choose an image…",
"create": "Create",
"save": "Save",
"test": "Test"
},
"stream": {
"need_grant_permission": "You need to grant camera access permission",
"not_readable": "Fail to load scanner. Is the camera already in use?",
"no_cam_on_device": "No camera on this device",
"secured_context_required": "Secure context required (HTTPS or localhost)",
"https_required": "HTTPS required for camera streaming",
"camera_not_suitable": "Installed cameras are not suitable",
"stream_api_not_supported": "Stream API is not supported in this browser"
},
"confirm": {
"delete": "Are you sure you want to delete this account?",
"cancel": "The account will be lost. Are you sure?"
}
},
"validation": {
"accepted": "The {attribute} must be accepted.",
"active_url": "The {attribute} is not a valid URL.",
"after": "The {attribute} must be a date after {date}.",
"after_or_equal": "The {attribute} must be a date after or equal to {date}.",
"alpha": "The {attribute} may only contain letters.",
"alpha_dash": "The {attribute} may only contain letters, numbers, dashes and underscores.",
"alpha_num": "The {attribute} may only contain letters and numbers.",
"array": "The {attribute} must be an array.",
"before": "The {attribute} must be a date before {date}.",
"before_or_equal": "The {attribute} must be a date before or equal to {date}.",
"between": {
"numeric": "The {attribute} must be between {min} and {max}.",
"file": "The {attribute} must be between {min} and {max} kilobytes.",
"string": "The {attribute} must be between {min} and {max} characters.",
"array": "The {attribute} must have between {min} and {max} items."
},
"boolean": "The {attribute} field must be true or false.",
"confirmed": "The {attribute} confirmation does not match.",
"date": "The {attribute} is not a valid date.",
"date_equals": "The {attribute} must be a date equal to {date}.",
"date_format": "The {attribute} does not match the format {format}.",
"different": "The {attribute} and {other} must be different.",
"digits": "The {attribute} must be {digits} digits.",
"digits_between": "The {attribute} must be between {min} and {max} digits.",
"dimensions": "The {attribute} has invalid image dimensions.",
"distinct": "The {attribute} field has a duplicate value.",
"email": "The {attribute} must be a valid email address.",
"ends_with": "The {attribute} must end with one of the following: {values}",
"exists": "The selected {attribute} is invalid.",
"file": "The {attribute} must be a file.",
"filled": "The {attribute} field must have a value.",
"gt": {
"numeric": "The {attribute} must be greater than {value}.",
"file": "The {attribute} must be greater than {value} kilobytes.",
"string": "The {attribute} must be greater than {value} characters.",
"array": "The {attribute} must have more than {value} items."
},
"gte": {
"numeric": "The {attribute} must be greater than or equal {value}.",
"file": "The {attribute} must be greater than or equal {value} kilobytes.",
"string": "The {attribute} must be greater than or equal {value} characters.",
"array": "The {attribute} must have {value} items or more."
},
"image": "The {attribute} must be an image.",
"in": "The selected {attribute} is invalid.",
"in_array": "The {attribute} field does not exist in {other}.",
"integer": "The {attribute} must be an integer.",
"ip": "The {attribute} must be a valid IP address.",
"ipv4": "The {attribute} must be a valid IPv4 address.",
"ipv6": "The {attribute} must be a valid IPv6 address.",
"json": "The {attribute} must be a valid JSON string.",
"lt": {
"numeric": "The {attribute} must be less than {value}.",
"file": "The {attribute} must be less than {value} kilobytes.",
"string": "The {attribute} must be less than {value} characters.",
"array": "The {attribute} must have less than {value} items."
},
"lte": {
"numeric": "The {attribute} must be less than or equal {value}.",
"file": "The {attribute} must be less than or equal {value} kilobytes.",
"string": "The {attribute} must be less than or equal {value} characters.",
"array": "The {attribute} must not have more than {value} items."
},
"max": {
"numeric": "The {attribute} may not be greater than {max}.",
"file": "The {attribute} may not be greater than {max} kilobytes.",
"string": "The {attribute} may not be greater than {max} characters.",
"array": "The {attribute} may not have more than {max} items."
},
"mimes": "The {attribute} must be a file of type: {values}.",
"mimetypes": "The {attribute} must be a file of type: {values}.",
"min": {
"numeric": "The {attribute} must be at least {min}.",
"file": "The {attribute} must be at least {min} kilobytes.",
"string": "The {attribute} must be at least {min} characters.",
"array": "The {attribute} must have at least {min} items."
},
"not_in": "The selected {attribute} is invalid.",
"not_regex": "The {attribute} format is invalid.",
"numeric": "The {attribute} must be a number.",
"present": "The {attribute} field must be present.",
"regex": "The {attribute} format is invalid.",
"required": "The {attribute} field is required.",
"required_if": "The {attribute} field is required when {other} is {value}.",
"required_unless": "The {attribute} field is required unless {other} is in {values}.",
"required_with": "The {attribute} field is required when {values} is present.",
"required_with_all": "The {attribute} field is required when {values} are present.",
"required_without": "The {attribute} field is required when {values} is not present.",
"required_without_all": "The {attribute} field is required when none of {values} are present.",
"same": "The {attribute} and {other} must match.",
"size": {
"numeric": "The {attribute} must be {size}.",
"file": "The {attribute} must be {size} kilobytes.",
"string": "The {attribute} must be {size} characters.",
"array": "The {attribute} must contain {size} items."
},
"starts_with": "The {attribute} must start with one of the following: {values}",
"string": "The {attribute} must be a string.",
"timezone": "The {attribute} must be a valid zone.",
"unique": "The {attribute} has already been taken.",
"uploaded": "The {attribute} failed to upload.",
"url": "The {attribute} format is invalid.",
"uuid": "The {attribute} must be a valid UUID.",
"custom": {
"attribute-name": {
"rule-name": "custom-message"
},
"icon": {
"image": "Supported format are jpeg, png, bmp, gif, svg, or webp"
},
"qrcode": {
"image": "Supported format are jpeg, png, bmp, gif, svg, or webp"
},
"uri": {
"starts_with": "Only valid OTP uri are supported"
},
"email": {
"exists": "No account found using this email"
}
},
"attributes": []
}
},
"fr": {
"auth": {
"sign_out": "Déconnexion",
"sign_in": "Se connecter",
"register": "Créer un compte",
"hello": "Hi {username} !",
"throttle": "Trop de tentatives de connexion. Veuillez réessayer dans {seconds} secondes.",
"already_authenticated": "Déjà authentifié",
"confirm": {
"logout": "Etes-vous sûrs de vouloir vous déconnecter ?"
},
"forms": {
"name": "Nom",
"login": "Connexion",
"email": "Email",
"password": "Mot de passe",
"confirm_password": "Confirmez le mot de passe",
"confirm_new_password": "Confirmez le nouveau mot de passe",
"dont_have_account_yet": "Pas encore de compte ?",
"already_register": "Déjà enregistré ?",
"password_do_not_match": "Le mot de passe ne correspond pas",
"forgot_your_password": "Mot de passe oublié ?",
"request_password_reset": "Réinitialiser le mot de passe",
"reset_password": "Mot de passe oublié",
"new_password": "Nouveau mot de passe",
"current_password": {
"label": "Mot de passe actuel",
"help": "Indiquez votre mot de passe actuel pour confirmer qu'il s'agit bien de vous"
},
"change_password": "Modifier le mot de passe",
"send_password_reset_link": "Envoyer",
"change_your_password": "Modifier votre mot de passe",
"password_successfully_changed": "Mot de passe modifié avec succès",
"edit_account": "Mis à jour du profil",
"profile_saved": "Profil mis à jour avec succès !",
"welcome_to_demo_app_use_those_credentials": "bienvenue sur la démo de 2FAuth.<br><br>Vous pouvez vous connecter en utilisant l'adresse email <strong>demo@2fauth.app</strong> et le mot de passe <strong>demo</demo>"
}
},
"commons": {
"cancel": "Annuler",
"update": "Mettre à jour",
"copy_to_clipboard": "Copier",
"copied_to_clipboard": "Copié dans le presse-papier",
"profile": "Profil",
"edit": "Modifier",
"delete": "Supprimer",
"save": "Enregistrer",
"close": "Fermer",
"demo_do_not_post_sensitive_data": "Site de démonstration, ne postez aucune donnée sensible",
"selected": "selectionné(s)"
},
"errors": {
"resource_not_found": "Ressource introuvable",
"error_occured": "Une erreur est survenue :",
"already_one_user_registered": "Un compte utilisateur existe déjà.",
"cannot_register_more_user": "Vous ne pouvez pas enregistrer plus d'un utilisateur.",
"refresh": "Actualiser",
"please": "",
"response": {
"no_valid_otp": "Aucune donnée OTP valide dans ce QR code"
},
"something_wrong_with_server": "Il y a un problème avec votre serveur",
"Unable_to_decrypt_uri": "uri impossible à décoder",
"wrong_current_password": "Mot de passe actuel érroné, rien n\\a été modifié"
},
"languages": {
"en": "Anglais",
"fr": "Français"
},
"pagination": {
"previous": "&laquo; Précédent",
"next": "Suivant &raquo;"
},
"passwords": {
"password": "Les mots de passe doivent contenir au moins huit caractères et être identiques.",
"reset": "Votre mot de passe a été réinitialisé !",
"sent": "Le lien pour réinitialiser votre mot de passe vient d'être envoyé !",
"token": "Ce jeton de réinitialisation n'est pas valide.",
"user": "Cette adresse email n'est pas celle de votre compte."
},
"settings": {
"settings": "Réglages",
"account": "Compte",
"password": "Mot de passe",
"options": "Options",
"confirm": [],
"forms": {
"edit_settings": "Modifier les réglages",
"setting_saved": "Réglages sauvegardés",
"language": {
"label": "Langue",
"help": "Traduit l'application dans la langue choisie"
},
"show_token_as_dot": {
"label": "Rendre illisibles les codes générés",
"help": "Remplace les caractères des codes générés par des ●●● pour garantir leur confidentialité. N'affecte pas la fonction de copier/coller qui reste utilisable."
},
"close_token_on_copy": {
"label": "Ne plus afficher les codes copiés",
"help": "Ferme automatiquement le popup affichant le code généré dès que ce dernier a été copié."
},
"use_basic_qrcode_reader": {
"label": "Utiliser le lecteur de qrcode basique",
"help": "Si vous rencontrez des problèmes lors de la lecture des qrCodes activez cette option pour utiliser un lecteur de qrcode moins évolué mais plus largement compatible"
},
"display_mode": {
"label": "Mode d'affichage",
"help": "Change le mode d'affichage des comptes, soit sous forme de liste, soit sous forme de grille"
},
"grid": "Grille",
"list": "Liste"
}
},
"twofaccounts": {
"service": "Service",
"account": "Compte",
"icon": "Icône",
"new": "Nouveau",
"no_account_here": "Aucun compte 2FA !",
"add_first_account": "Ajouter votre premier compte",
"use_full_form": "Ou utiliser le formulaire détaillé",
"add_one": "Add one",
"manage": "Gérer",
"done": "Terminé",
"forms": {
"service": {
"placeholder": "example.com"
},
"account": {
"placeholder": "Marc Dupont"
},
"new_account": "Nouveau compte",
"edit_account": "Modifier le compte",
"otp_uri": "OTP Uri",
"hotp_counter": "Compteur HOTP",
"scan_qrcode": "Scanner un QR code",
"use_qrcode": {
"val": "Utiliser un QR code",
"title": "Utiliser un QR code pour renseigner le formulaire d'un seul coup d'un seul"
},
"unlock": {
"val": "Déverouiller",
"title": "Déverouiller le champ (à vos risques et périls)"
},
"lock": {
"val": "Vérouiller",
"title": "Vérouiller le champ"
},
"choose_image": "Choisir une image…",
"create": "Créer",
"save": "Enregistrer",
"test": "Tester"
},
"stream": {
"need_grant_permission": "Vous devez autoriser l'utilisation de votre caméra",
"not_readable": "Le scanner ne se charge pas. La caméra est-elle déjà utilisée ?",
"no_cam_on_device": "Votre équipement ne dispose pas de caméra",
"secured_context_required": "Contexte sécurisé requis (HTTPS ou localhost)",
"https_required": "HTTPS requis pour utiliser la caméra",
"camera_not_suitable": "Votre équipement ne dispose pas d'une caméra adaptée",
"stream_api_not_supported": "L'API Stream n'est pas supportée par votre navigateur"
},
"confirm": {
"delete": "Etes-vous sûrs de vouloir supprimer le compte ?",
"cancel": "Les données seront perdues, êtes-vous sûrs ?"
}
},
"validation": {
"accepted": "Le champ {attribute} doit être accepté.",
"active_url": "Le champ {attribute} n'est pas une URL valide.",
"after": "Le champ {attribute} doit être une date postérieure au {date}.",
"after_or_equal": "Le champ {attribute} doit être une date postérieure ou égale au {date}.",
"alpha": "Le champ {attribute} doit contenir uniquement des lettres.",
"alpha_dash": "Le champ {attribute} doit contenir uniquement des lettres, des chiffres et des tirets.",
"alpha_num": "Le champ {attribute} doit contenir uniquement des chiffres et des lettres.",
"array": "Le champ {attribute} doit être un tableau.",
"before": "Le champ {attribute} doit être une date antérieure au {date}.",
"before_or_equal": "Le champ {attribute} doit être une date antérieure ou égale au {date}.",
"between": {
"numeric": "La valeur de {attribute} doit être comprise entre {min} et {max}.",
"file": "La taille du fichier de {attribute} doit être comprise entre {min} et {max} kilo-octets.",
"string": "Le texte {attribute} doit contenir entre {min} et {max} caractères.",
"array": "Le tableau {attribute} doit contenir entre {min} et {max} éléments."
},
"boolean": "Le champ {attribute} doit être vrai ou faux.",
"confirmed": "Le champ de confirmation {attribute} ne correspond pas.",
"date": "Le champ {attribute} n'est pas une date valide.",
"date_equals": "Le champ {attribute} doit être une date égale à {date}.",
"date_format": "Le champ {attribute} ne correspond pas au format {format}.",
"different": "Les champs {attribute} et {other} doivent être différents.",
"digits": "Le champ {attribute} doit contenir {digits} chiffres.",
"digits_between": "Le champ {attribute} doit contenir entre {min} et {max} chiffres.",
"dimensions": "La taille de l'image {attribute} n'est pas conforme.",
"distinct": "Le champ {attribute} a une valeur en double.",
"email": "Le champ {attribute} doit être une adresse email valide.",
"ends_with": "Le champ {attribute} doit se terminer par une des valeurs suivantes : {values}",
"exists": "Le champ {attribute} sélectionné est invalide.",
"file": "Le champ {attribute} doit être un fichier.",
"filled": "Le champ {attribute} doit avoir une valeur.",
"gt": {
"numeric": "La valeur de {attribute} doit être supérieure à {value}.",
"file": "La taille du fichier de {attribute} doit être supérieure à {value} kilo-octets.",
"string": "Le texte {attribute} doit contenir plus de {value} caractères.",
"array": "Le tableau {attribute} doit contenir plus de {value} éléments."
},
"gte": {
"numeric": "La valeur de {attribute} doit être supérieure ou égale à {value}.",
"file": "La taille du fichier de {attribute} doit être supérieure ou égale à {value} kilo-octets.",
"string": "Le texte {attribute} doit contenir au moins {value} caractères.",
"array": "Le tableau {attribute} doit contenir au moins {value} éléments."
},
"image": "Le champ {attribute} doit être une image.",
"in": "Le champ {attribute} est invalide.",
"in_array": "Le champ {attribute} n'existe pas dans {other}.",
"integer": "Le champ {attribute} doit être un entier.",
"ip": "Le champ {attribute} doit être une adresse IP valide.",
"ipv4": "Le champ {attribute} doit être une adresse IPv4 valide.",
"ipv6": "Le champ {attribute} doit être une adresse IPv6 valide.",
"json": "Le champ {attribute} doit être un document JSON valide.",
"lt": {
"numeric": "La valeur de {attribute} doit être inférieure à {value}.",
"file": "La taille du fichier de {attribute} doit être inférieure à {value} kilo-octets.",
"string": "Le texte {attribute} doit contenir moins de {value} caractères.",
"array": "Le tableau {attribute} doit contenir moins de {value} éléments."
},
"lte": {
"numeric": "La valeur de {attribute} doit être inférieure ou égale à {value}.",
"file": "La taille du fichier de {attribute} doit être inférieure ou égale à {value} kilo-octets.",
"string": "Le texte {attribute} doit contenir au plus {value} caractères.",
"array": "Le tableau {attribute} doit contenir au plus {value} éléments."
},
"max": {
"numeric": "La valeur de {attribute} ne peut être supérieure à {max}.",
"file": "La taille du fichier de {attribute} ne peut pas dépasser {max} kilo-octets.",
"string": "Le texte de {attribute} ne peut contenir plus de {max} caractères.",
"array": "Le tableau {attribute} ne peut contenir plus de {max} éléments."
},
"mimes": "Le champ {attribute} doit être un fichier de type : {values}.",
"mimetypes": "Le champ {attribute} doit être un fichier de type : {values}.",
"min": {
"numeric": "La valeur de {attribute} doit être supérieure ou égale à {min}.",
"file": "La taille du fichier de {attribute} doit être supérieure à {min} kilo-octets.",
"string": "Le texte {attribute} doit contenir au moins {min} caractères.",
"array": "Le tableau {attribute} doit contenir au moins {min} éléments."
},
"not_in": "Le champ {attribute} sélectionné n'est pas valide.",
"not_regex": "Le format du champ {attribute} n'est pas valide.",
"numeric": "Le champ {attribute} doit contenir un nombre.",
"password": "Le mot de passe est incorrect",
"present": "Le champ {attribute} doit être présent.",
"regex": "Le format du champ {attribute} est invalide.",
"required": "Le champ {attribute} est obligatoire.",
"required_if": "Le champ {attribute} est obligatoire quand la valeur de {other} est {value}.",
"required_unless": "Le champ {attribute} est obligatoire sauf si {other} est {values}.",
"required_with": "Le champ {attribute} est obligatoire quand {values} est présent.",
"required_with_all": "Le champ {attribute} est obligatoire quand {values} sont présents.",
"required_without": "Le champ {attribute} est obligatoire quand {values} n'est pas présent.",
"required_without_all": "Le champ {attribute} est requis quand aucun de {values} n'est présent.",
"same": "Les champs {attribute} et {other} doivent être identiques.",
"size": {
"numeric": "La valeur de {attribute} doit être {size}.",
"file": "La taille du fichier de {attribute} doit être de {size} kilo-octets.",
"string": "Le texte de {attribute} doit contenir {size} caractères.",
"array": "Le tableau {attribute} doit contenir {size} éléments."
},
"starts_with": "Le champ {attribute} doit commencer avec une des valeurs suivantes : {values}",
"string": "Le champ {attribute} doit être une chaîne de caractères.",
"timezone": "Le champ {attribute} doit être un fuseau horaire valide.",
"unique": "La valeur du champ {attribute} est déjà utilisée.",
"uploaded": "Le fichier du champ {attribute} n'a pu être téléversé.",
"url": "Le format de l'URL de {attribute} n'est pas valide.",
"uuid": "Le champ {attribute} doit être un UUID valide",
"custom": {
"attribute-name": {
"rule-name": "custom-message"
},
"icon": {
"image": "Les formats acceptés sont jpeg, png, bmp, gif, svg, or webp"
},
"qrcode": {
"image": "Les formats acceptés sont jpeg, png, bmp, gif, svg, or webp"
},
"uri": {
"starts_with": "La valeur n'est pas une uri OTP valide"
},
"email": {
"exists": "Aucun compte utilisateur n'utilise cette email"
}
},
"attributes": []
}
}
}

View File

@ -29,6 +29,5 @@
<script src="{{ mix('js/manifest.js') }}"></script> <script src="{{ mix('js/manifest.js') }}"></script>
<script src="{{ mix('js/vendor.js') }}"></script> <script src="{{ mix('js/vendor.js') }}"></script>
<script src="{{ mix('js/app.js') }}"></script> <script src="{{ mix('js/app.js') }}"></script>
<script src="{{ mix('js/locales.js') }}"></script>
</body> </body>
</html> </html>

1
webpack.mix.js vendored
View File

@ -12,7 +12,6 @@ const mix = require('laravel-mix');
*/ */
mix.js('resources/js/app.js', 'public/js') mix.js('resources/js/app.js', 'public/js')
.js('resources/js/langs/locales.js', 'public/js')
.extract([ .extract([
'vue', 'vue',
'axios', 'axios',