mirror of
https://github.com/Bubka/2FAuth.git
synced 2024-12-23 23:49:53 +01:00
Replace Composer package with npm package to handle js languages strings
This commit is contained in:
parent
f80636ee6e
commit
2d541394cc
@ -66,7 +66,6 @@ #### Prepare some stuff
|
||||
php artisan passport:install
|
||||
php artisan storage:link
|
||||
php artisan config:cache
|
||||
php artisan vue-i18n:generate
|
||||
```
|
||||
You are ready to go.
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
"beyondcode/laravel-dump-server": "^1.0",
|
||||
"filp/whoops": "^2.0",
|
||||
"fzaninotto/faker": "^1.4",
|
||||
"martinlindhe/laravel-vue-i18n-generator": "^0.1.42",
|
||||
"mockery/mockery": "^1.0",
|
||||
"nunomaduro/collision": "^3.0",
|
||||
"phpunit/phpunit": "^7.5"
|
||||
|
58
composer.lock
generated
58
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "76b4fd00e8ddf636583ffb0a3dcc30bb",
|
||||
"content-hash": "f01d597b2ba10db6dcab71530946be5a",
|
||||
"packages": [
|
||||
{
|
||||
"name": "appstract/laravel-options",
|
||||
@ -5219,61 +5219,6 @@
|
||||
],
|
||||
"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",
|
||||
"version": "1.3.3",
|
||||
@ -6012,6 +5957,7 @@
|
||||
"keywords": [
|
||||
"tokenizer"
|
||||
],
|
||||
"abandoned": true,
|
||||
"time": "2019-09-17T06:23:10+00:00"
|
||||
},
|
||||
{
|
||||
|
@ -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
36
package-lock.json
generated
@ -1076,6 +1076,18 @@
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.10.tgz",
|
||||
"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": {
|
||||
"version": "2.2.1",
|
||||
"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==",
|
||||
"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": {
|
||||
"version": "5.0.5",
|
||||
"resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-5.0.5.tgz",
|
||||
@ -6550,6 +6571,21 @@
|
||||
"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": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
|
@ -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"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@kirschbaum-development/laravel-translations-loader": "^1.0.2",
|
||||
"cross-env": "^5.2.1",
|
||||
"laravel-mix": "^5.0.5",
|
||||
"lodash": "^4.17.20",
|
||||
|
1
public/js/locales.js
vendored
1
public/js/locales.js
vendored
File diff suppressed because one or more lines are too long
2
resources/js/langs/i18n.js
vendored
2
resources/js/langs/i18n.js
vendored
@ -1,6 +1,6 @@
|
||||
import Vue from 'vue'
|
||||
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);
|
||||
|
||||
|
585
resources/js/langs/locales.js
vendored
585
resources/js/langs/locales.js
vendored
@ -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": "« Previous",
|
||||
"next": "Next »"
|
||||
},
|
||||
"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": "« Précédent",
|
||||
"next": "Suivant »"
|
||||
},
|
||||
"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": []
|
||||
}
|
||||
}
|
||||
}
|
@ -29,6 +29,5 @@
|
||||
<script src="{{ mix('js/manifest.js') }}"></script>
|
||||
<script src="{{ mix('js/vendor.js') }}"></script>
|
||||
<script src="{{ mix('js/app.js') }}"></script>
|
||||
<script src="{{ mix('js/locales.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
1
webpack.mix.js
vendored
1
webpack.mix.js
vendored
@ -12,7 +12,6 @@ const mix = require('laravel-mix');
|
||||
*/
|
||||
|
||||
mix.js('resources/js/app.js', 'public/js')
|
||||
.js('resources/js/langs/locales.js', 'public/js')
|
||||
.extract([
|
||||
'vue',
|
||||
'axios',
|
||||
|
Loading…
Reference in New Issue
Block a user