www: disk controller, user auth in dev, splitted database (one for observation and other for webapp data (eg. user, ORM)

This commit is contained in:
Samuel Ortion 2022-08-20 05:04:29 +02:00
parent 9d4f6ffd8c
commit 0be5df07a7
26 changed files with 18008 additions and 2895 deletions

27
www/.env.local.example Normal file
View File

@ -0,0 +1,27 @@
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
# * .env contains default values for the environment variables needed by the app
# * .env.local uncommitted file with local overrides
# * .env.$APP_ENV committed environment-specific defaults
# * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ###
APP_ENV=prod
APP_SECRET=8bd3643031a08d0cd34e6fd3f680fb22
###< symfony/framework-bundle ###
###> symfony/doctrine-bundle ###
DATABASE_DEFAULT_URL=sqlite:///%kernel.project_dir%/./var/db-default.sqlite
DATABASE_OBSERVATIONS_URL=sqlite:///%kernel.project_dir%/../var/db.sqlite
###< doctrine/doctrine-bundle ###
###> records folder and disk
RECORDS_DISK=/dev/sda1
RECORDS_DIR=%kernel.project_dir%/../var/chunks
###< records folder and disk

View File

@ -13,6 +13,7 @@ import './styles/menu.css';
import './bootstrap'; import './bootstrap';
import feather from 'feather-icons'; import feather from 'feather-icons';
import { version } from 'core-js';
feather.replace(); feather.replace();
/** Update css variables --{header, footer}-height /** Update css variables --{header, footer}-height
@ -28,6 +29,14 @@ feather.replace();
})(); })();
/** Add git version in web interface
*/
(function () {
let version_span = document.querySelector('.version-number');
version_span.textContent = `${VERSION}`;
console.debug("Version: " + VERSION);
})();
try { try {
document.getElementsByClassName('prevent').map( document.getElementsByClassName('prevent').map(
(e) => e.addEventListener('click', (e) => e.preventDefault()) (e) => e.addEventListener('click', (e) => e.preventDefault())

View File

@ -1,25 +1,11 @@
import { Controller } from '@hotwired/stimulus'; import { Controller } from '@hotwired/stimulus';
import { delete_record } from '../utils/delete';
/* stimulusFetch: 'lazy' */ /* stimulusFetch: 'lazy' */
export default class extends Controller { export default class extends Controller {
static targets = ['filename'] static targets = ['filename']
delete() { delete() {
let filename = this.filenameTarget.value; let filename = this.filenameTarget.value;
let url = `/records/delete/${filename}`; delete_record(filename);
fetch(url, {
method: 'POST'
})
.then(response => {
if (response.ok) {
window.location.reload();
} else {
console.log(response);
}
})
.catch(error => {
console.log(error);
}
);
} }
} }

View File

@ -0,0 +1,45 @@
const axios = require('axios').default;
import { Controller } from '@hotwired/stimulus';
import { delete_record } from '../utils/delete';
/* stimulusFetch: 'lazy' */
export default class extends Controller {
static targets = ['current'];
mark_as_verified() {
let selected = this.currentTarget.value;
let url = `/records/manage/verify/${selected}`;
axios.post(url)
.then(function (response) {
console.log(response);
}
).catch(function (error) {
console.error(error);
}
);
}
select_all() {
let selected = document.querySelectorAll(".select-record");
selected.forEach(function (item) {
item.checked = true;
});
}
delete_selected() {
let selected = document.querySelectorAll(".select-record:checked");
if (selected.length > 0) {
// confirm delete
if (confirm("Are you sure you want to delete these records?")) {
// delete
for (let file of selected) {
delete_record(file.value);
}
}
}
}
}

View File

@ -209,11 +209,6 @@ li {
list-style: none; list-style: none;
} }
li,
td {
align-items: center;
}
.dropdown-toggle:hover { .dropdown-toggle:hover {
background-color: #900; background-color: #900;
color: white color: white

View File

@ -0,0 +1,25 @@
const axios = require('axios').default;
function delete_record(filename) {
let url = `/records/delete/${filename}`;
axios.post(url)
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.error(error);
});
}
function delete_records(filenames) {
let url = "/records/delete/all";
axios.post(url)
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.error(error);
});
}
export { delete_record, delete_records };

View File

@ -1,6 +1,8 @@
#! /usr/bin/env bash #! /usr/bin/env bash
LANGUAGES="fr es"
# Extract and update translation files # Extract and update translation files
php bin/console translation:extract --dump-messages fr for LANGUAGE in $LANGUAGES; do
php bin/console translation:extract --dump-messages $LANGUAGE
php bin/console translation:extract --force fr php bin/console translation:extract --force $LANGUAGE
done

View File

@ -5,11 +5,10 @@ doctrine:
default: default:
dbname: birdnet_default_db dbname: birdnet_default_db
url: '%env(resolve:DATABASE_DEFAULT_URL)%' url: '%env(resolve:DATABASE_DEFAULT_URL)%'
# wrapper_class: AppBundle\Connections\ConnectionDefault
observations: observations:
dbname: birdnet_observations_db dbname: birdnet_observations_db
url: '%env(resolve:DATABASE_OBSERVATIONS_URL)%' url: '%env(resolve:DATABASE_OBSERVATIONS_URL)%'
wrapper_class: App\AppBundle\Connections\ConnectionObservations wrapper_class: App\AppBundle\ConnectionObservations
# IMPORTANT: You MUST configure your server version, # IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file) # either here or in the DATABASE_URL env var (see .env file)

View File

@ -4,10 +4,12 @@
# Put parameters here that don't need to change on each machine where the app is deployed # Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
parameters: parameters:
app.records_disk: '%env(string:RECORDS_DISK)%'
app.records_dir: '%env(resolve:RECORDS_DIR)%' app.records_dir: '%env(resolve:RECORDS_DIR)%'
app.supported_locales: 'en|fr' app.supported_locales: 'en|fr'
app.default_locale: 'en' app.default_locale: 'en'
services: services:
# default configuration for services in *this* file # default configuration for services in *this* file
_defaults: _defaults:
@ -23,8 +25,7 @@ services:
- '../src/Entity/' - '../src/Entity/'
- '../src/Kernel.php' - '../src/Kernel.php'
# AppBundle\Connections\ExtendedConnection\ConnectionDefault: '@doctrine.dbal.default_connection' App\AppBundle\ConnectionObservations: '@doctrine.dbal.observations_connection'
App\AppBundle\Connections\ConnectionObservations: '@doctrine.dbal.observations_connection'
# add more service definitions when explicit configuration is needed # add more service definitions when explicit configuration is needed
# please note that last definitions always *replace* previous ones # please note that last definitions always *replace* previous ones

13378
www/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -17,6 +17,7 @@
"build": "encore production --progress" "build": "encore production --progress"
}, },
"dependencies": { "dependencies": {
"axios": "^0.27.2",
"feather-icons": "^4.29.0" "feather-icons": "^4.29.0"
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
namespace App\AppBundle\Connections; namespace App\AppBundle;
use Doctrine\DBAL\Connection; use Doctrine\DBAL\Connection;
class ConnectionObservations extends Connection class ConnectionObservations extends Connection

View File

@ -0,0 +1,35 @@
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class DisksController extends AbstractController
{
/**
* @Route("/disks/", name="disks_index")
* @Route("{_locale}/disks/", name="disks_index_i18n")
*/
public function index() {
return $this->render('disks/index.html.twig', [
"disk"=>$this->get_disk_usage()
]);
}
private function get_disk_usage()
{
$usage = [];
$disk = $this->getParameter('app.records_disk');
$cmd = "df -h | grep $disk | awk '{print $5}'";
$output = shell_exec($cmd);
$usage["device"] = $disk;
$usage["usage"] = $output;
$cmd = "df -h | grep $disk | awk '{print $4}'";
$output = shell_exec($cmd);
$usage["available"] = $output;
return $usage;
}
}

View File

@ -5,12 +5,11 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Doctrine\DBAL\Connection; use App\AppBundle\ConnectionObservations;
use App\AppBundle\Connections\ConnectionObservations;
class HomeController extends AbstractController class HomeController extends AbstractController
{ {
private Connection $connection; private ConnectionObservations $connection;
public function __construct(ConnectionObservations $connection) public function __construct(ConnectionObservations $connection)
{ {

View File

@ -6,7 +6,7 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use App\AppBundle\Connections\ConnectionObservations; use App\AppBundle\ConnectionObservations;
class RecordsController extends AbstractController class RecordsController extends AbstractController
{ {
@ -18,7 +18,7 @@ class RecordsController extends AbstractController
} }
/** /**
* @Route("/records", name="records") * @Route("/records/{date}", name="records", defaults={"date" = "now"})
* @Route("/{_locale<%app.supported_locales%>}/records/{date}", name="records_i18n") * @Route("/{_locale<%app.supported_locales%>}/records/{date}", name="records_i18n")
*/ */
public function records_index($date="now") public function records_index($date="now")
@ -35,21 +35,37 @@ class RecordsController extends AbstractController
} }
/** /**
* @Route("/records/delete/{basename}", name="record_delete") * @Route("/records/delete/all", name="record_selection_delete")
* @Route("/{_locale<%app.supported_locales%>}/records/delete/{basename}", name="record_delete_i18n")
*/ */
public function delete_record(Connection $connection, $basename) public function delete_all(Request $request)
{ {
$this->connection = $connection; $records = $request->request->filenames;
$this->remove_record_by_basename($basename); foreach($records as $record) {
return $this->redirectToRoute('records_index'); $alright = $this->remove_record_by_basename($record);
if ($alright) {
return new Response("Selected records deleted.", Response::HTTP_OK);
}
}
}
/**
* @Route("/records/delete/{record}", name="record_delete")
*/
public function record_delete($record)
{
$alright = $this->remove_record_by_basename($record);
if ($alright) {
return new Response("Record $record deleted.", Response::HTTP_OK);
} else {
return new Response("Record deletion failed", Response::HTTP_INTERNAL_SERVER_ERROR);
}
} }
/** /**
* @Route("/records/best", name="records_best") * @Route("/records/best", name="records_best")
* @Route("/{_locale<%app.supported_locales%>}/records/best", name="records_best_i18n") * @Route("/{_locale<%app.supported_locales%>}/records/best", name="records_best_i18n")
*/ */
public function best_records(Connection $connection) public function best_records()
{ {
$this->render('records/best.html.twig', [ $this->render('records/best.html.twig', [
]); ]);
@ -100,6 +116,9 @@ class RecordsController extends AbstractController
rmdir($model_out_dir); rmdir($model_out_dir);
/** Remove database entry associated with this filename */ /** Remove database entry associated with this filename */
$this->remove_observations_from_record($basename); $this->remove_observations_from_record($basename);
return true;
} else {
return false;
} }
} }

View File

@ -5,7 +5,7 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use App\AppBundle\Connections\ConnectionObservations; use App\AppBundle\ConnectionObservations;
class StatsController extends AbstractController class StatsController extends AbstractController
{ {

View File

@ -5,7 +5,7 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use App\AppBundle\Connections\ConnectionObservations; use App\AppBundle\ConnectionObservations;
class TodayController extends AbstractController class TodayController extends AbstractController
{ private ConnectionObservations $connection; { private ConnectionObservations $connection;

View File

@ -1,8 +1,10 @@
<div class="manager">
<button class="button" id="select-all" title="{{ "Select all" | trans }}">
<div class="manager" {{ stimulus_controller('manage-records') }}>
<button class="button" id="select-all" title="{{ "Select all" | trans }}" {{ stimulus_action('manage-records', 'select_all') }}>
<i data-feather="check-square"></i> <i data-feather="check-square"></i>
</button> </button>
<button class="delete button" title="{{ "Delete selected" | trans }}"> <button class="delete button" title="{{ "Delete selected" | trans }}" {{ stimulus_action('manage-records', 'delete_selected') }}>
<i data-feather="trash-2"></i> <i data-feather="trash-2"></i>
</button> </button>
</div> </div>

View File

@ -47,20 +47,31 @@
</thead> </thead>
<tbody> <tbody>
{% for record in records %} {% for record in records %}
<tr> <tr {{ stimulus_controller('manage-records') }}>
<td> <td>
<input title="{{ "Select this record" | trans }}" type="checkbox" name="select-file" value="{{ record.audio_file }}"> <input title="{{ "Select this record" | trans }}" type="checkbox" class="select-record" value="{{ record.audio_file }}" {{ stimulus_target('manage-records', 'current') }}>
</td> </td>
<td> <td>
<a title="{{ "Download audio file" | trans }}" href="/media/records/{{ record.audio_file }}">
{{ record.audio_file }} {{ record.audio_file }}
</a> </a>
</td> </td>
<td>{{ record.date | date("H:m") }}</td> <td>{{ record.date | date("H:m") }}</td>
<td>{{ record.confidence }}</td> <td>{{ record.confidence }}</td>
<td> <td>
<div class="controlls container row">
{% include "records/player.html.twig" with { "filename": record.audio_file } only %} {% include "records/player.html.twig" with { "filename": record.audio_file } only %}
{% include "records/delete_button.html.twig" with { "filename": record.audio_file } only %} </td> {% include "records/delete_button.html.twig" with { "filename": record.audio_file } only %}
<a class="button" title="{{ "Download audio file" | trans }}" href="/media/records/{{ record.audio_file }}">
<i data-feather="download"></i>
</a>
</div>
</td>
<td>
<button {{ stimulus_action('manage-records', 'mark_as_verified') }} class="button" title="{{ "Mark this record as verified"|trans }}">
<i data-feather="eye"></i>
</button>
</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
@ -70,5 +81,4 @@
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -0,0 +1,250 @@
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" target-language="es" datatype="plaintext" original="file.ext">
<header>
<tool tool-id="symfony" tool-name="Symfony"/>
</header>
<body>
<trans-unit id="39aF.j_" resname="Frequency charts">
<source>Frequency charts</source>
<target state="translated">Gráfico de frecuencia </target>
</trans-unit>
<trans-unit id="SJtk1Aa" resname="No charts available">
<source>No charts available</source>
<target state="translated">No grafico disponible</target>
</trans-unit>
<trans-unit id="OnhpU4i" resname="Home">
<source>Home</source>
<target state="translated">Pagina principal</target>
</trans-unit>
<trans-unit id="Tvyg0Qx" resname="About">
<source>About</source>
<target state="translated">A proposito</target>
</trans-unit>
<trans-unit id="Lc4yjyd" resname="Today's Detections">
<source>Today's Detections</source>
<target state="translated">Las detecciones de hoy</target>
</trans-unit>
<trans-unit id="11.I7BE" resname="Live Spectrogram">
<source>Live Spectrogram</source>
<target state="translated">espectrograma en vivo</target>
</trans-unit>
<trans-unit id="plYQfpn" resname="Statistics">
<source>Statistics</source>
<target state="translated">estadisticas</target>
</trans-unit>
<trans-unit id="YMVtZqE" resname="Recordings">
<source>Recordings</source>
<target state="translated">Grabaciones</target>
</trans-unit>
<trans-unit id="GiWvoLV" resname="Best Recordings">
<source>Best Recordings</source>
<target state="translated">mejores grabaciones </target>
</trans-unit>
<trans-unit id="4IfwRtw" resname="View Logs">
<source>View Logs</source>
<target state="translated">Ver registros</target>
</trans-unit>
<trans-unit id="kg5BPH1" resname="Status">
<source>Status</source>
<target state="translated">estatuto</target>
</trans-unit>
<trans-unit id="yQxt8UA" resname="Not implemented yet">
<source>Not implemented yet</source>
<target state="translated">Aun no se ha implementado</target>
</trans-unit>
<trans-unit id="mcQKtAW" resname="Date">
<source>Date</source>
<target state="translated">Fecha</target>
</trans-unit>
<trans-unit id="zFIH2Rd" resname="Enter a date in this format YYYY-MM-DD">
<source>Enter a date in this format YYYY-MM-DD</source>
<target state="translated">introducir una fecha en este formato YYYY-MM-DD</target>
</trans-unit>
<trans-unit id="bMhRm5F" resname="Go">
<source>Go</source>
<target>__Go</target>
</trans-unit>
<trans-unit id="6iEA3Im" resname="Logs">
<source>Logs</source>
<target>__Logs</target>
</trans-unit>
<trans-unit id="yIMayeg" resname="No logs available">
<source>No logs available</source>
<target>__No logs available</target>
</trans-unit>
<trans-unit id="VAw_dLX" resname="BirdNET-stream is a realtime soundscape analyzis software powered by BirdNET AI.">
<source>BirdNET-stream is a realtime soundscape analyzis software powered by BirdNET AI.</source>
<target>__BirdNET-stream is a realtime soundscape analyzis software powered by BirdNET AI.</target>
</trans-unit>
<trans-unit id="vvz1r3A" resname="It aims to be able to run on any computer with a microphone.">
<source>It aims to be able to run on any computer with a microphone.</source>
<target>__It aims to be able to run on any computer with a microphone.</target>
</trans-unit>
<trans-unit id="2VCCou5" resname="Author">
<source>Author</source>
<target>__Author</target>
</trans-unit>
<trans-unit id="1zd9FJ_" resname="This project is made with &amp;hearts; by Samuel ORTION.">
<source>This project is made with &amp;hearts; by Samuel ORTION.</source>
<target><![CDATA[__This project is made with &hearts; by Samuel ORTION.]]></target>
</trans-unit>
<trans-unit id="wBHWCXv" resname="License">
<source>License</source>
<target>__License</target>
</trans-unit>
<trans-unit id="6AM7sRb" resname="BirdNET-stream is licensed under the">
<source>BirdNET-stream is licensed under the</source>
<target>__BirdNET-stream is licensed under the</target>
</trans-unit>
<trans-unit id="nNkktM9" resname="BirdNET-Analyzer, on which this project relies, is licensed under">
<source>BirdNET-Analyzer, on which this project relies, is licensed under</source>
<target>__BirdNET-Analyzer, on which this project relies, is licensed under</target>
</trans-unit>
<trans-unit id="_RN0U0G" resname="Spectrogram">
<source>Spectrogram</source>
<target>__Spectrogram</target>
</trans-unit>
<trans-unit id="cOE9kUb" resname="Launch Live Spectrogram">
<source>Launch Live Spectrogram</source>
<target>__Launch Live Spectrogram</target>
</trans-unit>
<trans-unit id="VF2TvYg" resname="No audio sources yet">
<source>No audio sources yet</source>
<target>__No audio sources yet</target>
</trans-unit>
<trans-unit id="b3yIXEw" resname="Quick Stats">
<source>Quick Stats</source>
<target>__Quick Stats</target>
</trans-unit>
<trans-unit id="EVOzKuV" resname="Most recorded species">
<source>Most recorded species</source>
<target>__Most recorded species</target>
</trans-unit>
<trans-unit id="BpW1Y6z" resname="with">
<source>with</source>
<target>__with</target>
</trans-unit>
<trans-unit id="qlr0CE8" resname="contacts">
<source>contacts</source>
<target>__contacts</target>
</trans-unit>
<trans-unit id="pHx6Sb8" resname="No species in database.">
<source>No species in database.</source>
<target>__No species in database.</target>
</trans-unit>
<trans-unit id="kbbkF9." resname="Last detected species">
<source>Last detected species</source>
<target>__Last detected species</target>
</trans-unit>
<trans-unit id="UfL722." resname="AI confidence">
<source>AI confidence</source>
<target>__AI confidence</target>
</trans-unit>
<trans-unit id="4PT3Z6y" resname="today">
<source>today</source>
<target>__today</target>
</trans-unit>
<trans-unit id="uNMehSc" resname="on">
<source>on</source>
<target>__on</target>
</trans-unit>
<trans-unit id="UXnWgGD" resname="No species in database">
<source>No species in database</source>
<target>__No species in database</target>
</trans-unit>
<trans-unit id="O.a8OVk" resname="Today's contacts for">
<source>Today's contacts for</source>
<target>__Today's contacts for</target>
</trans-unit>
<trans-unit id="1XvGb5I" resname="Contacts on">
<source>Contacts on</source>
<target>__Contacts on</target>
</trans-unit>
<trans-unit id="EMIrz0x" resname="for">
<source>for</source>
<target>__for</target>
</trans-unit>
<trans-unit id="tKc2V0D" resname="Stats">
<source>Stats</source>
<target>__Stats</target>
</trans-unit>
<trans-unit id="j93Wzbi" resname="Contact count:">
<source>Contact count:</source>
<target>__Contact count:</target>
</trans-unit>
<trans-unit id="ALgyC6W" resname="Max confidence">
<source>Max confidence</source>
<target>__Max confidence</target>
</trans-unit>
<trans-unit id="WTXVn0G" resname="Contact records">
<source>Contact records</source>
<target>__Contact records</target>
</trans-unit>
<trans-unit id="lxuXQjW" resname="Filename">
<source>Filename</source>
<target>__Filename</target>
</trans-unit>
<trans-unit id="M7k0ds9" resname="Time">
<source>Time</source>
<target>__Time</target>
</trans-unit>
<trans-unit id="ZCLj549" resname="Confidence">
<source>Confidence</source>
<target>__Confidence</target>
</trans-unit>
<trans-unit id="vBuIkH0" resname="Audio">
<source>Audio</source>
<target>__Audio</target>
</trans-unit>
<trans-unit id="I3eaEC5" resname="Select this record">
<source>Select this record</source>
<target>__Select this record</target>
</trans-unit>
<trans-unit id="NBh3Jvf" resname="Download audio file">
<source>Download audio file</source>
<target>__Download audio file</target>
</trans-unit>
<trans-unit id="gp0zWYd" resname="No records this day for this species">
<source>No records this day for this species</source>
<target>__No records this day for this species</target>
</trans-unit>
<trans-unit id="H8mjh2V" resname="Select all">
<source>Select all</source>
<target>__Select all</target>
</trans-unit>
<trans-unit id="0qtdRv7" resname="Delete selected">
<source>Delete selected</source>
<target>__Delete selected</target>
</trans-unit>
<trans-unit id="XdPmSCB" resname="Today's detected species">
<source>Today's detected species</source>
<target>__Today's detected species</target>
</trans-unit>
<trans-unit id="ujkYinn" resname="Detected species on">
<source>Detected species on</source>
<target>__Detected species on</target>
</trans-unit>
<trans-unit id="tZEkkkO" resname="No species detected this day">
<source>No species detected this day</source>
<target>__No species detected this day</target>
</trans-unit>
<trans-unit id="AmHJKRh" resname="Services status">
<source>Services status</source>
<target>__Services status</target>
</trans-unit>
<trans-unit id="hb1Ij3K" resname="No status available">
<source>No status available</source>
<target>__No status available</target>
</trans-unit>
<trans-unit id="OzJoKh6" resname="Welcome to BirdNET-stream !">
<source>Welcome to BirdNET-stream !</source>
<target>__Welcome to BirdNET-stream !</target>
</trans-unit>
<trans-unit id="T_YMEAK" resname="Disk usage">
<source>Disk usage</source>
<target>__Disk usage</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@ -23,7 +23,7 @@
</trans-unit> </trans-unit>
<trans-unit id="1zd9FJ_" resname="This project is made with &amp;hearts; by Samuel ORTION."> <trans-unit id="1zd9FJ_" resname="This project is made with &amp;hearts; by Samuel ORTION.">
<source>This project is made with &amp;hearts; by Samuel ORTION.</source> <source>This project is made with &amp;hearts; by Samuel ORTION.</source>
<target>Ce projet est fait avec &amp;hearts; par Samuel ORTION.</target> <target><![CDATA[Ce projet est fait avec &hearts; par Samuel ORTION.]]></target>
</trans-unit> </trans-unit>
<trans-unit id="wBHWCXv" resname="License"> <trans-unit id="wBHWCXv" resname="License">
<source>License</source> <source>License</source>
@ -237,6 +237,14 @@
<source>Welcome to BirdNET-stream !</source> <source>Welcome to BirdNET-stream !</source>
<target>Bienvenue sur BirdNET-stream !</target> <target>Bienvenue sur BirdNET-stream !</target>
</trans-unit> </trans-unit>
<trans-unit id="yQxt8UA" resname="Not implemented yet">
<source>Not implemented yet</source>
<target>__Not implemented yet</target>
</trans-unit>
<trans-unit id="T_YMEAK" resname="Disk usage">
<source>Disk usage</source>
<target>__Disk usage</target>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" target-language="es" datatype="plaintext" original="file.ext">
<header>
<tool tool-id="symfony" tool-name="Symfony"/>
</header>
<body>
<trans-unit id="baI_ZxO" resname="An authentication exception occurred.">
<source>An authentication exception occurred.</source>
<target>Ocurrió un error de autenticación.</target>
</trans-unit>
<trans-unit id="OETylMq" resname="Authentication credentials could not be found.">
<source>Authentication credentials could not be found.</source>
<target>No se encontraron las credenciales de autenticación.</target>
</trans-unit>
<trans-unit id="3RJINQ0" resname="Authentication request could not be processed due to a system problem.">
<source>Authentication request could not be processed due to a system problem.</source>
<target>La solicitud de autenticación no se pudo procesar debido a un problema del sistema.</target>
</trans-unit>
<trans-unit id="qr0aiUo" resname="Invalid credentials.">
<source>Invalid credentials.</source>
<target>Credenciales no válidas.</target>
</trans-unit>
<trans-unit id="zrJWK0F" resname="Cookie has already been used by someone else.">
<source>Cookie has already been used by someone else.</source>
<target>La cookie ya ha sido usada por otra persona.</target>
</trans-unit>
<trans-unit id="blC0fXX" resname="Not privileged to request the resource.">
<source>Not privileged to request the resource.</source>
<target>No tiene privilegios para solicitar el recurso.</target>
</trans-unit>
<trans-unit id="dLzMRPR" resname="Invalid CSRF token.">
<source>Invalid CSRF token.</source>
<target>Token CSRF no válido.</target>
</trans-unit>
<trans-unit id="PhhlLem" resname="No authentication provider found to support the authentication token.">
<source>No authentication provider found to support the authentication token.</source>
<target>No se encontró un proveedor de autenticación que soporte el token de autenticación.</target>
</trans-unit>
<trans-unit id="v_RS21A" resname="No session available, it either timed out or cookies are not enabled.">
<source>No session available, it either timed out or cookies are not enabled.</source>
<target>No hay ninguna sesión disponible, ha expirado o las cookies no están habilitados.</target>
</trans-unit>
<trans-unit id="EYCKpDH" resname="No token could be found.">
<source>No token could be found.</source>
<target>No se encontró ningún token.</target>
</trans-unit>
<trans-unit id="z3cOUZo" resname="Username could not be found.">
<source>Username could not be found.</source>
<target>No se encontró el nombre de usuario.</target>
</trans-unit>
<trans-unit id="By5eLYM" resname="Account has expired.">
<source>Account has expired.</source>
<target>La cuenta ha expirado.</target>
</trans-unit>
<trans-unit id="YfZhiuA" resname="Credentials have expired.">
<source>Credentials have expired.</source>
<target>Las credenciales han expirado.</target>
</trans-unit>
<trans-unit id="NrSSfLs" resname="Account is disabled.">
<source>Account is disabled.</source>
<target>La cuenta está deshabilitada.</target>
</trans-unit>
<trans-unit id="O5ZyxHr" resname="Account is locked.">
<source>Account is locked.</source>
<target>La cuenta está bloqueada.</target>
</trans-unit>
<trans-unit id="gd.MOnZ" resname="Too many failed login attempts, please try again later.">
<source>Too many failed login attempts, please try again later.</source>
<target>Demasiados intentos fallidos de inicio de sesión, inténtelo de nuevo más tarde.</target>
</trans-unit>
<trans-unit id="l9VYRj0" resname="Invalid or expired login link.">
<source>Invalid or expired login link.</source>
<target>Enlace de inicio de sesión inválido o expirado.</target>
</trans-unit>
<trans-unit id="9qGC3hG" resname="Too many failed login attempts, please try again in %minutes% minute.">
<source>Too many failed login attempts, please try again in %minutes% minute.</source>
<target>Demasiados intentos fallidos de inicio de sesión, inténtelo de nuevo en %minutes% minuto.</target>
</trans-unit>
<trans-unit id="AJR3lMs" resname="Too many failed login attempts, please try again in %minutes% minutes.">
<source>Too many failed login attempts, please try again in %minutes% minutes.</source>
<target>Demasiados intentos fallidos de inicio de sesión, inténtelo de nuevo en %minutes% minutos.</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" target-language="fr" datatype="plaintext" original="file.ext">
<header>
<tool tool-id="symfony" tool-name="Symfony"/>
</header>
<body>
<trans-unit id="baI_ZxO" resname="An authentication exception occurred.">
<source>An authentication exception occurred.</source>
<target>Une exception d'authentification s'est produite.</target>
</trans-unit>
<trans-unit id="OETylMq" resname="Authentication credentials could not be found.">
<source>Authentication credentials could not be found.</source>
<target>Les identifiants d'authentification n'ont pas pu être trouvés.</target>
</trans-unit>
<trans-unit id="3RJINQ0" resname="Authentication request could not be processed due to a system problem.">
<source>Authentication request could not be processed due to a system problem.</source>
<target>La requête d'authentification n'a pas pu être executée à cause d'un problème système.</target>
</trans-unit>
<trans-unit id="qr0aiUo" resname="Invalid credentials.">
<source>Invalid credentials.</source>
<target>Identifiants invalides.</target>
</trans-unit>
<trans-unit id="zrJWK0F" resname="Cookie has already been used by someone else.">
<source>Cookie has already been used by someone else.</source>
<target>Le cookie a déjà été utilisé par quelqu'un d'autre.</target>
</trans-unit>
<trans-unit id="blC0fXX" resname="Not privileged to request the resource.">
<source>Not privileged to request the resource.</source>
<target>Privilèges insuffisants pour accéder à la ressource.</target>
</trans-unit>
<trans-unit id="dLzMRPR" resname="Invalid CSRF token.">
<source>Invalid CSRF token.</source>
<target>Jeton CSRF invalide.</target>
</trans-unit>
<trans-unit id="PhhlLem" resname="No authentication provider found to support the authentication token.">
<source>No authentication provider found to support the authentication token.</source>
<target>Aucun fournisseur d'authentification n'a été trouvé pour supporter le jeton d'authentification.</target>
</trans-unit>
<trans-unit id="v_RS21A" resname="No session available, it either timed out or cookies are not enabled.">
<source>No session available, it either timed out or cookies are not enabled.</source>
<target>Aucune session disponible, celle-ci a expiré ou les cookies ne sont pas activés.</target>
</trans-unit>
<trans-unit id="EYCKpDH" resname="No token could be found.">
<source>No token could be found.</source>
<target>Aucun jeton n'a pu être trouvé.</target>
</trans-unit>
<trans-unit id="z3cOUZo" resname="Username could not be found.">
<source>Username could not be found.</source>
<target>Le nom d'utilisateur n'a pas pu être trouvé.</target>
</trans-unit>
<trans-unit id="By5eLYM" resname="Account has expired.">
<source>Account has expired.</source>
<target>Le compte a expiré.</target>
</trans-unit>
<trans-unit id="YfZhiuA" resname="Credentials have expired.">
<source>Credentials have expired.</source>
<target>Les identifiants ont expiré.</target>
</trans-unit>
<trans-unit id="NrSSfLs" resname="Account is disabled.">
<source>Account is disabled.</source>
<target>Le compte est désactivé.</target>
</trans-unit>
<trans-unit id="O5ZyxHr" resname="Account is locked.">
<source>Account is locked.</source>
<target>Le compte est bloqué.</target>
</trans-unit>
<trans-unit id="gd.MOnZ" resname="Too many failed login attempts, please try again later.">
<source>Too many failed login attempts, please try again later.</source>
<target>Plusieurs tentatives de connexion ont échoué, veuillez réessayer plus tard.</target>
</trans-unit>
<trans-unit id="l9VYRj0" resname="Invalid or expired login link.">
<source>Invalid or expired login link.</source>
<target>Lien de connexion invalide ou expiré.</target>
</trans-unit>
<trans-unit id="9qGC3hG" resname="Too many failed login attempts, please try again in %minutes% minute.">
<source>Too many failed login attempts, please try again in %minutes% minute.</source>
<target>Plusieurs tentatives de connexion ont échoué, veuillez réessayer dans %minutes% minute.</target>
</trans-unit>
<trans-unit id="AJR3lMs" resname="Too many failed login attempts, please try again in %minutes% minutes.">
<source>Too many failed login attempts, please try again in %minutes% minutes.</source>
<target>Plusieurs tentatives de connexion ont échoué, veuillez réessayer dans %minutes% minutes.</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@ -0,0 +1,542 @@
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" target-language="es" datatype="plaintext" original="file.ext">
<header>
<tool tool-id="symfony" tool-name="Symfony"/>
</header>
<body>
<trans-unit id="zh5oKD9" resname="This value should be false.">
<source>This value should be false.</source>
<target>Este valor debería ser falso.</target>
</trans-unit>
<trans-unit id="NN2_iru" resname="This value should be true.">
<source>This value should be true.</source>
<target>Este valor debería ser verdadero.</target>
</trans-unit>
<trans-unit id="OjM_kpf" resname="This value should be of type {{ type }}.">
<source>This value should be of type {{ type }}.</source>
<target>Este valor debería ser de tipo {{ type }}.</target>
</trans-unit>
<trans-unit id="f0P5pBD" resname="This value should be blank.">
<source>This value should be blank.</source>
<target>Este valor debería estar vacío.</target>
</trans-unit>
<trans-unit id="ih.4TRN" resname="The value you selected is not a valid choice.">
<source>The value you selected is not a valid choice.</source>
<target>El valor seleccionado no es una opción válida.</target>
</trans-unit>
<trans-unit id="u81CkP8" resname="You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.">
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
<target>Debe seleccionar al menos {{ limit }} opción.|Debe seleccionar al menos {{ limit }} opciones.</target>
</trans-unit>
<trans-unit id="nIvOQ_o" resname="You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.">
<source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
<target>Debe seleccionar como máximo {{ limit }} opción.|Debe seleccionar como máximo {{ limit }} opciones.</target>
</trans-unit>
<trans-unit id="87zjiHi" resname="One or more of the given values is invalid.">
<source>One or more of the given values is invalid.</source>
<target>Uno o más de los valores indicados no son válidos.</target>
</trans-unit>
<trans-unit id="3NeQftv" resname="This field was not expected.">
<source>This field was not expected.</source>
<target>Este campo no se esperaba.</target>
</trans-unit>
<trans-unit id="SwMV4zp" resname="This field is missing.">
<source>This field is missing.</source>
<target>Este campo está desaparecido.</target>
</trans-unit>
<trans-unit id="LO2vFKN" resname="This value is not a valid date.">
<source>This value is not a valid date.</source>
<target>Este valor no es una fecha válida.</target>
</trans-unit>
<trans-unit id="86dU_nv" resname="This value is not a valid datetime.">
<source>This value is not a valid datetime.</source>
<target>Este valor no es una fecha y hora válidas.</target>
</trans-unit>
<trans-unit id="PSvNXdi" resname="This value is not a valid email address.">
<source>This value is not a valid email address.</source>
<target>Este valor no es una dirección de email válida.</target>
</trans-unit>
<trans-unit id="3KeHbZy" resname="The file could not be found.">
<source>The file could not be found.</source>
<target>No se pudo encontrar el archivo.</target>
</trans-unit>
<trans-unit id="KtJhQZo" resname="The file is not readable.">
<source>The file is not readable.</source>
<target>No se puede leer el archivo.</target>
</trans-unit>
<trans-unit id="JocOVM2" resname="The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.">
<source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>El archivo es demasiado grande ({{ size }} {{ suffix }}). El tamaño máximo permitido es {{ limit }} {{ suffix }}.</target>
</trans-unit>
<trans-unit id="YW21SPH" resname="The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.">
<source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
<target>El tipo mime del archivo no es válido ({{ type }}). Los tipos mime válidos son {{ types }}.</target>
</trans-unit>
<trans-unit id="NubOmrs" resname="This value should be {{ limit }} or less.">
<source>This value should be {{ limit }} or less.</source>
<target>Este valor debería ser {{ limit }} o menos.</target>
</trans-unit>
<trans-unit id="HX7TOFm" resname="This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.">
<source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
<target>Este valor es demasiado largo. Debería tener {{ limit }} carácter o menos.|Este valor es demasiado largo. Debería tener {{ limit }} caracteres o menos.</target>
</trans-unit>
<trans-unit id="qgR8M_U" resname="This value should be {{ limit }} or more.">
<source>This value should be {{ limit }} or more.</source>
<target>Este valor debería ser {{ limit }} o más.</target>
</trans-unit>
<trans-unit id="ekfrU.c" resname="This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.">
<source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
<target>Este valor es demasiado corto. Debería tener {{ limit }} carácter o más.|Este valor es demasiado corto. Debería tener {{ limit }} caracteres o más.</target>
</trans-unit>
<trans-unit id="1KV4L.t" resname="This value should not be blank.">
<source>This value should not be blank.</source>
<target>Este valor no debería estar vacío.</target>
</trans-unit>
<trans-unit id="2G4Vepm" resname="This value should not be null.">
<source>This value should not be null.</source>
<target>Este valor no debería ser nulo.</target>
</trans-unit>
<trans-unit id="yDc3m6E" resname="This value should be null.">
<source>This value should be null.</source>
<target>Este valor debería ser nulo.</target>
</trans-unit>
<trans-unit id="zKzWejA" resname="This value is not valid.">
<source>This value is not valid.</source>
<target>Este valor no es válido.</target>
</trans-unit>
<trans-unit id="HSuBZpQ" resname="This value is not a valid time.">
<source>This value is not a valid time.</source>
<target>Este valor no es una hora válida.</target>
</trans-unit>
<trans-unit id="snWc_QT" resname="This value is not a valid URL.">
<source>This value is not a valid URL.</source>
<target>Este valor no es una URL válida.</target>
</trans-unit>
<trans-unit id="jpaLsb2" resname="The two values should be equal.">
<source>The two values should be equal.</source>
<target>Los dos valores deberían ser iguales.</target>
</trans-unit>
<trans-unit id="fIlB1B_" resname="The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.">
<source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>El archivo es demasiado grande. El tamaño máximo permitido es {{ limit }} {{ suffix }}.</target>
</trans-unit>
<trans-unit id="tW7o0t9" resname="The file is too large.">
<source>The file is too large.</source>
<target>El archivo es demasiado grande.</target>
</trans-unit>
<trans-unit id=".exF5Ww" resname="The file could not be uploaded.">
<source>The file could not be uploaded.</source>
<target>No se pudo subir el archivo.</target>
</trans-unit>
<trans-unit id="d7sS5yw" resname="This value should be a valid number.">
<source>This value should be a valid number.</source>
<target>Este valor debería ser un número válido.</target>
</trans-unit>
<trans-unit id="BS2Ez6i" resname="This file is not a valid image.">
<source>This file is not a valid image.</source>
<target>El archivo no es una imagen válida.</target>
</trans-unit>
<trans-unit id="ydcT9kU" resname="This is not a valid IP address.">
<source>This is not a valid IP address.</source>
<target>Esto no es una dirección IP válida.</target>
</trans-unit>
<trans-unit id="lDOGNFX" resname="This value is not a valid language.">
<source>This value is not a valid language.</source>
<target>Este valor no es un idioma válido.</target>
</trans-unit>
<trans-unit id="y9IdYkA" resname="This value is not a valid locale.">
<source>This value is not a valid locale.</source>
<target>Este valor no es una localización válida.</target>
</trans-unit>
<trans-unit id="1YC0pOd" resname="This value is not a valid country.">
<source>This value is not a valid country.</source>
<target>Este valor no es un país válido.</target>
</trans-unit>
<trans-unit id="B5ebaMp" resname="This value is already used.">
<source>This value is already used.</source>
<target>Este valor ya se ha utilizado.</target>
</trans-unit>
<trans-unit id="L6097a6" resname="The size of the image could not be detected.">
<source>The size of the image could not be detected.</source>
<target>No se pudo determinar el tamaño de la imagen.</target>
</trans-unit>
<trans-unit id="zVtJJEa" resname="The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.">
<source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
<target>El ancho de la imagen es demasiado grande ({{ width }}px). El ancho máximo permitido es de {{ max_width }}px.</target>
</trans-unit>
<trans-unit id="s8LFQGC" resname="The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.">
<source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
<target>El ancho de la imagen es demasiado pequeño ({{ width }}px). El ancho mínimo requerido es {{ min_width }}px.</target>
</trans-unit>
<trans-unit id="Z.NgqFj" resname="The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.">
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
<target>La altura de la imagen es demasiado grande ({{ height }}px). La altura máxima permitida es de {{ max_height }}px.</target>
</trans-unit>
<trans-unit id="AW1lWVM" resname="The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.">
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
<target>La altura de la imagen es demasiado pequeña ({{ height }}px). La altura mínima requerida es de {{ min_height }}px.</target>
</trans-unit>
<trans-unit id="PSdMNab" resname="This value should be the user's current password.">
<source>This value should be the user's current password.</source>
<target>Este valor debería ser la contraseña actual del usuario.</target>
</trans-unit>
<trans-unit id="gYImVyV" resname="This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.">
<source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
<target>Este valor debería tener exactamente {{ limit }} carácter.|Este valor debería tener exactamente {{ limit }} caracteres.</target>
</trans-unit>
<trans-unit id="xJ2Bcr_" resname="The file was only partially uploaded.">
<source>The file was only partially uploaded.</source>
<target>El archivo fue sólo subido parcialmente.</target>
</trans-unit>
<trans-unit id="HzkJDtF" resname="No file was uploaded.">
<source>No file was uploaded.</source>
<target>Ningún archivo fue subido.</target>
</trans-unit>
<trans-unit id="mHfEaB3" resname="No temporary folder was configured in php.ini.">
<source>No temporary folder was configured in php.ini.</source>
<target>Ninguna carpeta temporal fue configurada en php.ini o la carpeta configurada no existe.</target>
</trans-unit>
<trans-unit id="y9K3BGb" resname="Cannot write temporary file to disk.">
<source>Cannot write temporary file to disk.</source>
<target>No se pudo escribir el archivo temporal en el disco.</target>
</trans-unit>
<trans-unit id="kx3yHIM" resname="A PHP extension caused the upload to fail.">
<source>A PHP extension caused the upload to fail.</source>
<target>Una extensión de PHP hizo que la subida fallara.</target>
</trans-unit>
<trans-unit id="gTJYRl6" resname="This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.">
<source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
<target>Esta colección debe contener {{ limit }} elemento o más.|Esta colección debe contener {{ limit }} elementos o más.</target>
</trans-unit>
<trans-unit id="FFn3lVn" resname="This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.">
<source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
<target>Esta colección debe contener {{ limit }} elemento o menos.|Esta colección debe contener {{ limit }} elementos o menos.</target>
</trans-unit>
<trans-unit id="bSdilZv" resname="This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.">
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
<target>Esta colección debe contener exactamente {{ limit }} elemento.|Esta colección debe contener exactamente {{ limit }} elementos.</target>
</trans-unit>
<trans-unit id="MAzmID7" resname="Invalid card number.">
<source>Invalid card number.</source>
<target>Número de tarjeta inválido.</target>
</trans-unit>
<trans-unit id="c3REGK3" resname="Unsupported card type or invalid card number.">
<source>Unsupported card type or invalid card number.</source>
<target>Tipo de tarjeta no soportado o número de tarjeta inválido.</target>
</trans-unit>
<trans-unit id="XSVzcbV" resname="This is not a valid International Bank Account Number (IBAN).">
<source>This is not a valid International Bank Account Number (IBAN).</source>
<target>Esto no es un International Bank Account Number (IBAN) válido.</target>
</trans-unit>
<trans-unit id="yHirwNr" resname="This value is not a valid ISBN-10.">
<source>This value is not a valid ISBN-10.</source>
<target>Este valor no es un ISBN-10 válido.</target>
</trans-unit>
<trans-unit id="c_q0_ua" resname="This value is not a valid ISBN-13.">
<source>This value is not a valid ISBN-13.</source>
<target>Este valor no es un ISBN-13 válido.</target>
</trans-unit>
<trans-unit id="M4FlD6n" resname="This value is neither a valid ISBN-10 nor a valid ISBN-13.">
<source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
<target>Este valor no es ni un ISBN-10 válido ni un ISBN-13 válido.</target>
</trans-unit>
<trans-unit id="cuct0Ow" resname="This value is not a valid ISSN.">
<source>This value is not a valid ISSN.</source>
<target>Este valor no es un ISSN válido.</target>
</trans-unit>
<trans-unit id="JBLs1a1" resname="This value is not a valid currency.">
<source>This value is not a valid currency.</source>
<target>Este valor no es una divisa válida.</target>
</trans-unit>
<trans-unit id="c.WxzFW" resname="This value should be equal to {{ compared_value }}.">
<source>This value should be equal to {{ compared_value }}.</source>
<target>Este valor debería ser igual que {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="_jdjkwq" resname="This value should be greater than {{ compared_value }}.">
<source>This value should be greater than {{ compared_value }}.</source>
<target>Este valor debería ser mayor que {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="o8A8a0H" resname="This value should be greater than or equal to {{ compared_value }}.">
<source>This value should be greater than or equal to {{ compared_value }}.</source>
<target>Este valor debería ser mayor o igual que {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="bOF1fpm" resname="This value should be identical to {{ compared_value_type }} {{ compared_value }}.">
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
<target>Este valor debería ser idéntico a {{ compared_value_type }} {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="jG0QFKw" resname="This value should be less than {{ compared_value }}.">
<source>This value should be less than {{ compared_value }}.</source>
<target>Este valor debería ser menor que {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="9lWrKmm" resname="This value should be less than or equal to {{ compared_value }}.">
<source>This value should be less than or equal to {{ compared_value }}.</source>
<target>Este valor debería ser menor o igual que {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="ftTwGs." resname="This value should not be equal to {{ compared_value }}.">
<source>This value should not be equal to {{ compared_value }}.</source>
<target>Este valor debería ser distinto de {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="Bi22JLt" resname="This value should not be identical to {{ compared_value_type }} {{ compared_value }}.">
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
<target>Este valor no debería ser idéntico a {{ compared_value_type }} {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="VczCWzQ" resname="The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.">
<source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
<target>La proporción de la imagen es demasiado grande ({{ ratio }}). La máxima proporción permitida es {{ max_ratio }}.</target>
</trans-unit>
<trans-unit id="v57PXhq" resname="The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.">
<source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
<target>La proporción de la imagen es demasiado pequeña ({{ ratio }}). La mínima proporción permitida es {{ min_ratio }}.</target>
</trans-unit>
<trans-unit id="rpajj.a" resname="The image is square ({{ width }}x{{ height }}px). Square images are not allowed.">
<source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
<target>La imagen es cuadrada ({{ width }}x{{ height }}px). Las imágenes cuadradas no están permitidas.</target>
</trans-unit>
<trans-unit id="G_lu2qW" resname="The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.">
<source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
<target>La imagen está orientada horizontalmente ({{ width }}x{{ height }}px). Las imágenes orientadas horizontalmente no están permitidas.</target>
</trans-unit>
<trans-unit id="sFyGx4B" resname="The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.">
<source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
<target>La imagen está orientada verticalmente ({{ width }}x{{ height }}px). Las imágenes orientadas verticalmente no están permitidas.</target>
</trans-unit>
<trans-unit id="jZgqcpL" resname="An empty file is not allowed.">
<source>An empty file is not allowed.</source>
<target>No está permitido un archivo vacío.</target>
</trans-unit>
<trans-unit id="bcfVezI" resname="The host could not be resolved.">
<source>The host could not be resolved.</source>
<target>No se puede resolver el host.</target>
</trans-unit>
<trans-unit id="NtzKvgt" resname="This value does not match the expected {{ charset }} charset.">
<source>This value does not match the expected {{ charset }} charset.</source>
<target>La codificación de caracteres para este valor debería ser {{ charset }}.</target>
</trans-unit>
<trans-unit id="Wi2y9.N" resname="This is not a valid Business Identifier Code (BIC).">
<source>This is not a valid Business Identifier Code (BIC).</source>
<target>No es un Código de Identificación Bancaria (BIC) válido.</target>
</trans-unit>
<trans-unit id="VKDowX6" resname="Error">
<source>Error</source>
<target>Error</target>
</trans-unit>
<trans-unit id="8zqt0Ik" resname="This is not a valid UUID.">
<source>This is not a valid UUID.</source>
<target>Este valor no es un UUID válido.</target>
</trans-unit>
<trans-unit id="ru.4wkH" resname="This value should be a multiple of {{ compared_value }}.">
<source>This value should be a multiple of {{ compared_value }}.</source>
<target>Este valor debería ser múltiplo de {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="M3vyK6s" resname="This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}.">
<source>This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}.</source>
<target>Este Código de Identificación Bancaria (BIC) no está asociado con el IBAN {{ iban }}.</target>
</trans-unit>
<trans-unit id="2v2xpAh" resname="This value should be valid JSON.">
<source>This value should be valid JSON.</source>
<target>Este valor debería ser un JSON válido.</target>
</trans-unit>
<trans-unit id="9CWVEGq" resname="This collection should contain only unique elements.">
<source>This collection should contain only unique elements.</source>
<target>Esta colección debería tener exclusivamente elementos únicos.</target>
</trans-unit>
<trans-unit id="WdvZfq." resname="This value should be positive.">
<source>This value should be positive.</source>
<target>Este valor debería ser positivo.</target>
</trans-unit>
<trans-unit id="ubHMK2q" resname="This value should be either positive or zero.">
<source>This value should be either positive or zero.</source>
<target>Este valor debería ser positivo o igual a cero.</target>
</trans-unit>
<trans-unit id="IwNTzo_" resname="This value should be negative.">
<source>This value should be negative.</source>
<target>Este valor debería ser negativo.</target>
</trans-unit>
<trans-unit id="0GfwMfP" resname="This value should be either negative or zero.">
<source>This value should be either negative or zero.</source>
<target>Este valor debería ser negativo o igual a cero.</target>
</trans-unit>
<trans-unit id="fs3qQZR" resname="This value is not a valid timezone.">
<source>This value is not a valid timezone.</source>
<target>Este valor no es una zona horaria válida.</target>
</trans-unit>
<trans-unit id="40dnsod" resname="This password has been leaked in a data breach, it must not be used. Please use another password.">
<source>This password has been leaked in a data breach, it must not be used. Please use another password.</source>
<target>Esta contraseña no se puede utilizar porque está incluida en un listado de contraseñas públicas obtenido gracias a fallos de seguridad de otros sitios y aplicaciones. Por favor utilice otra contraseña.</target>
</trans-unit>
<trans-unit id="VvxxWas" resname="This value should be between {{ min }} and {{ max }}.">
<source>This value should be between {{ min }} and {{ max }}.</source>
<target>Este valor debería estar entre {{ min }} y {{ max }}.</target>
</trans-unit>
<trans-unit id="7g313cV" resname="This value is not a valid hostname.">
<source>This value is not a valid hostname.</source>
<target>Este valor no es un nombre de host válido.</target>
</trans-unit>
<trans-unit id="xwtBimR" resname="The number of elements in this collection should be a multiple of {{ compared_value }}.">
<source>The number of elements in this collection should be a multiple of {{ compared_value }}.</source>
<target>El número de elementos en esta colección debería ser múltiplo de {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="FDRZr.s" resname="This value should satisfy at least one of the following constraints:">
<source>This value should satisfy at least one of the following constraints:</source>
<target>Este valor debería satisfacer al menos una de las siguientes restricciones:</target>
</trans-unit>
<trans-unit id="WwY0IGI" resname="Each element of this collection should satisfy its own set of constraints.">
<source>Each element of this collection should satisfy its own set of constraints.</source>
<target>Cada elemento de esta colección debería satisfacer su propio conjunto de restricciones.</target>
</trans-unit>
<trans-unit id="lrbaa8g" resname="This value is not a valid International Securities Identification Number (ISIN).">
<source>This value is not a valid International Securities Identification Number (ISIN).</source>
<target>Este valor no es un número de identificación internacional de valores (ISIN) válido.</target>
</trans-unit>
<trans-unit id="6akW5mb" resname="This value should be a valid expression.">
<source>This value should be a valid expression.</source>
<target>Este valor debería ser una expresión válida.</target>
</trans-unit>
<trans-unit id="CQ0wfFa" resname="This value is not a valid CSS color.">
<source>This value is not a valid CSS color.</source>
<target>Este valor no es un color CSS válido.</target>
</trans-unit>
<trans-unit id="GAaG0KN" resname="This value is not a valid CIDR notation.">
<source>This value is not a valid CIDR notation.</source>
<target>Este valor no es una notación CIDR válida.</target>
</trans-unit>
<trans-unit id="ddJy.XP" resname="The value of the netmask should be between {{ min }} and {{ max }}.">
<source>The value of the netmask should be between {{ min }} and {{ max }}.</source>
<target>El valor de la máscara de red debería estar entre {{ min }} y {{ max }}.</target>
</trans-unit>
<trans-unit id=".SEaaBa" resname="This form should not contain extra fields.">
<source>This form should not contain extra fields.</source>
<target>Este formulario no debería contener campos adicionales.</target>
</trans-unit>
<trans-unit id="WPnLAh9" resname="The uploaded file was too large. Please try to upload a smaller file.">
<source>The uploaded file was too large. Please try to upload a smaller file.</source>
<target>El archivo subido es demasiado grande. Por favor, suba un archivo más pequeño.</target>
</trans-unit>
<trans-unit id="fvxWW3V" resname="The CSRF token is invalid. Please try to resubmit the form.">
<source>The CSRF token is invalid. Please try to resubmit the form.</source>
<target>El token CSRF no es válido. Por favor, pruebe a enviar nuevamente el formulario.</target>
</trans-unit>
<trans-unit id="eo1zeih" resname="This value is not a valid HTML5 color.">
<source>This value is not a valid HTML5 color.</source>
<target>Este valor no es un color HTML5 válido.</target>
</trans-unit>
<trans-unit id="dN.ZVc0" resname="Please enter a valid birthdate.">
<source>Please enter a valid birthdate.</source>
<target>Por favor, ingrese una fecha de cumpleaños válida.</target>
</trans-unit>
<trans-unit id="OPymPfZ" resname="The selected choice is invalid.">
<source>The selected choice is invalid.</source>
<target>La opción seleccionada no es válida.</target>
</trans-unit>
<trans-unit id="GUH6TYE" resname="The collection is invalid.">
<source>The collection is invalid.</source>
<target>La colección no es válida.</target>
</trans-unit>
<trans-unit id="14il0ha" resname="Please select a valid color.">
<source>Please select a valid color.</source>
<target>Por favor, seleccione un color válido.</target>
</trans-unit>
<trans-unit id="4AJRUCC" resname="Please select a valid country.">
<source>Please select a valid country.</source>
<target>Por favor, seleccione un país válido.</target>
</trans-unit>
<trans-unit id="xAI5mrh" resname="Please select a valid currency.">
<source>Please select a valid currency.</source>
<target>Por favor, seleccione una moneda válida.</target>
</trans-unit>
<trans-unit id="c6v9ASZ" resname="Please choose a valid date interval.">
<source>Please choose a valid date interval.</source>
<target>Por favor, elija un intervalo de fechas válido.</target>
</trans-unit>
<trans-unit id="2BR60Jg" resname="Please enter a valid date and time.">
<source>Please enter a valid date and time.</source>
<target>Por favor, ingrese una fecha y hora válidas.</target>
</trans-unit>
<trans-unit id="ofLBhv0" resname="Please enter a valid date.">
<source>Please enter a valid date.</source>
<target>Por favor, ingrese una fecha valida.</target>
</trans-unit>
<trans-unit id="Xsmm6Mc" resname="Please select a valid file.">
<source>Please select a valid file.</source>
<target>Por favor, seleccione un archivo válido.</target>
</trans-unit>
<trans-unit id="Fka0cZD" resname="The hidden field is invalid.">
<source>The hidden field is invalid.</source>
<target>El campo oculto no es válido.</target>
</trans-unit>
<trans-unit id="69ux5Ml" resname="Please enter an integer.">
<source>Please enter an integer.</source>
<target>Por favor, ingrese un número entero.</target>
</trans-unit>
<trans-unit id="TQbat_9" resname="Please select a valid language.">
<source>Please select a valid language.</source>
<target>Por favor, seleccione un idioma válido.</target>
</trans-unit>
<trans-unit id="vpa7l8w" resname="Please select a valid locale.">
<source>Please select a valid locale.</source>
<target>Por favor, seleccione una configuración regional válida.</target>
</trans-unit>
<trans-unit id="Gz8pWER" resname="Please enter a valid money amount.">
<source>Please enter a valid money amount.</source>
<target>Por favor, ingrese una cantidad de dinero válida.</target>
</trans-unit>
<trans-unit id="PRxiOhB" resname="Please enter a number.">
<source>Please enter a number.</source>
<target>Por favor, ingrese un número.</target>
</trans-unit>
<trans-unit id="seAdKJo" resname="The password is invalid.">
<source>The password is invalid.</source>
<target>La contraseña no es válida.</target>
</trans-unit>
<trans-unit id="A5k0Q20" resname="Please enter a percentage value.">
<source>Please enter a percentage value.</source>
<target>Por favor, ingrese un valor porcentual.</target>
</trans-unit>
<trans-unit id="rH6V.WA" resname="The values do not match.">
<source>The values do not match.</source>
<target>Los valores no coinciden.</target>
</trans-unit>
<trans-unit id="Eopl1Sm" resname="Please enter a valid time.">
<source>Please enter a valid time.</source>
<target>Por favor, ingrese una hora válida.</target>
</trans-unit>
<trans-unit id="ll14Sm9" resname="Please select a valid timezone.">
<source>Please select a valid timezone.</source>
<target>Por favor, seleccione una zona horaria válida.</target>
</trans-unit>
<trans-unit id="1xP1kmd" resname="Please enter a valid URL.">
<source>Please enter a valid URL.</source>
<target>Por favor, ingrese una URL válida.</target>
</trans-unit>
<trans-unit id="iMmAsrC" resname="Please enter a valid search term.">
<source>Please enter a valid search term.</source>
<target>Por favor, ingrese un término de búsqueda válido.</target>
</trans-unit>
<trans-unit id="GRMTXRX" resname="Please provide a valid phone number.">
<source>Please provide a valid phone number.</source>
<target>Por favor, proporcione un número de teléfono válido.</target>
</trans-unit>
<trans-unit id="WkYuMDd" resname="The checkbox has an invalid value.">
<source>The checkbox has an invalid value.</source>
<target>La casilla de verificación tiene un valor inválido.</target>
</trans-unit>
<trans-unit id="lY5Mzyl" resname="Please enter a valid email address.">
<source>Please enter a valid email address.</source>
<target>Por favor, ingrese una dirección de correo electrónico válida.</target>
</trans-unit>
<trans-unit id="TzSC4.o" resname="Please select a valid option.">
<source>Please select a valid option.</source>
<target>Por favor, seleccione una opción válida.</target>
</trans-unit>
<trans-unit id="qGRcTk7" resname="Please select a valid range.">
<source>Please select a valid range.</source>
<target>Por favor, seleccione un rango válido.</target>
</trans-unit>
<trans-unit id="PU.w6nC" resname="Please enter a valid week.">
<source>Please enter a valid week.</source>
<target>Por favor, ingrese una semana válida.</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@ -0,0 +1,542 @@
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" target-language="fr" datatype="plaintext" original="file.ext">
<header>
<tool tool-id="symfony" tool-name="Symfony"/>
</header>
<body>
<trans-unit id="zh5oKD9" resname="This value should be false.">
<source>This value should be false.</source>
<target>Cette valeur doit être fausse.</target>
</trans-unit>
<trans-unit id="NN2_iru" resname="This value should be true.">
<source>This value should be true.</source>
<target>Cette valeur doit être vraie.</target>
</trans-unit>
<trans-unit id="OjM_kpf" resname="This value should be of type {{ type }}.">
<source>This value should be of type {{ type }}.</source>
<target>Cette valeur doit être de type {{ type }}.</target>
</trans-unit>
<trans-unit id="f0P5pBD" resname="This value should be blank.">
<source>This value should be blank.</source>
<target>Cette valeur doit être vide.</target>
</trans-unit>
<trans-unit id="ih.4TRN" resname="The value you selected is not a valid choice.">
<source>The value you selected is not a valid choice.</source>
<target>Cette valeur doit être l'un des choix proposés.</target>
</trans-unit>
<trans-unit id="u81CkP8" resname="You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.">
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
<target>Vous devez sélectionner au moins {{ limit }} choix.|Vous devez sélectionner au moins {{ limit }} choix.</target>
</trans-unit>
<trans-unit id="nIvOQ_o" resname="You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.">
<source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
<target>Vous devez sélectionner au maximum {{ limit }} choix.|Vous devez sélectionner au maximum {{ limit }} choix.</target>
</trans-unit>
<trans-unit id="87zjiHi" resname="One or more of the given values is invalid.">
<source>One or more of the given values is invalid.</source>
<target>Une ou plusieurs des valeurs soumises sont invalides.</target>
</trans-unit>
<trans-unit id="3NeQftv" resname="This field was not expected.">
<source>This field was not expected.</source>
<target>Ce champ n'a pas été prévu.</target>
</trans-unit>
<trans-unit id="SwMV4zp" resname="This field is missing.">
<source>This field is missing.</source>
<target>Ce champ est manquant.</target>
</trans-unit>
<trans-unit id="LO2vFKN" resname="This value is not a valid date.">
<source>This value is not a valid date.</source>
<target>Cette valeur n'est pas une date valide.</target>
</trans-unit>
<trans-unit id="86dU_nv" resname="This value is not a valid datetime.">
<source>This value is not a valid datetime.</source>
<target>Cette valeur n'est pas une date valide.</target>
</trans-unit>
<trans-unit id="PSvNXdi" resname="This value is not a valid email address.">
<source>This value is not a valid email address.</source>
<target>Cette valeur n'est pas une adresse email valide.</target>
</trans-unit>
<trans-unit id="3KeHbZy" resname="The file could not be found.">
<source>The file could not be found.</source>
<target>Le fichier n'a pas été trouvé.</target>
</trans-unit>
<trans-unit id="KtJhQZo" resname="The file is not readable.">
<source>The file is not readable.</source>
<target>Le fichier n'est pas lisible.</target>
</trans-unit>
<trans-unit id="JocOVM2" resname="The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.">
<source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>Le fichier est trop volumineux ({{ size }} {{ suffix }}). Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}.</target>
</trans-unit>
<trans-unit id="YW21SPH" resname="The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.">
<source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
<target>Le type du fichier est invalide ({{ type }}). Les types autorisés sont {{ types }}.</target>
</trans-unit>
<trans-unit id="NubOmrs" resname="This value should be {{ limit }} or less.">
<source>This value should be {{ limit }} or less.</source>
<target>Cette valeur doit être inférieure ou égale à {{ limit }}.</target>
</trans-unit>
<trans-unit id="HX7TOFm" resname="This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.">
<source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
<target>Cette chaîne est trop longue. Elle doit avoir au maximum {{ limit }} caractère.|Cette chaîne est trop longue. Elle doit avoir au maximum {{ limit }} caractères.</target>
</trans-unit>
<trans-unit id="qgR8M_U" resname="This value should be {{ limit }} or more.">
<source>This value should be {{ limit }} or more.</source>
<target>Cette valeur doit être supérieure ou égale à {{ limit }}.</target>
</trans-unit>
<trans-unit id="ekfrU.c" resname="This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.">
<source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
<target>Cette chaîne est trop courte. Elle doit avoir au minimum {{ limit }} caractère.|Cette chaîne est trop courte. Elle doit avoir au minimum {{ limit }} caractères.</target>
</trans-unit>
<trans-unit id="1KV4L.t" resname="This value should not be blank.">
<source>This value should not be blank.</source>
<target>Cette valeur ne doit pas être vide.</target>
</trans-unit>
<trans-unit id="2G4Vepm" resname="This value should not be null.">
<source>This value should not be null.</source>
<target>Cette valeur ne doit pas être nulle.</target>
</trans-unit>
<trans-unit id="yDc3m6E" resname="This value should be null.">
<source>This value should be null.</source>
<target>Cette valeur doit être nulle.</target>
</trans-unit>
<trans-unit id="zKzWejA" resname="This value is not valid.">
<source>This value is not valid.</source>
<target>Cette valeur n'est pas valide.</target>
</trans-unit>
<trans-unit id="HSuBZpQ" resname="This value is not a valid time.">
<source>This value is not a valid time.</source>
<target>Cette valeur n'est pas une heure valide.</target>
</trans-unit>
<trans-unit id="snWc_QT" resname="This value is not a valid URL.">
<source>This value is not a valid URL.</source>
<target>Cette valeur n'est pas une URL valide.</target>
</trans-unit>
<trans-unit id="jpaLsb2" resname="The two values should be equal.">
<source>The two values should be equal.</source>
<target>Les deux valeurs doivent être identiques.</target>
</trans-unit>
<trans-unit id="fIlB1B_" resname="The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.">
<source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>Le fichier est trop volumineux. Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}.</target>
</trans-unit>
<trans-unit id="tW7o0t9" resname="The file is too large.">
<source>The file is too large.</source>
<target>Le fichier est trop volumineux.</target>
</trans-unit>
<trans-unit id=".exF5Ww" resname="The file could not be uploaded.">
<source>The file could not be uploaded.</source>
<target>Le téléchargement de ce fichier est impossible.</target>
</trans-unit>
<trans-unit id="d7sS5yw" resname="This value should be a valid number.">
<source>This value should be a valid number.</source>
<target>Cette valeur doit être un nombre.</target>
</trans-unit>
<trans-unit id="BS2Ez6i" resname="This file is not a valid image.">
<source>This file is not a valid image.</source>
<target>Ce fichier n'est pas une image valide.</target>
</trans-unit>
<trans-unit id="ydcT9kU" resname="This is not a valid IP address.">
<source>This is not a valid IP address.</source>
<target>Cette adresse IP n'est pas valide.</target>
</trans-unit>
<trans-unit id="lDOGNFX" resname="This value is not a valid language.">
<source>This value is not a valid language.</source>
<target>Cette langue n'est pas valide.</target>
</trans-unit>
<trans-unit id="y9IdYkA" resname="This value is not a valid locale.">
<source>This value is not a valid locale.</source>
<target>Ce paramètre régional n'est pas valide.</target>
</trans-unit>
<trans-unit id="1YC0pOd" resname="This value is not a valid country.">
<source>This value is not a valid country.</source>
<target>Ce pays n'est pas valide.</target>
</trans-unit>
<trans-unit id="B5ebaMp" resname="This value is already used.">
<source>This value is already used.</source>
<target>Cette valeur est déjà utilisée.</target>
</trans-unit>
<trans-unit id="L6097a6" resname="The size of the image could not be detected.">
<source>The size of the image could not be detected.</source>
<target>La taille de l'image n'a pas pu être détectée.</target>
</trans-unit>
<trans-unit id="zVtJJEa" resname="The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.">
<source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
<target>La largeur de l'image est trop grande ({{ width }}px). La largeur maximale autorisée est de {{ max_width }}px.</target>
</trans-unit>
<trans-unit id="s8LFQGC" resname="The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.">
<source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
<target>La largeur de l'image est trop petite ({{ width }}px). La largeur minimale attendue est de {{ min_width }}px.</target>
</trans-unit>
<trans-unit id="Z.NgqFj" resname="The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.">
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
<target>La hauteur de l'image est trop grande ({{ height }}px). La hauteur maximale autorisée est de {{ max_height }}px.</target>
</trans-unit>
<trans-unit id="AW1lWVM" resname="The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.">
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
<target>La hauteur de l'image est trop petite ({{ height }}px). La hauteur minimale attendue est de {{ min_height }}px.</target>
</trans-unit>
<trans-unit id="PSdMNab" resname="This value should be the user's current password.">
<source>This value should be the user's current password.</source>
<target>Cette valeur doit être le mot de passe actuel de l'utilisateur.</target>
</trans-unit>
<trans-unit id="gYImVyV" resname="This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.">
<source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
<target>Cette chaîne doit avoir exactement {{ limit }} caractère.|Cette chaîne doit avoir exactement {{ limit }} caractères.</target>
</trans-unit>
<trans-unit id="xJ2Bcr_" resname="The file was only partially uploaded.">
<source>The file was only partially uploaded.</source>
<target>Le fichier a été partiellement transféré.</target>
</trans-unit>
<trans-unit id="HzkJDtF" resname="No file was uploaded.">
<source>No file was uploaded.</source>
<target>Aucun fichier n'a été transféré.</target>
</trans-unit>
<trans-unit id="mHfEaB3" resname="No temporary folder was configured in php.ini.">
<source>No temporary folder was configured in php.ini.</source>
<target>Aucun répertoire temporaire n'a été configuré dans le php.ini, ou le répertoire configuré n'existe pas.</target>
</trans-unit>
<trans-unit id="y9K3BGb" resname="Cannot write temporary file to disk.">
<source>Cannot write temporary file to disk.</source>
<target>Impossible d'écrire le fichier temporaire sur le disque.</target>
</trans-unit>
<trans-unit id="kx3yHIM" resname="A PHP extension caused the upload to fail.">
<source>A PHP extension caused the upload to fail.</source>
<target>Une extension PHP a empêché le transfert du fichier.</target>
</trans-unit>
<trans-unit id="gTJYRl6" resname="This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.">
<source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
<target>Cette collection doit contenir {{ limit }} élément ou plus.|Cette collection doit contenir {{ limit }} éléments ou plus.</target>
</trans-unit>
<trans-unit id="FFn3lVn" resname="This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.">
<source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
<target>Cette collection doit contenir {{ limit }} élément ou moins.|Cette collection doit contenir {{ limit }} éléments ou moins.</target>
</trans-unit>
<trans-unit id="bSdilZv" resname="This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.">
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
<target>Cette collection doit contenir exactement {{ limit }} élément.|Cette collection doit contenir exactement {{ limit }} éléments.</target>
</trans-unit>
<trans-unit id="MAzmID7" resname="Invalid card number.">
<source>Invalid card number.</source>
<target>Numéro de carte invalide.</target>
</trans-unit>
<trans-unit id="c3REGK3" resname="Unsupported card type or invalid card number.">
<source>Unsupported card type or invalid card number.</source>
<target>Type de carte non supporté ou numéro invalide.</target>
</trans-unit>
<trans-unit id="XSVzcbV" resname="This is not a valid International Bank Account Number (IBAN).">
<source>This is not a valid International Bank Account Number (IBAN).</source>
<target>Le numéro IBAN (International Bank Account Number) saisi n'est pas valide.</target>
</trans-unit>
<trans-unit id="yHirwNr" resname="This value is not a valid ISBN-10.">
<source>This value is not a valid ISBN-10.</source>
<target>Cette valeur n'est pas un code ISBN-10 valide.</target>
</trans-unit>
<trans-unit id="c_q0_ua" resname="This value is not a valid ISBN-13.">
<source>This value is not a valid ISBN-13.</source>
<target>Cette valeur n'est pas un code ISBN-13 valide.</target>
</trans-unit>
<trans-unit id="M4FlD6n" resname="This value is neither a valid ISBN-10 nor a valid ISBN-13.">
<source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
<target>Cette valeur n'est ni un code ISBN-10, ni un code ISBN-13 valide.</target>
</trans-unit>
<trans-unit id="cuct0Ow" resname="This value is not a valid ISSN.">
<source>This value is not a valid ISSN.</source>
<target>Cette valeur n'est pas un code ISSN valide.</target>
</trans-unit>
<trans-unit id="JBLs1a1" resname="This value is not a valid currency.">
<source>This value is not a valid currency.</source>
<target>Cette valeur n'est pas une devise valide.</target>
</trans-unit>
<trans-unit id="c.WxzFW" resname="This value should be equal to {{ compared_value }}.">
<source>This value should be equal to {{ compared_value }}.</source>
<target>Cette valeur doit être égale à {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="_jdjkwq" resname="This value should be greater than {{ compared_value }}.">
<source>This value should be greater than {{ compared_value }}.</source>
<target>Cette valeur doit être supérieure à {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="o8A8a0H" resname="This value should be greater than or equal to {{ compared_value }}.">
<source>This value should be greater than or equal to {{ compared_value }}.</source>
<target>Cette valeur doit être supérieure ou égale à {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="bOF1fpm" resname="This value should be identical to {{ compared_value_type }} {{ compared_value }}.">
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
<target>Cette valeur doit être identique à {{ compared_value_type }} {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="jG0QFKw" resname="This value should be less than {{ compared_value }}.">
<source>This value should be less than {{ compared_value }}.</source>
<target>Cette valeur doit être inférieure à {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="9lWrKmm" resname="This value should be less than or equal to {{ compared_value }}.">
<source>This value should be less than or equal to {{ compared_value }}.</source>
<target>Cette valeur doit être inférieure ou égale à {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="ftTwGs." resname="This value should not be equal to {{ compared_value }}.">
<source>This value should not be equal to {{ compared_value }}.</source>
<target>Cette valeur ne doit pas être égale à {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="Bi22JLt" resname="This value should not be identical to {{ compared_value_type }} {{ compared_value }}.">
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
<target>Cette valeur ne doit pas être identique à {{ compared_value_type }} {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="VczCWzQ" resname="The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.">
<source>The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.</source>
<target>Le rapport largeur/hauteur de l'image est trop grand ({{ ratio }}). Le rapport maximal autorisé est {{ max_ratio }}.</target>
</trans-unit>
<trans-unit id="v57PXhq" resname="The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.">
<source>The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.</source>
<target>Le rapport largeur/hauteur de l'image est trop petit ({{ ratio }}). Le rapport minimal attendu est {{ min_ratio }}.</target>
</trans-unit>
<trans-unit id="rpajj.a" resname="The image is square ({{ width }}x{{ height }}px). Square images are not allowed.">
<source>The image is square ({{ width }}x{{ height }}px). Square images are not allowed.</source>
<target>L'image est carrée ({{ width }}x{{ height }}px). Les images carrées ne sont pas autorisées.</target>
</trans-unit>
<trans-unit id="G_lu2qW" resname="The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.">
<source>The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.</source>
<target>L'image est au format paysage ({{ width }}x{{ height }}px). Les images au format paysage ne sont pas autorisées.</target>
</trans-unit>
<trans-unit id="sFyGx4B" resname="The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.">
<source>The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.</source>
<target>L'image est au format portrait ({{ width }}x{{ height }}px). Les images au format portrait ne sont pas autorisées.</target>
</trans-unit>
<trans-unit id="jZgqcpL" resname="An empty file is not allowed.">
<source>An empty file is not allowed.</source>
<target>Un fichier vide n'est pas autorisé.</target>
</trans-unit>
<trans-unit id="bcfVezI" resname="The host could not be resolved.">
<source>The host could not be resolved.</source>
<target>Le nom de domaine n'a pas pu être résolu.</target>
</trans-unit>
<trans-unit id="NtzKvgt" resname="This value does not match the expected {{ charset }} charset.">
<source>This value does not match the expected {{ charset }} charset.</source>
<target>Cette valeur ne correspond pas au jeu de caractères {{ charset }} attendu.</target>
</trans-unit>
<trans-unit id="Wi2y9.N" resname="This is not a valid Business Identifier Code (BIC).">
<source>This is not a valid Business Identifier Code (BIC).</source>
<target>Ce n'est pas un code universel d'identification des banques (BIC) valide.</target>
</trans-unit>
<trans-unit id="VKDowX6" resname="Error">
<source>Error</source>
<target>Erreur</target>
</trans-unit>
<trans-unit id="8zqt0Ik" resname="This is not a valid UUID.">
<source>This is not a valid UUID.</source>
<target>Ceci n'est pas un UUID valide.</target>
</trans-unit>
<trans-unit id="ru.4wkH" resname="This value should be a multiple of {{ compared_value }}.">
<source>This value should be a multiple of {{ compared_value }}.</source>
<target>Cette valeur doit être un multiple de {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="M3vyK6s" resname="This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}.">
<source>This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}.</source>
<target>Ce code d'identification d'entreprise (BIC) n'est pas associé à l'IBAN {{ iban }}.</target>
</trans-unit>
<trans-unit id="2v2xpAh" resname="This value should be valid JSON.">
<source>This value should be valid JSON.</source>
<target>Cette valeur doit être un JSON valide.</target>
</trans-unit>
<trans-unit id="9CWVEGq" resname="This collection should contain only unique elements.">
<source>This collection should contain only unique elements.</source>
<target>Cette collection ne doit pas comporter de doublons.</target>
</trans-unit>
<trans-unit id="WdvZfq." resname="This value should be positive.">
<source>This value should be positive.</source>
<target>Cette valeur doit être strictement positive.</target>
</trans-unit>
<trans-unit id="ubHMK2q" resname="This value should be either positive or zero.">
<source>This value should be either positive or zero.</source>
<target>Cette valeur doit être supérieure ou égale à zéro.</target>
</trans-unit>
<trans-unit id="IwNTzo_" resname="This value should be negative.">
<source>This value should be negative.</source>
<target>Cette valeur doit être strictement négative.</target>
</trans-unit>
<trans-unit id="0GfwMfP" resname="This value should be either negative or zero.">
<source>This value should be either negative or zero.</source>
<target>Cette valeur doit être inférieure ou égale à zéro.</target>
</trans-unit>
<trans-unit id="fs3qQZR" resname="This value is not a valid timezone.">
<source>This value is not a valid timezone.</source>
<target>Cette valeur n'est pas un fuseau horaire valide.</target>
</trans-unit>
<trans-unit id="40dnsod" resname="This password has been leaked in a data breach, it must not be used. Please use another password.">
<source>This password has been leaked in a data breach, it must not be used. Please use another password.</source>
<target>Ce mot de passe a été divulgué lors d'une fuite de données, il ne doit plus être utilisé. Veuillez utiliser un autre mot de passe.</target>
</trans-unit>
<trans-unit id="VvxxWas" resname="This value should be between {{ min }} and {{ max }}.">
<source>This value should be between {{ min }} and {{ max }}.</source>
<target>Cette valeur doit être comprise entre {{ min }} et {{ max }}.</target>
</trans-unit>
<trans-unit id="7g313cV" resname="This value is not a valid hostname.">
<source>This value is not a valid hostname.</source>
<target>Cette valeur n'est pas un nom d'hôte valide.</target>
</trans-unit>
<trans-unit id="xwtBimR" resname="The number of elements in this collection should be a multiple of {{ compared_value }}.">
<source>The number of elements in this collection should be a multiple of {{ compared_value }}.</source>
<target>Le nombre d'éléments de cette collection doit être un multiple de {{ compared_value }}.</target>
</trans-unit>
<trans-unit id="FDRZr.s" resname="This value should satisfy at least one of the following constraints:">
<source>This value should satisfy at least one of the following constraints:</source>
<target>Cette valeur doit satisfaire à au moins une des contraintes suivantes :</target>
</trans-unit>
<trans-unit id="WwY0IGI" resname="Each element of this collection should satisfy its own set of constraints.">
<source>Each element of this collection should satisfy its own set of constraints.</source>
<target>Chaque élément de cette collection doit satisfaire à son propre jeu de contraintes.</target>
</trans-unit>
<trans-unit id="lrbaa8g" resname="This value is not a valid International Securities Identification Number (ISIN).">
<source>This value is not a valid International Securities Identification Number (ISIN).</source>
<target>Cette valeur n'est pas un code international de sécurité valide (ISIN).</target>
</trans-unit>
<trans-unit id="6akW5mb" resname="This value should be a valid expression.">
<source>This value should be a valid expression.</source>
<target>Cette valeur doit être une expression valide.</target>
</trans-unit>
<trans-unit id="CQ0wfFa" resname="This value is not a valid CSS color.">
<source>This value is not a valid CSS color.</source>
<target>Cette valeur n'est pas une couleur CSS valide.</target>
</trans-unit>
<trans-unit id="GAaG0KN" resname="This value is not a valid CIDR notation.">
<source>This value is not a valid CIDR notation.</source>
<target>Cette valeur n'est pas une notation CIDR valide.</target>
</trans-unit>
<trans-unit id="ddJy.XP" resname="The value of the netmask should be between {{ min }} and {{ max }}.">
<source>The value of the netmask should be between {{ min }} and {{ max }}.</source>
<target>La valeur du masque de réseau doit être comprise entre {{ min }} et {{ max }}.</target>
</trans-unit>
<trans-unit id=".SEaaBa" resname="This form should not contain extra fields.">
<source>This form should not contain extra fields.</source>
<target>Ce formulaire ne doit pas contenir de champs supplémentaires.</target>
</trans-unit>
<trans-unit id="WPnLAh9" resname="The uploaded file was too large. Please try to upload a smaller file.">
<source>The uploaded file was too large. Please try to upload a smaller file.</source>
<target>Le fichier téléchargé est trop volumineux. Merci d'essayer d'envoyer un fichier plus petit.</target>
</trans-unit>
<trans-unit id="fvxWW3V" resname="The CSRF token is invalid. Please try to resubmit the form.">
<source>The CSRF token is invalid. Please try to resubmit the form.</source>
<target>Le jeton CSRF est invalide. Veuillez renvoyer le formulaire.</target>
</trans-unit>
<trans-unit id="eo1zeih" resname="This value is not a valid HTML5 color.">
<source>This value is not a valid HTML5 color.</source>
<target>Cette valeur n'est pas une couleur HTML5 valide.</target>
</trans-unit>
<trans-unit id="dN.ZVc0" resname="Please enter a valid birthdate.">
<source>Please enter a valid birthdate.</source>
<target>Veuillez entrer une date de naissance valide.</target>
</trans-unit>
<trans-unit id="OPymPfZ" resname="The selected choice is invalid.">
<source>The selected choice is invalid.</source>
<target>Le choix sélectionné est invalide.</target>
</trans-unit>
<trans-unit id="GUH6TYE" resname="The collection is invalid.">
<source>The collection is invalid.</source>
<target>La collection est invalide.</target>
</trans-unit>
<trans-unit id="14il0ha" resname="Please select a valid color.">
<source>Please select a valid color.</source>
<target>Veuillez sélectionner une couleur valide.</target>
</trans-unit>
<trans-unit id="4AJRUCC" resname="Please select a valid country.">
<source>Please select a valid country.</source>
<target>Veuillez sélectionner un pays valide.</target>
</trans-unit>
<trans-unit id="xAI5mrh" resname="Please select a valid currency.">
<source>Please select a valid currency.</source>
<target>Veuillez sélectionner une devise valide.</target>
</trans-unit>
<trans-unit id="c6v9ASZ" resname="Please choose a valid date interval.">
<source>Please choose a valid date interval.</source>
<target>Veuillez choisir un intervalle de dates valide.</target>
</trans-unit>
<trans-unit id="2BR60Jg" resname="Please enter a valid date and time.">
<source>Please enter a valid date and time.</source>
<target>Veuillez saisir une date et une heure valides.</target>
</trans-unit>
<trans-unit id="ofLBhv0" resname="Please enter a valid date.">
<source>Please enter a valid date.</source>
<target>Veuillez entrer une date valide.</target>
</trans-unit>
<trans-unit id="Xsmm6Mc" resname="Please select a valid file.">
<source>Please select a valid file.</source>
<target>Veuillez sélectionner un fichier valide.</target>
</trans-unit>
<trans-unit id="Fka0cZD" resname="The hidden field is invalid.">
<source>The hidden field is invalid.</source>
<target>Le champ masqué n'est pas valide.</target>
</trans-unit>
<trans-unit id="69ux5Ml" resname="Please enter an integer.">
<source>Please enter an integer.</source>
<target>Veuillez saisir un entier.</target>
</trans-unit>
<trans-unit id="TQbat_9" resname="Please select a valid language.">
<source>Please select a valid language.</source>
<target>Veuillez sélectionner une langue valide.</target>
</trans-unit>
<trans-unit id="vpa7l8w" resname="Please select a valid locale.">
<source>Please select a valid locale.</source>
<target>Veuillez sélectionner une langue valide.</target>
</trans-unit>
<trans-unit id="Gz8pWER" resname="Please enter a valid money amount.">
<source>Please enter a valid money amount.</source>
<target>Veuillez saisir un montant valide.</target>
</trans-unit>
<trans-unit id="PRxiOhB" resname="Please enter a number.">
<source>Please enter a number.</source>
<target>Veuillez saisir un nombre.</target>
</trans-unit>
<trans-unit id="seAdKJo" resname="The password is invalid.">
<source>The password is invalid.</source>
<target>Le mot de passe est invalide.</target>
</trans-unit>
<trans-unit id="A5k0Q20" resname="Please enter a percentage value.">
<source>Please enter a percentage value.</source>
<target>Veuillez saisir un pourcentage valide.</target>
</trans-unit>
<trans-unit id="rH6V.WA" resname="The values do not match.">
<source>The values do not match.</source>
<target>Les valeurs ne correspondent pas.</target>
</trans-unit>
<trans-unit id="Eopl1Sm" resname="Please enter a valid time.">
<source>Please enter a valid time.</source>
<target>Veuillez saisir une heure valide.</target>
</trans-unit>
<trans-unit id="ll14Sm9" resname="Please select a valid timezone.">
<source>Please select a valid timezone.</source>
<target>Veuillez sélectionner un fuseau horaire valide.</target>
</trans-unit>
<trans-unit id="1xP1kmd" resname="Please enter a valid URL.">
<source>Please enter a valid URL.</source>
<target>Veuillez saisir une URL valide.</target>
</trans-unit>
<trans-unit id="iMmAsrC" resname="Please enter a valid search term.">
<source>Please enter a valid search term.</source>
<target>Veuillez saisir un terme de recherche valide.</target>
</trans-unit>
<trans-unit id="GRMTXRX" resname="Please provide a valid phone number.">
<source>Please provide a valid phone number.</source>
<target>Veuillez fournir un numéro de téléphone valide.</target>
</trans-unit>
<trans-unit id="WkYuMDd" resname="The checkbox has an invalid value.">
<source>The checkbox has an invalid value.</source>
<target>La case à cocher a une valeur non valide.</target>
</trans-unit>
<trans-unit id="lY5Mzyl" resname="Please enter a valid email address.">
<source>Please enter a valid email address.</source>
<target>Veuillez saisir une adresse email valide.</target>
</trans-unit>
<trans-unit id="TzSC4.o" resname="Please select a valid option.">
<source>Please select a valid option.</source>
<target>Veuillez sélectionner une option valide.</target>
</trans-unit>
<trans-unit id="qGRcTk7" resname="Please select a valid range.">
<source>Please select a valid range.</source>
<target>Veuillez sélectionner une plage valide.</target>
</trans-unit>
<trans-unit id="PU.w6nC" resname="Please enter a valid week.">
<source>Please enter a valid week.</source>
<target>Veuillez entrer une semaine valide.</target>
</trans-unit>
</body>
</file>
</xliff>

File diff suppressed because it is too large Load Diff