Commit e5e64130 authored by Regis's avatar Regis
Browse files

Merge branch '87-Refactor_code' into 'master'

Resolve "Refactor code"

Closes #87

See merge request a_boiteau/site-vikazimut-stage!52
parents 9ea639be df5d299e
......@@ -174,7 +174,7 @@ class Track
return $this;
}
public function nbPM()
public function nbPM(): int
{
$pm = 0;
foreach ($this->controlPoints as $controlPoint) {
......
......@@ -22,14 +22,15 @@ class ModifyParticipantMakeEventCourseType extends AbstractType
foreach ($options['course']->getOrienteer() as $track) {
if (array_key_exists($track->getName(), $duplicates)) {
if ($duplicates[$track->getName()] === 1) {
$timeOfTheTrack = $tracksSimple[$track->getName()]->getTotalTimeAsString();
$tracks[$track->getName()." [1] (".$timeOfTheTrack.")"] = $tracks[$track->getName()." (".$timeOfTheTrack.")"];
unset($tracks[$track->getName()." (".$timeOfTheTrack.")"]);
$timeOfTheTrack = $tracksSimple[$track->getName()]->getTotalTimeInHMS();
$tracks[$track->getName() . " [1] (" . $timeOfTheTrack . ")"] = $tracks[$track->getName() . " (" . $timeOfTheTrack . ")"];
unset($tracks[$track->getName() . " (" . $timeOfTheTrack . ")"]);
}
$duplicates[$track->getName()] += 1;
$tracks[$track->getName()." [".$duplicates[$track->getName()]."] (".$track->getTotalTimeAsString().")"] = $track;
$tracks[$track->getName() . " [" . $duplicates[$track->getName()] . "] (" . $track->getTotalTimeInHMS() . ")"] = $track;
} else {
$tracks[$track->getName()." (".$track->getTotalTimeAsString().")"] = $track;
$tracks[$track->getName() . " (" . $track->getTotalTimeInHMS() . ")"] = $track;
$tracksSimple[$track->getName()] = $track;
$duplicates[$track->getName()] = 1;
}
......
......@@ -85,9 +85,13 @@
<div class="col-lg-7">
<div class="hero-area-content">
<p> {% trans %}homepage.app.description{% endtrans %}</p>
<a href="https://play.google.com/store/apps/details?id=fr.ensicaen.vikazimut&hl=fr">
<button type="button" class="btn btn-outline-primary"> {% trans %}homepage.app.download{% endtrans %} &raquo;</button>
<a href="https://play.google.com/store/apps/details?id=fr.ensicaen.vikazimut">
<button type="button" class="btn btn-outline-primary"> {% trans %}homepage.app.android.download{% endtrans %} &raquo;</button>
</a>
{#&nbsp;
<a href="https://apps.apple.com/fr/app/vikazimut/">
<button type="button" class="btn btn-outline-primary"> {% trans %}homepage.app.ios.download{% endtrans %} &raquo;</button>
</a>#}
</div>
<div class="row" style="padding-top: 50px">
<div class="col-lg-6">
......
......@@ -5,42 +5,10 @@
<tool tool-id="symfony" tool-name="Symfony"/>
</header>
<body>
<trans-unit id="TqFAWIF" resname="home">
<source>home</source>
<target>Home</target>
</trans-unit>
<trans-unit id="Q1MdBAy" resname="add.course">
<source>add.course</source>
<target>Add a course</target>
</trans-unit>
<trans-unit id="nXtTkCj" resname="name.course">
<source>name.course</source>
<target>Name of the course</target>
</trans-unit>
<trans-unit id="4lQPGeQ" resname="name.already.exist">
<source>name.already.exist</source>
<target>Name already exists.</target>
</trans-unit>
<trans-unit id="EzyOuGz" resname="validate">
<source>validate</source>
<target>Validate</target>
</trans-unit>
<trans-unit id="4x32yme" resname="image.jpg">
<source>image.jpg</source>
<target>Image (JPG/JPEG)</target>
</trans-unit>
<trans-unit id="bIev36r" resname="file.xml">
<source>file.xml</source>
<target>XML file</target>
</trans-unit>
<trans-unit id="x8c0C_V" resname="file.kml">
<source>file.kml</source>
<target>KML file</target>
</trans-unit>
<trans-unit id="9OTiaRU" resname="your.courses">
<source>your.courses</source>
<target>Routes</target>
</trans-unit>
<trans-unit id="Q0oKhqf" resname="your.info">
<source>your.info</source>
<target>Your info</target>
......@@ -49,14 +17,6 @@
<source>course.title</source>
<target>%total% courses</target>
</trans-unit>
<trans-unit id="mJMkdXe" resname="Informations personnelles">
<source>Informations personnelles</source>
<target>Personal information</target>
</trans-unit>
<trans-unit id="zJA_ya9" resname="Compte utilisateur">
<source>Compte utilisateur</source>
<target>User account</target>
</trans-unit>
<trans-unit id="a8AQOD." resname="add.planner.title">
<source>add.planner.title</source>
<target>Add a planner</target>
......@@ -125,26 +85,10 @@
<source>index.home</source>
<target>Home</target>
</trans-unit>
<trans-unit id="dbghe2A" resname="click.drop.upload">
<source>click.drop.upload</source>
<target>Click or drag files</target>
</trans-unit>
<trans-unit id="5Fioji." resname="remove.file">
<source>remove.file</source>
<target>Remove file</target>
</trans-unit>
<trans-unit id="wow_l18" resname="error.upload.check.type">
<source>error.upload.check.type</source>
<target>Error during upload : please verify file extension</target>
</trans-unit>
<trans-unit id="MRHWGuC" resname="course.name">
<source>course.name</source>
<target>Name of the course</target>
</trans-unit>
<trans-unit id="Wit6Ctb" resname="file.image">
<source>file.image</source>
<target>Image file</target>
</trans-unit>
<trans-unit id="WXXPG7p" resname="preview">
<source>preview</source>
<target>Preview</target>
......@@ -251,17 +195,10 @@
</trans-unit>
<trans-unit id="qpVhm27" resname="homepage.app.description">
<source>homepage.app.description</source>
<target>Vikazimut is an Android application that allows you to perform orienteering races
in autonomy on the nature trails listed on this site.
The application provides a map of the proposed course and records the GPS track and the time spent at the markers.
The validation of the beacons can be done from the QR code reader or NFC tags of the cell phone
if the course is equipped with physical beacons or automatically by the detection of the GPS position.
The data of the completed course can then be sent to the server for an analysis of the track and passage times
and a comparison with other orienteers.</target>
</trans-unit>
<trans-unit id="C5hL_wN" resname="homepage.app.download">
<source>homepage.app.download</source>
<target>Download the application on Google Play</target>
<target>Vikazimut is a mobile application that allows you to perform orienteering courses in autonomy from maps available on this site.
The application displays the map and records the GPS track and punched times. Punching the control points can be done from the QR code or NFC tag readers of the mobile
if the course is equipped with physical control point or automatically from the GPS position.
The course statistics can then be sent to the server for an analysis of the track and punch times and a comparison with other orienteers.</target>
</trans-unit>
<trans-unit id="Opowoxi" resname="homepage.app.licence.title">
<source>homepage.app.licence.title</source>
......@@ -324,10 +261,6 @@ orienteering.</target>
<target>Vikazim is an orienteering club affiliated to the FFCO. Today, we are about 80 people practicing all orienteering sports
such as orienteering, multisport orienteering, trails...</target>
</trans-unit>
<trans-unit id="ClHubBT" resname="homepage.vikazim.description.teens">
<source>homepage.vikazim.description.teens</source>
<target>We have an orienteering school with children from 10 to 18 years old.</target>
</trans-unit>
<trans-unit id="L3tHINf" resname="read.more">
<source>read.more</source>
<target>Read more</target>
......@@ -421,10 +354,6 @@ of Computer Science.</target>
<source>track.time</source>
<target>Times</target>
</trans-unit>
<trans-unit id="r5208hN" resname="track.file">
<source>track.file</source>
<target>Files</target>
</trans-unit>
<trans-unit id="yaYWtkX" resname="track.gpstracks">
<source>track.gpstracks</source>
<target>GPS Tracks</target>
......@@ -449,46 +378,14 @@ of Computer Science.</target>
<source>track.import.title</source>
<target>Track import from GPX file</target>
</trans-unit>
<trans-unit id="KN2Pte_" resname="import.gpx.nickname">
<source>import.gpx.nickname</source>
<target>Nickname</target>
</trans-unit>
<trans-unit id="1lxHrwx" resname="import.gpx.route.type">
<source>import.gpx.route.type</source>
<target>Course type</target>
</trans-unit>
<trans-unit id="twAmtkh" resname="import.gpx.route.preset">
<source>import.gpx.route.preset</source>
<target>preset</target>
</trans-unit>
<trans-unit id="NwT62T6" resname="import.gpx.route.free">
<source>import.gpx.route.free</source>
<target>free</target>
</trans-unit>
<trans-unit id=".Ag8W_." resname="import.gpx.file">
<source>import.gpx.file</source>
<target>GPX file</target>
</trans-unit>
<trans-unit id="kKPcM2u" resname="track.map">
<source>track.map</source>
<target>Map</target>
</trans-unit>
<trans-unit id="Yn2iDCi" resname="admin.change.planner.password.title">
<source>admin.change.planner.password.title</source>
<target>Modification of password</target>
</trans-unit>
<trans-unit id="DQOevx_" resname="admin.new.planner.password">
<source>admin.new.planner.password</source>
<target>New password</target>
</trans-unit>
<trans-unit id="WPun449" resname="admin_list_planners.change_password">
<source>admin_list_planners.change_password</source>
<target>Change password</target>
</trans-unit>
<trans-unit id="uEWvBP1" resname="admin.change.planner.password.confirm">
<source>admin.change.planner.password.confirm</source>
<target>Confirm new password</target>
</trans-unit>
<trans-unit id="RJvAGcx" resname="admin_list_planners.ask.for.deletion">
<source>admin_list_planners.ask.for.deletion</source>
<target>Are you sure you want to delete permanently this planner ?</target>
......@@ -501,10 +398,6 @@ of Computer Science.</target>
<source>admin_list_planners.abort.deletion</source>
<target>No, abort</target>
</trans-unit>
<trans-unit id="Ls9sI6c" resname="admin.change.planner.password.planner">
<source>admin.change.planner.password.planner</source>
<target>Planner:</target>
</trans-unit>
<trans-unit id="8os_Foq" resname="track.import.error.invalidGpxFile">
<source>track.import.error.invalidGpxFile</source>
<target>Invalid Gpx File</target>
......@@ -545,30 +438,6 @@ of Computer Science.</target>
<source>course.description.download</source>
<target>Download map</target>
</trans-unit>
<trans-unit id="0d7tJE4" resname="mailer.hello">
<source>mailer.hello</source>
<target>Hello</target>
</trans-unit>
<trans-unit id="qEUB7r5" resname="mailer.username">
<source>mailer.username</source>
<target>Username</target>
</trans-unit>
<trans-unit id="8ngxirQ" resname="mailer.your.connection.data">
<source>mailer.your.connection.data</source>
<target>Your connection data as a planner on the server vikazimut.vikazim.fr are</target>
</trans-unit>
<trans-unit id="ibF8vDI" resname="mailer.password.reset">
<source>mailer.password.reset</source>
<target>Your password has been reset</target>
</trans-unit>
<trans-unit id="jHQP.Zg" resname="mailer.temporary.password">
<source>mailer.temporary.password</source>
<target>Temporary password</target>
</trans-unit>
<trans-unit id="9mumlvt" resname="mailer.no.reply">
<source>mailer.no.reply</source>
<target>Please do not reply to this email</target>
</trans-unit>
<trans-unit id="ZWxEZAJ" resname="admin_list_planners.ask.for.password.reset.confirmation">
<source>admin_list_planners.ask.for.password.reset.confirmation</source>
<target>Confirmation request</target>
......@@ -669,18 +538,10 @@ of Computer Science.</target>
<source>my_event_details.participants.progress</source>
<target>Progress</target>
</trans-unit>
<trans-unit id="iGMD6RN" resname="my_event_details.participants.course">
<source>my_event_details.participants.course</source>
<target>Course</target>
</trans-unit>
<trans-unit id="5Oc6vm2" resname="my_event_details.participants.score_total">
<source>my_event_details.participants.score_total</source>
<target>Total score</target>
</trans-unit>
<trans-unit id="q4kvmTB" resname="my_event_details.event_type.time">
<source>my_event_details.event_type.time</source>
<target>Time</target>
</trans-unit>
<trans-unit id="8XLkSgZ" resname="my_event_details.event_type.points">
<source>my_event_details.event_type.points</source>
<target>Points</target>
......@@ -733,26 +594,6 @@ of Computer Science.</target>
<source>event.info.participants</source>
<target>Participants</target>
</trans-unit>
<trans-unit id="sag5LKn" resname="event.info.participants.nickname">
<source>event.info.participants.nickname</source>
<target>Nickname</target>
</trans-unit>
<trans-unit id="IO9j_U9" resname="event.info.participants.score_total">
<source>event.info.participants.score_total</source>
<target>Total score</target>
</trans-unit>
<trans-unit id="LIXsdKC" resname="event.info.participants.progress">
<source>event.info.participants.progress</source>
<target>Progress</target>
</trans-unit>
<trans-unit id="PR9Zo1R" resname="event.info.participants.course">
<source>event.info.participants.course</source>
<target>Course</target>
</trans-unit>
<trans-unit id="R_o6X2c" resname="event.info.event_type.time">
<source>event.info.event_type.time</source>
<target>Time</target>
</trans-unit>
<trans-unit id="2tPDkjs" resname="event.info.event_type.points">
<source>event.info.event_type.points</source>
<target>Points</target>
......@@ -769,54 +610,10 @@ of Computer Science.</target>
<source>my_events.create.title</source>
<target>Create an event</target>
</trans-unit>
<trans-unit id="gi3Tch." resname="form.event.name">
<source>form.event.name</source>
<target>Event name</target>
</trans-unit>
<trans-unit id="3YLz5kH" resname="form.event.type">
<source>form.event.type</source>
<target>Event type</target>
</trans-unit>
<trans-unit id="K4ezA8f" resname="form.event.time">
<source>form.event.time</source>
<target>Time</target>
</trans-unit>
<trans-unit id="EuUlQn0" resname="form.event.points">
<source>form.event.points</source>
<target>Points</target>
</trans-unit>
<trans-unit id="t5Flx7i" resname="my_events.add_course.title">
<source>my_events.add_course.title</source>
<target>Add course to the event</target>
</trans-unit>
<trans-unit id="OP23nPD" resname="form.eventCourse.course">
<source>form.eventCourse.course</source>
<target>Course</target>
</trans-unit>
<trans-unit id="unquYr4" resname="form.eventCourse.imposed">
<source>form.eventCourse.imposed</source>
<target>Imposed</target>
</trans-unit>
<trans-unit id="v8oy6oh" resname="form.eventCourse.free">
<source>form.eventCourse.free</source>
<target>Free</target>
</trans-unit>
<trans-unit id="gE7123C" resname="form.eventCourse.missingPunchPenalty">
<source>form.eventCourse.missingPunchPenalty</source>
<target>Missing punch penalty</target>
</trans-unit>
<trans-unit id="8sZtsdS" resname="form.eventCourse.overTimePenalty">
<source>form.eventCourse.overTimePenalty</source>
<target>Over time penalty</target>
</trans-unit>
<trans-unit id="xDV5SCt" resname="form.eventCourse.maxTime">
<source>form.eventCourse.maxTime</source>
<target>Max time (keep to 0 for don't have) in hour:minute</target>
</trans-unit>
<trans-unit id="bMeOHKb" resname="form.eventCourse.format">
<source>form.eventCourse.format</source>
<target>Format</target>
</trans-unit>
<trans-unit id="lT8GpWn" resname="my_events.courses.title">
<source>my_events.courses.title</source>
<target>Event courses</target>
......@@ -893,10 +690,6 @@ of Computer Science.</target>
<source>my_events.manage.participant.add</source>
<target>Add a participant</target>
</trans-unit>
<trans-unit id="wxpVDU7" resname="form.participant.name">
<source>form.participant.name</source>
<target>Nickname</target>
</trans-unit>
<trans-unit id="ltDZyxx" resname="my_events.manageParticipant">
<source>my_events.manageParticipant</source>
<target>Manage the participants</target>
......@@ -945,14 +738,6 @@ of Computer Science.</target>
<source>my_event_details.event_type.cumulativeTime</source>
<target>Cumulative time</target>
</trans-unit>
<trans-unit id="jkCCcmh" resname="form.event.championship">
<source>form.event.championship</source>
<target>Championship</target>
</trans-unit>
<trans-unit id="33w84ZF" resname="form.event.cumulativeTime">
<source>form.event.cumulativeTime</source>
<target>Cumulative time</target>
</trans-unit>
<trans-unit id="eh.NurZ" resname="my_events.create.championship.description">
<source>my_events.create.championship.description</source>
<target>A race earns a score out of 1000, the classification is made on the total of these scores.</target>
......@@ -1049,10 +834,6 @@ of Computer Science.</target>
<source>my_event.track.modify.abort</source>
<target>Cancel</target>
</trans-unit>
<trans-unit id="Ggg8lW3" resname="form.modifyParticipantMakeEventCourse.track">
<source>form.modifyParticipantMakeEventCourse.track</source>
<target>Select a track :</target>
</trans-unit>
<trans-unit id="U.CBTcC" resname="upload.file.too.big">
<source>upload.file.too.big</source>
<target>Error, the file is too big</target>
......@@ -1065,10 +846,6 @@ of Computer Science.</target>
<source>my_event_details.courses_table.modify</source>
<target>Modify</target>
</trans-unit>
<trans-unit id="7gV9hhn" resname="my_events.manage_courses.modify">
<source>my_events.manage_courses.modify</source>
<target>Modify</target>
</trans-unit>
<trans-unit id="Qve6fQ4" resname="my_events.add_course.confirm">
<source>my_events.add_course.confirm</source>
<target>Add</target>
......@@ -1157,22 +934,6 @@ of Computer Science.</target>
<source>my_event.manuallySetPenalty.abort</source>
<target>Cancel</target>
</trans-unit>
<trans-unit id="Nx2_QHl" resname="form.ManuallySetPenalty.participant">
<source>form.ManuallySetPenalty.participant</source>
<target>Participant</target>
</trans-unit>
<trans-unit id="DLO2w1h" resname="form.ManuallySetPenalty.eventCourse">
<source>form.ManuallySetPenalty.eventCourse</source>
<target>Race of the event</target>
</trans-unit>
<trans-unit id="F6TCtti" resname="form.ManuallySetPenalty.nbPM">
<source>form.ManuallySetPenalty.nbPM</source>
<target>Number of Missing Punch</target>
</trans-unit>
<trans-unit id="MMzQHZL" resname="form.ManuallySetPenalty.nbOT">
<source>form.ManuallySetPenalty.nbOT</source>
<target>Number of minutes exceeded</target>
</trans-unit>
<trans-unit id="Imw25C4" resname="course.notPublished.message">
<source>course.notPublished.message</source>
<target>Map currently not public</target>
......@@ -1201,6 +962,14 @@ of Computer Science.</target>
<source>course.indicate.end.day</source>
<target>Accessibility ends on (select day)</target>
</trans-unit>
<trans-unit id="GNgOzbC" resname="homepage.app.android.download">
<source>homepage.app.android.download</source>
<target>Google Play Preview</target>
</trans-unit>
<trans-unit id="BeuPCvI" resname="homepage.app.ios.download">
<source>homepage.app.ios.download</source>
<target>Apple Store Preview</target>
</trans-unit>
</body>
</file>
</xliff>
......@@ -29,10 +29,6 @@
<source>password.reset</source>
<target>Réinitialiser le mot de passe</target>
</trans-unit>
<trans-unit id="jWSark0" resname="password.invalid_length">
<source>password.invalid_length</source>
<target><![CDATA[Mot de passe trop court (> {length} caractères)]]></target>
</trans-unit>
<trans-unit id="YjyrYHG" resname="password.change">
<source>password.change</source>
<target>Réinitialiser</target>
......@@ -49,10 +45,6 @@
<source>course.add</source>
<target>Ajouter un parcours</target>
</trans-unit>
<trans-unit id="ylxCKj4" resname="course.modify">
<source>course.modify</source>
<target>Modifier le parcours</target>
</trans-unit>
<trans-unit id="MRHWGuC" resname="course.name">
<source>course.name</source>
<target>Nom du parcours</target>
......@@ -93,14 +85,6 @@
<source>user_modify.cancel</source>
<target>Annuler</target>
</trans-unit>
<trans-unit id="u.xqv43" resname="user_modify.new_password">
<source>user_modify.new_password</source>
<target>Nouveau mot de passe</target>
</trans-unit>
<trans-unit id="s5VaQQ5" resname="user_modify.renew_password">
<source>user_modify.renew_password</source>
<target>Confirmation du mot de passe</target>
</trans-unit>
<trans-unit id="fcZUzI3" resname="admin_list_planners.title">
<source>admin_list_planners.title</source>
<target>Liste des traceurs</target>
......@@ -137,22 +121,6 @@
<source>preview</source>
<target>Aperçu</target>
</trans-unit>
<trans-unit id="bIev36r" resname="file.xml">
<source>file.xml</source>
<target>Fichier XML</target>
</trans-unit>
<trans-unit id="x8c0C_V" resname="file.kml">
<source>file.kml</source>
<target>Fichier KML</target>
</trans-unit>
<trans-unit id="Wit6Ctb" resname="file.image">
<source>file.image</source>
<target>Fichier image</target>
</trans-unit>
<trans-unit id="dbghe2A" resname="click.drop.upload">
<source>click.drop.upload</source>
<target>Cliquer ou déplacer des fichiers</target>
</trans-unit>
<trans-unit id="ihthmKK" resname="log.in">
<source>log.in</source>
<target>Se connecter</target>
......@@ -165,14 +133,6 @@
<source>modify.your.info</source>
<target>Modifier vos données personnelles</target>
</trans-unit>
<trans-unit id="UKWx86G" resname="modify.your.password">
<source>modify.your.password</source>
<target>Modifier votre mot de passe</target>
</trans-unit>
<trans-unit id="ECwyqht" resname="modify.your.already.exist">
<source>modify.your.already.exist</source>
<target>Nom de traceur déjà existant.</target>
</trans-unit>
<trans-unit id="7zJf_Ut" resname="show_course.title">
<source>show_course.title</source>
<target>Mes Parcours</target>
......@@ -213,126 +173,14 @@
<source>delete_track.unselect_all</source>
<target>Tout désélectionner</target>
</trans-unit>
<trans-unit id="5Fioji." resname="remove.file">
<source>remove.file</source>
<target>Supprimer le fichier</target>
</trans-unit>
<trans-unit id="gqNTf.D" resname="name">
<source>name</source>
<target>Identifiant</target>
</trans-unit>
<trans-unit id="giREF.l" resname="email">
<source>email</source>
<target>Adresse mail</target>
</trans-unit>
<trans-unit id="RVadpX9" resname="phone">
<source>phone</source>
<target>Numéro de téléphone</target>
</trans-unit>
<trans-unit id="n_HWswQ" resname="your.email">
<source>your.email</source>
<target>Mail : %email%</target>
</trans-unit>
<trans-unit id="Q0oKhqf" resname="your.info">
<source>your.info</source>
<target>Infos personnelles</target>
</trans-unit>
<trans-unit id="x52uBtJ" resname="your.phone">
<source>your.phone</source>
<target>Téléphone : %phone%</target>
</trans-unit>
<trans-unit id="1TrEmbU" resname="missing.control_point.title">
<source>missing.control_point.title</source>
<target>Balises manquantes</target>
</trans-unit>
<trans-unit id="f19KtgO" resname="no.phone.given">
<source>no.phone.given</source>
<target>Pas de téléphone renseigné.</target>
</trans-unit>
<trans-unit id="xaTrN5n" resname="no.image.submitted">
<source>no.image.submitted</source>
<target>Pas de fichier image.</target>
</trans-unit>
<trans-unit id="C0Sk_lN" resname="no.kml.submitted">
<source>no.kml.submitted</source>
<target>Pas de fichier KML.</target>
</trans-unit>
<trans-unit id="CouE33v" resname="no.xml.submitted">
<source>no.xml.submitted</source>
<target>Pas de fichier XML.</target>
</trans-unit>
<trans-unit id="wow_l18" resname="error.upload.check.type">
<source>error.upload.check.type</source>
<target>Erreur durant le téléversement : vérifiez le type du fichier.</target>
</trans-unit>
<trans-unit id="jJ5Qgom" resname="error.no">
<source>error.no</source>
<target>Aucune erreur.</target>
</trans-unit>
<trans-unit id="1vWe3pC" resname="error.unknown">
<source>error.unknown</source>
<target>Erreur inconnue.</target>
</trans-unit>
<trans-unit id="1w_gCgy" resname="error.course.name.invalid">
<source>error.course.name.invalid</source>
<target>Erreur : Nom de parcours invalide. Caractères autorisés : [a-z, A-Z, 0-9, _, (, ), [, ], \, -, ', espace]</target>
</trans-unit>
<trans-unit id="_04LHnv" resname="error.image.does.not.exist">
<source>error.image.does.not.exist</source>
<target>Erreur : l'image n'existe pas</target>
</trans-unit>
<trans-unit id="q3XSe7K" resname="error.image.invalide.only.jpg.png.accepted">
<source>error.image.invalide.only.jpg.png.accepted</source>
<target>Erreur : Format d'image refusé. Veuillez utiliser une image au format PNG ou JPG</target>
</trans-unit>
<trans-unit id="ACHYxy5" resname="error.xml.empty">
<source>error.xml.empty</source>
<target>Erreur : Fichier XML vide.</target>
</trans-unit>
<trans-unit id="pWXaEgd" resname="error.xml.structure.invalid">
<source>error.xml.structure.invalid</source>
<target>Erreur : Fichier XML invalide.</target>
</trans-unit>
<trans-unit id="md4DpnB" resname="error.xml.position.invalid">
<source>error.xml.position.invalid</source>
<target>Erreur : Il manque les positions des balises dans le fichier XML.</target>
</trans-unit>
<trans-unit id="3MgHhKH" resname="error.xml.no.course.define">
<source>error.xml.no.course.define</source>
<target>Erreur : Aucune course trouvée dans le fichier XML</target>
</trans-unit>
<trans-unit id="D_tTn2H" resname="error.xml.no.start.end">
<source>error.xml.no.start.end</source>
<target>Erreur : Il manque le départ et l'arrivée dans le fichier XML.</target>
</trans-unit>
<trans-unit id="BHMC9R8" resname="error.xml.invalid.control_point">
<source>error.xml.invalid.control_point</source>