Commit 42f8eb4a authored by Erase's avatar Erase

Multilingual support

parent db1c5374
......@@ -9,7 +9,7 @@
}
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<html lang="<?php echo \Config::get('language');?>" dir="ltr">
<head>
<title>RSS-Fusion - Démo</title>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="chrome=1"><![endif]-->
......@@ -46,7 +46,7 @@
<div class="content">
<hgroup>
<h1>RSS-Fusion</h1>
<h2>Fusion et filtre de flux RSS</h2>
<h2 data-lng>Fusion et filtre de flux RSS</h2>
</hgroup>
<div class="clear"></div>
</div>
......@@ -57,14 +57,14 @@
<section id="xmlœ">
<div class="separator">
<div class="line"></div>
<h2>Créer un flux personnalisé</h2>
<h2 data-lng>Créer un flux personnalisé</h2>
<div class="line"></div>
</div>
<div class="clear"></div>
<div class="xml-form shadow" id="form">
<form id="xml_form" method="POST" action="" accept-charset="UTF-8">
<fieldset class="full-form">
<label for="flux">URL des flux RSS à fusionner (un lien par ligne)</label>
<label for="flux" data-lng>URL des flux RSS à fusionner (un lien par ligne)</label>
<textarea id="flux" name="flux"></textarea>
</fieldset>
......@@ -74,43 +74,43 @@
<div class="clear"></div>
<fieldset id="question" class="full-form">
<h3>Options des items</h3>
<span>Je désire </span>
<h3 data-lng>Options des items</h3>
<span data-lng>Je désire</span>
<select name="filter" id="filter">
<option value="show">afficher</option>
<option value="hide">masquer</option>
<option value="show" data-lng>afficher</option>
<option value="hide" data-lng>masquer</option>
</select>
<span>en effectuant ma recherche sur</span>
<span data-lng>en effectuant ma recherche sur</span>
<select name="where" id="where">
<option value="title">le titre</option>
<option value="description">la description</option>
<option value="all">le titre et la description</option>
<option value="title" data-lng>le titre</option>
<option value="description" data-lng>la description</option>
<option value="all" data-lng>le titre et la description</option>
</select>
<span>les items contenant le(s) mot(s) clés (séparer chaque mot clé par une virgule) : </span>
<span data-lng>les items contenant le(s) mot(s) clés (séparer chaque mot clé par une virgule) :</span>
<input type="text" name="words" value="" id="words">
</fieldset>
<div class="clear"></div>
<div class="bottom-shadow"></div>
<div class="no-shadow hidden"></div>
<div class="clear"></div>
<h3>Options du flux généré</h3>
<h3 data-lng>Options du flux généré</h3>
<fieldset>
<label for="titre">Titre du flux général</label>
<input type="text" name="titre" value="Flux personnalisé RSS Fusion" id="titre">
<label for="titre" data-lng>Titre du flux général</label>
<input data-lng="value" type="text" name="titre" value="Flux personnalisé RSS Fusion" id="titre">
</fieldset>
<fieldset>
<label for="desc">Description du flux général</label>
<input type="text" name="desc" value="Flux généré avec RSS Fusion" id="desc">
<label for="desc" data-lng>Description du flux général</label>
<input data-lng="value" type="text" name="desc" value="Flux généré avec RSS Fusion" id="desc">
</fieldset>
<fieldset class="full-form">
<label for="link">Base URL du flux général</label>
<label for="link" data-lng>Base URL du flux général</label>
<input type="text" name="link" value="<?php echo ((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] === 'on' || $_SERVER['HTTPS'] === 1)) || $_SERVER['SSL'] ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);?>" id="link">
</fieldset>
<div class="clear"></div>
<fieldset class="fsubmit full-form">
<div id="ajax-message"></div>
<div class="clear"></div>
<input id="submit" type="button" class="btn btn-success btn-submit" value="Générer !">
<input data-lng="value" id="submit" type="button" class="btn btn-success btn-submit" value="Générer !">
<div class="clear"></div>
<div id="rss-lk"></div>
</fieldset>
......@@ -121,11 +121,11 @@
<div class="sectionblue">
<footer id="footer">
<div class="wrapper">
Outil réalisé à partir de <a href="https://framagit.org/Erase/RSS-Fusion" target="_blank" title="RSS-Fusion sur Framagit">RSS-Fusion</a>
<span data-lng>Outil réalisé à partir de</span> <a href="https://framagit.org/Erase/RSS-Fusion" target="_blank" title="RSS-Fusion sur Framagit">RSS-Fusion</a>
&nbsp; &nbsp;| &nbsp; &nbsp; 
Réalisé par <a href="http://www.green-effect.Fr" target="_blank" title="Green Effect">un développeur paysagiste</a> sous licence BY-NC-SA 4.0
<span data-lng>Réalisé par</span> <a href="http://www.green-effect.Fr" target="_blank" title="Green Effect" data-lng>un développeur paysagiste</a> <span data-lng>sous licence BY-NC-SA 4.0</span>
&nbsp; &nbsp;| &nbsp; &nbsp; 
Sources disponibles sur <a href="https://framagit.org/Erase/RSS-Fusion-Demo" target="_blank" title="RSS-Fusion-Démo sur Framagit">Framagit</a>
<span data-lng>Sources disponibles sur</span> <a href="https://framagit.org/Erase/RSS-Fusion-Demo" target="_blank" title="RSS-Fusion-Démo sur Framagit">Framagit</a>
&nbsp; &nbsp;| &nbsp; &nbsp; 
<span class="small">version 0.6.3b</span>
</div>
......
//~ Init
$(document).ready(function(){
//~ Languages
$('[data-lng]').css({'opacity': 0, 'visibility': 'hidden'});
var _lang = [];
var cur_lang = ($('html').attr('lang') && $('html').attr('lang') !== "" ? $('html').attr('lang') : "fr");
$.getJSON('lang/'+cur_lang+'.json', function(jsnlab){
_lang[cur_lang] = jsnlab;
//~ Load default text
$('[data-lng]').each(function(index){
var $this = $(this);
if($this.attr('data-lng') === ''){
$this.text(label($this.text()));
}else{
$this.attr($this.attr('data-lng'), label($this.attr($this.attr('data-lng'))));
}
});
$('[data-lng]').css({'opacity': 1, 'visibility': 'visible'});
});
//~ Form & AJAX request
$('#submit').click(function(){
var $this = $(this),
$rsslk = $('#rss-lk'),
......@@ -9,7 +30,7 @@ $(document).ready(function(){
$('#ajax-message').hide().empty();
$this.attr('disabled', 'disabled');
$('html, body').scrollTo($rsslk, 'fast');
$rsslk.html("<span class='ajax-loader'></span><span class=''>Génération en cours</span>");
$rsslk.html("<span class='ajax-loader'></span><span>"+label('Génération en cours')+"</span>");
setTimeout(function(){
$.ajax({
......@@ -23,14 +44,11 @@ $(document).ready(function(){
$this.removeAttr('disabled');
if(!data || !data.sucess){
$rsslk.empty();
show_msg(data.message);
show_msg(label(data.message));
}else{
$rsslk.html("<br /><br /><a class='btn btn-primary' id='n' href='"+data['data'].file+"' target='_blank'>"+data.message+"</a>");
$rsslk.html("<br /><br /><a class='btn btn-primary' id='n' href='"+data['data'].file+"' target='_blank'>"+label(data.message)+"</a>");
if(isn){
$n = $('#n');
$n.html(
$n.text().replace('le lien RSS', 'le NOUVEAU lien RSS')
);
if($n.hasClass('btn-primary')){
$n.removeClass('btn-primary').addClass('btn-info');
}else{
......@@ -43,72 +61,80 @@ $(document).ready(function(){
},
statusCode: {
404: function() {
show_error("La page cible est introuvable.");
show_error(label("La page cible est introuvable."));
},
500: function(){
show_error("Erreur serveur sur la page cible.");
show_error(label("Erreur serveur sur la page cible."));
},
204: function(){
show_error("Aucun retour serveur");
show_error(label("Aucun retour serveur"));
}
},
error: function(){
show_msg("Impossible de réaliser le traitement distant.");
show_msg(label("Impossible de réaliser le traitement distant."));
}
});
}, 1000);
} else {
show_msg("Merci de renseigner au moins une URL de flux RSS");
show_msg(label("Merci de renseigner au moins une URL de flux RSS"));
}
});
});
function label(k){
if(k && k !== "" && _lang && typeof(_lang) !== 'undefined'){
if(_lang[cur_lang] && typeof(_lang[cur_lang]) == 'object' && _lang[cur_lang][k] && _lang[cur_lang][k] !== ""){
return _lang[cur_lang][k];
}
}
return false;
}
function show_msg(msg) {
$('html, body').scrollTo( $('#ajax-message'), 'fast' );
if(msg === ""){
msg = "Une erreur est survenue";
function show_msg(msg) {
$('html, body').scrollTo( $('#ajax-message'), 'fast' );
if(msg === ""){
msg = label("Une erreur est survenue");
}
$('#ajax-message').css('display','block').html(msg);
}
$('#ajax-message').css('display','block').html(msg);
}
function show_error(msg){
if(typeof(debugShow) !== 'undefined' && debugShow){
$('.modal-background').remove();
$('body').append('<div class="modal-background"><div class="modal-body"><h2 style="font-weight:bold;text-decoration:underline;font-size:120%;margin-bottom:12px;">Une erreur est survenue :</h2><pre>'+msg+'</pre></div></div>');
$('.modal-background')
.css({
'position': 'fixed',
'left': 0,
'top': 0,
'right': 0,
'bottom': 0,
'background': 'rgba(0, 0, 0, 0.75)',
'display': 'none',
'cursor':'pointer'
})
.fadeIn()
.click(function(){
$(this).fadeOut().find('.modal-body').slideUp();
})
.find('.modal-body')
.css({
'position': 'fixed',
'width': '350px',
'height': '200px',
'left': '50%',
'top': '50%',
'margin-left': '-195px',
'margin-top': '-170px',
'background': '#fff',
'display': 'none',
'padding': '15px',
'cursor': 'default'
})
.click(function(event){
event.stopPropagation();
})
.slideDown();
function show_error(msg){
if(typeof(debugShow) !== 'undefined' && debugShow){
$('.modal-background').remove();
$('body').append('<div class="modal-background"><div class="modal-body"><h2 style="font-weight:bold;text-decoration:underline;font-size:120%;margin-bottom:12px;">'+label("Une erreur est survenue")+' :</h2><pre>'+msg+'</pre></div></div>');
$('.modal-background')
.css({
'position': 'fixed',
'left': 0,
'top': 0,
'right': 0,
'bottom': 0,
'background': 'rgba(0, 0, 0, 0.75)',
'display': 'none',
'cursor':'pointer'
})
.fadeIn()
.click(function(){
$(this).fadeOut().find('.modal-body').slideUp();
})
.find('.modal-body')
.css({
'position': 'fixed',
'width': '350px',
'height': '200px',
'left': '50%',
'top': '50%',
'margin-left': '-195px',
'margin-top': '-170px',
'background': '#fff',
'display': 'none',
'padding': '15px',
'cursor': 'default'
})
.click(function(event){
event.stopPropagation();
})
.slideDown();
}
}
}
\ No newline at end of file
});
\ No newline at end of file
{
"Fusion et filtre de flux RSS" : "Mix, filter and dedup RSS feeds!",
"Créer un flux personnalisé" : "Create your personal feed",
"URL des flux RSS à fusionner (un lien par ligne)" : "URLs of the existing source feeds, one per line",
"Options des items" : "Items options",
"Je désire" : "I want to",
"afficher" : "include",
"masquer" : "exclude",
"en effectuant ma recherche sur" : "items where the",
"le titre" : "title",
"la description" : "description",
"le titre et la description" : "title and description",
"les items contenant le(s) mot(s) clés (séparer chaque mot clé par une virgule) :" : "contain the word(s) (comma ',' separated words) :",
"Options du flux généré" : "Generated feed options",
"Titre du flux général" : "Generated feed title",
"Description du flux général" : "Generated feed description",
"Base URL du flux général" : "Generated feed site URL",
"Outil réalisé à partir de" : "Based on RSS-Fusion",
"Réalisé par" : "By",
"un développeur paysagiste" : "a gardener developer",
"sous licence BY-NC-SA 4.0" : "BY-NC-SA 4.0 licence.",
"Sources disponibles sur" : "Sources available at",
"Flux personnalisé RSS Fusion" : "Custom feed RSS Fusion",
"Flux généré avec RSS Fusion" : "Feed generated with RSS Fusion",
"Générer !" : "Create!",
"Génération en cours": "Generation in progress",
"La page cible est introuvable." : "Target page not found",
"Erreur serveur sur la page cible." : "Server error",
"Aucun retour serveur" : "No server response",
"Impossible de réaliser le traitement distant." : "Failed to perform remote processing.",
"Merci de renseigner au moins une URL de flux RSS" : "Thanks to add at least one feed",
"Une erreur est survenue" : "An error has occurred",
"Problème lors de la vérification du token" : "Error while token verification",
"Problème de token" : "Token error",
"Voici le lien RSS relatif à votre configuration" : "Here is your generated Feed !",
"Une erreur est survenue lors de l'enregistrement de votre configuration" : "Error while saving your feed",
"Une erreur est survenue lors du chargement de flux RSS" : "Error while loading RSS feed"
}
\ No newline at end of file
{
"Fusion et filtre de flux RSS" : "Fusion et filtre de flux RSS",
"Créer un flux personnalisé" : "Créer un flux personnalisé",
"URL des flux RSS à fusionner (un lien par ligne)" : "URL des flux RSS à fusionner (un lien par ligne)",
"Options des items" : "Options des items",
"Je désire" : "Je désire",
"afficher" : "afficher",
"masquer" : "masquer",
"en effectuant ma recherche sur" : "en effectuant ma recherche sur",
"le titre" : "le titre",
"la description" : "la description",
"le titre et la description" : "le titre et la description",
"les items contenant le(s) mot(s) clés (séparer chaque mot clé par une virgule) :" : "les items contenant le(s) mot(s) clés (séparer chaque mot clé par une virgule) :",
"Options du flux généré" : "Options du flux généré",
"Titre du flux général" : "Titre du flux général",
"Description du flux général" : "Description du flux général",
"Base URL du flux général" : "Base URL du flux général",
"Outil réalisé à partir de" : "Outil réalisé à partir de",
"Réalisé par" : "Réalisé par",
"un développeur paysagiste" : "un développeur paysagiste",
"sous licence BY-NC-SA 4.0" : "sous licence BY-NC-SA 4.0",
"Sources disponibles sur" : "Sources disponibles sur",
"Flux personnalisé RSS Fusion" : "Flux personnalisé RSS Fusion",
"Flux généré avec RSS Fusion" : "Flux généré avec RSS Fusion",
"Générer !" : "Générer !",
"Génération en cours": "Génération en cours",
"La page cible est introuvable." : "La page cible est introuvable.",
"Erreur serveur sur la page cible." : "Erreur serveur sur la page cible.",
"Aucun retour serveur" : "Aucun retour serveur",
"Impossible de réaliser le traitement distant." : "Impossible de réaliser le traitement distant.",
"Merci de renseigner au moins une URL de flux RSS" : "Merci de renseigner au moins une URL de flux RSS",
"Une erreur est survenue" : "Une erreur est survenue",
"Problème lors de la vérification du token" : "Problème lors de la vérification du token",
"Problème de token" : "Problème de token",
"Voici le lien RSS relatif à votre configuration" : "Voici le lien RSS relatif à votre configuration",
"Une erreur est survenue lors de l'enregistrement de votre configuration" : "Une erreur est survenue lors de l'enregistrement de votre configuration",
"Une erreur est survenue lors du chargement de flux RSS" : "Une erreur est survenue lors du chargement de flux RSS"
}
\ No newline at end of file
......@@ -67,6 +67,10 @@ section:after, header:after {
.sectionteal {background:#30c3a6;}
.sectionteal h3, .sectionteal h3 a, .sectionteal h2, .sectionteal h1, .sectionteal p { color:#fff; }
[data-lng]{
opacity: 0;
visibility: hidden;
}
.ajax-loader{
width: 64px;
height: 64px;
......
......@@ -18,6 +18,7 @@
$GLOBALS['TL_CONFIG']['characterSet'] = 'utf-8';
$GLOBALS['TL_CONFIG']['displayErrors'] = false;
$GLOBALS['TL_CONFIG']['logErrors'] = false;
$GLOBALS['TL_CONFIG']['language'] = 'en'; //~ (fr || en)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment