missing french translations in main UI

merge-requests/1/head
Julien Veyssier 2016-12-15 19:22:45 +01:00
parent 10d15d86a9
commit 3b50d85718
3 changed files with 47 additions and 23 deletions

View File

@ -7,13 +7,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased] ## [Unreleased]
### Added ### Added
- file description field - file description field
- 'destination' readonly field indicating full save path
- admin setting section to add extra symbols - admin setting section to add extra symbols
- french translation - french translation
### Changed ### Changed
- keep time information in loaded tracks/routes/waypoints, written in saved files - keep time information in loaded tracks/routes/waypoints, written in saved files
- design : borders around file trees, button icons
- improve load and save : use OC dialogs instead of jqueryfiletree - improve load and save : use OC dialogs instead of jqueryfiletree
## 0.0.2 2016-12-08 ## 0.0.2 2016-12-08

View File

@ -444,25 +444,25 @@ function onCreated(type, layer){
var popupTitle; var popupTitle;
var layerType; var layerType;
if (type === 'polyline' || type === 'track'){ if (type === 'polyline' || type === 'track'){
popupTitle = 'Track'; popupTitle = t('gpxedit', 'Track');
layerType = 'track'; layerType = 'track';
} }
else if (type === 'route') { else if (type === 'route') {
popupTitle = 'Route'; popupTitle = t('gpxedit', 'Route');
layerType = 'route'; layerType = 'route';
} }
else if (type === 'marker') { else if (type === 'marker') {
popupTitle = 'Waypoint'; popupTitle = t('gpxedit', 'Waypoint');
layerType = 'marker'; layerType = 'marker';
} }
var popupTxt = '<h2 class="popupTitle">'+popupTitle+'</h2><table class="popupdatatable">'+ var popupTxt = '<h2 class="popupTitle">'+popupTitle+'</h2><table class="popupdatatable">'+
'<tr><td>Name</td><td><input class="layerName"></input></td></tr>'+ '<tr><td>'+t('gpxedit', 'Name')+'</td><td><input class="layerName"></input></td></tr>'+
'<tr><td>Description</td><td><textarea class="layerDesc"></textarea></td></tr>'+ '<tr><td>'+t('gpxedit', 'Description')+'</td><td><textarea class="layerDesc"></textarea></td></tr>'+
'<tr><td>Comment</td><td><textarea class="layerCmt"></textarea></td></tr>'; '<tr><td>'+t('gpxedit', 'Comment')+'</td><td><textarea class="layerCmt"></textarea></td></tr>';
if (type === 'marker') { if (type === 'marker') {
popupTxt = popupTxt + '<tr><td>Symbol</td><td><select role="symbol">'; popupTxt = popupTxt + '<tr><td>'+t('gpxedit', 'Symbol')+'</td><td><select role="symbol">';
popupTxt = popupTxt + '<option value="">No symbol</option>'; popupTxt = popupTxt + '<option value="">'+t('gpxedit', 'No symbol')+'</option>';
for (var cl in symbolIcons){ for (var cl in symbolIcons){
if (cl !== 'marker'){ if (cl !== 'marker'){
popupTxt = popupTxt + '<option value="'+cl+'">'+cl+'</option>'; popupTxt = popupTxt + '<option value="'+cl+'">'+cl+'</option>';
@ -804,18 +804,24 @@ function checkKey(e){
} }
} }
function showFailedSuccessAnimation(path, message){ function showSaveFailAnimation(path, message){
$('#failed').find('b#content').html('Failed to save file '+path+'<br/>'+message); $('#failed').find('b#content').html(t('gpxedit', 'Failed to save file')+' '+path+'<br/>'+message);
$('#failed').fadeIn(); $('#failed').fadeIn();
setTimeout(hideFailedSuccessAnimation, 4000); setTimeout(hideFailedAnimation, 4000);
} }
function hideFailedSuccessAnimation(){ function showFailAnimation(message){
$('#failed').find('b#content').html(message);
$('#failed').fadeIn();
setTimeout(hideFailedAnimation, 4000);
}
function hideFailedAnimation(){
$('#failed').fadeOut(); $('#failed').fadeOut();
} }
function showSaveSuccessAnimation(path){ function showSaveSuccessAnimation(path){
$('#saved').find('b#content').html('File successfully saved as<br/>'+path); $('#saved').find('b#content').html(t('gpxedit', 'File successfully saved as')+'<br/>'+path);
$('#saved').fadeIn(); $('#saved').fadeIn();
setTimeout(hideSaveSuccessAnimation, 4000); setTimeout(hideSaveSuccessAnimation, 4000);
} }
@ -1069,16 +1075,16 @@ function saveAction(targetPath){
var url = OC.generateUrl('/apps/gpxedit/savegpx'); var url = OC.generateUrl('/apps/gpxedit/savegpx');
$.post(url, req).done(function (response) { $.post(url, req).done(function (response) {
if (response.status === 'fiw'){ if (response.status === 'fiw'){
showFailedSuccessAnimation(saveFilePath, 'Impossible to write file : write access denied'); showSaveFailAnimation(saveFilePath, t('gpxedit', 'Impossible to write file')+' : '+t('gpxedit', 'write access denied'));
} }
else if (response.status === 'fu'){ else if (response.status === 'fu'){
showFailedSuccessAnimation(saveFilePath, 'Impossible to write file : folder does not exist'); showSaveFailAnimation(saveFilePath, t('gpxedit', 'Impossible to write file')+' : '+t('gpxedit', 'folder does not exist'));
} }
else if (response.status === 'fw'){ else if (response.status === 'fw'){
showFailedSuccessAnimation(saveFilePath, 'Impossible to write file : folder write access denied'); showSaveFailAnimation(saveFilePath, t('gpxedit', 'Impossible to write file')+' : '+t('gpxedit', 'folder write access denied'));
} }
else if (response.status === 'bfn'){ else if (response.status === 'bfn'){
showFailedSuccessAnimation(saveFilePath, 'Bad file name, must end with ".gpx"'); showSaveFailAnimation(saveFilePath, t('gpxedit', 'Bad file name, must end with ".gpx"'));
} }
else{ else{
showSaveSuccessAnimation(saveFilePath); showSaveSuccessAnimation(saveFilePath);
@ -1158,10 +1164,15 @@ $(document).ready(function(){
}); });
$('button#saveButton').click(function(e){ $('button#saveButton').click(function(e){
if (gpxedit.editableLayers.getLayers().length === 0){
showFailAnimation(t('gpxedit', 'There is nothing to save'));
}
else{
var filename = $('#saveName').val(); var filename = $('#saveName').val();
OC.dialogs.filepicker(t('gpxedit', 'Where to save')+' <b>'+filename+'</b>', function(targetPath) { OC.dialogs.filepicker(t('gpxedit', 'Where to save')+' <b>'+filename+'</b>', function(targetPath) {
saveAction(targetPath); saveAction(targetPath);
}, false, "httpd/unix-directory", true); }, false, "httpd/unix-directory", true);
}
}); });
// Custom tile server management // Custom tile server management

View File

@ -2,9 +2,24 @@ OC.L10N.register(
"gpxedit", "gpxedit",
{ {
"Where to save" : "Où enregistrer", "Where to save" : "Où enregistrer",
"Track" : "Trace",
"Waypoint" : "Étape",
"Name" : "Nom",
"Comment" : "Commentaire",
"Symbol" : "Symbole",
"No symbol" : "Aucun symbole",
"File successfully saved as" : "Fichier enregistré avec succès :",
"There is nothing to save" : "Il n'y a rien à sauver",
"Impossible to load this file. " : "Impossible de charger ce fichier. ", "Impossible to load this file. " : "Impossible de charger ce fichier. ",
"Supported formats are gpx, kml, csv (unicsv) and jpg." : "Les formats pris en charge sont gpx, kml, csv (unicsv) et jpg", "Supported formats are gpx, kml, csv (unicsv) and jpg." : "Les formats pris en charge sont gpx, kml, csv (unicsv) et jpg",
"Load error" : "Erreur de chargement", "Load error" : "Erreur de chargement",
"Impossible to write file" : "Impossible d'écrire le fichier",
"write access denied" : "Droit d'accès d'écriture refusé",
"folder does not exist" : "Le dossier n'existe pas",
"folder write access denied" : "Droit d'accès d'écriture pour le dossier refusé",
"Bad file name, must end with \".gpx\"" : "Nom mal formé, doit finir par \".gpx\"",
"Load file (gpx, kml, csv, png)" : "Charger un fichier (gpx, kml, csv, png)",
"Failed to save file" : "Échec à l'enregistrement du fichier",
"Draw a track" : "Dessiner une trace", "Draw a track" : "Dessiner une trace",
"Add a waypoint" : "Ajouter une étape", "Add a waypoint" : "Ajouter une étape",
"Edit" : "Éditer", "Edit" : "Éditer",