--- a/integration/edition.html Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/edition.html Tue Dec 04 18:59:07 2012 +0100
@@ -346,6 +346,7 @@
<script type="text/javascript" src="lib/tag-it.js"></script>
<script type="text/javascript" src="lib/underscore-min.js"></script>
<script type="text/javascript" src="lib/popcorn-complete.min.js"></script>
+ <script type="text/javascript" src="js/i18n.js"></script>
<script type="text/javascript" src="js/hashcut.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript">
--- a/integration/hashcut.html Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/hashcut.html Tue Dec 04 18:59:07 2012 +0100
@@ -256,6 +256,7 @@
<script type="text/javascript" src="lib/underscore-min.js"></script>
<script type="text/javascript" src="lib/popcorn-complete.min.js"></script>
<script type="text/javascript" src="lib/ZeroClipboard.js"></script>
+ <script type="text/javascript" src="js/i18n.js"></script>
<script type="text/javascript" src="js/hashcut.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript">
--- a/integration/home.html Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/home.html Tue Dec 04 18:59:07 2012 +0100
@@ -207,6 +207,7 @@
<!-- JavaScript -->
<script type="text/javascript" src="lib/jquery.min.js"></script>
<script type="text/javascript" src="lib/jquery-ui.min.js"></script>
+ <script type="text/javascript" src="js/i18n.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script>
--- a/integration/js/common.js Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/js/common.js Tue Dec 04 18:59:07 2012 +0100
@@ -37,17 +37,46 @@
var opts = opts || {};
opts.sel = opts.sel || $(".Ldt-Social");
- opts.url = opts.url || document.location.href;
+ opts.url = opts.url || document.location.href
+ opts.text = opts.text || $("title").text();
+
+ if (!opts.sel.length) {
+ return;
+ }
+
+ opts.sel.addClass("Ldt-Social");
if (opts.swf) {
ZeroClipboard.setMoviePath(opts.swf);
}
- var text = opts.sel.find("title").text(),
- clipId = "Social-Clip-" + (++uid),
- clip;
-
- opts.sel.find(".Ldt-Social-CopyBtn").attr("id", clipId);
+ var clipId = "Social-Clip-" + (++uid),
+ clip,
+ html = '<div class="Ldt-Social-Url-Container"><a href="#" target="_blank" class="Ldt-Social-Square Ldt-Social-Url" title="'
+ + gettext("Share URL")
+ + '"></a><span class="Ldt-Social-UrlPop"><input class="Ldt-Social-Input"/><div class="Ldt-Social-CopyBtn" id="'
+ + clipId
+ + '">'
+ + gettext("Copy")
+ + '</div></span></div><a href="http://www.facebook.com/share.php?'
+ + $.param({ u: opts.url, t: opts.text })
+ + '" target="_blank" class="Ldt-Social-Fb Ldt-Social-Ext" title="'
+ + gettext("Share on Facebook")
+ + '"></a><a href="https://twitter.com/intent/tweet?'
+ + $.param({ url: opts.url, text: opts.text })
+ + '" target="_blank" class="Ldt-Social-Twitter Ldt-Social-Ext" title="'
+ + gettext("Share on Twitter")
+ + '"></a><a href="https://plus.google.com/share?'
+ + $.param({ url: opts.url, title: opts.text })
+ + '" target="_blank" class="Ldt-Social-Gplus Ldt-Social-Ext" title="'
+ + gettext("Share on Google+")
+ + '"></a><a href="mailto:?'
+ + $.param({ subject: opts.text, body: opts.text + ": " + opts.url })
+ + '" target="_blank" class="Ldt-Social-Mail" title="'
+ + gettext("Share via E-Mail")
+ + '"></a></div>';
+
+ opts.sel.html(html);
opts.sel.find(".Ldt-Social-Url").click(function() {
var _pop = opts.sel.find(".Ldt-Social-UrlPop");
@@ -81,10 +110,5 @@
"height=300,width=450,left=100,top=100,toolbar=0,menubar=0,status=0,location=0");
return false;
});
-
- opts.sel.find(".Ldt-Social-Fb").attr("href", "http://www.facebook.com/share.php?" + $.param({ u: opts.url, t: text }));
- opts.sel.find(".Ldt-Social-Twitter").attr("href", "https://twitter.com/intent/tweet?" + $.param({ url: opts.url, text: text }));
- opts.sel.find(".Ldt-Social-Gplus").attr("href", "https://plus.google.com/share?" + $.param({ url: opts.url, title: text }));
- opts.sel.find(".Ldt-Social-Mail").attr("href", "mailto:?" + $.param({ subject: text, body: text + ": " + opts.url }));
}
}());
\ No newline at end of file
--- a/integration/js/compile.bat Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/js/compile.bat Tue Dec 04 18:59:07 2012 +0100
@@ -2,7 +2,7 @@
type init.js > hashcut.js
-set jsfiles=i18n model ldt-serializer segmentapi-serializer contentapi-serializer mashupcore editor mashupplayer mediaplayer
+set jsfiles=model ldt-serializer segmentapi-serializer contentapi-serializer mashupcore editor mashupplayer mediaplayer
FOR %%f IN (%jsfiles%) DO (type %%f.js >> hashcut.js)
--- a/integration/js/compile.sh Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/js/compile.sh Tue Dec 04 18:59:07 2012 +0100
@@ -2,7 +2,7 @@
cat init.js > hashcut.js
-jsfiles="i18n model ldt-serializer segmentapi-serializer contentapi-serializer mashupcore editor mashupplayer mediaplayer"
+jsfiles="model ldt-serializer segmentapi-serializer contentapi-serializer mashupcore editor mashupplayer mediaplayer"
for jsfile in $jsfiles
do
--- a/integration/js/editor.js Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/js/editor.js Tue Dec 04 18:59:07 2012 +0100
@@ -14,22 +14,22 @@
'<li class="item-video media" data-media-id="<%= id %>"><div class="media-count-wrap"><span class="media-count"></span></div>'
+ '<img class="thumbnail" src="<%= thumbnail %>" alt="<%= title %>" />'
+ '<div class="video-info"><h3 class="title-video"><%= title %></h3><p class="description"><%= description %></p>'
- + '<p class="time-length"><%= IriSP.translate("Duration:") %> <span><%= duration.toString() %></span></p></div><div class="media-found-segments"></div></li>'
+ + '<p class="time-length"><%= gettext("Duration:") %> <span><%= duration.toString() %></span></p></div><div class="media-found-segments"></div></li>'
),
segmenttemplate = _.template(
'<li class="item-video annotation" data-segment-id="<%= annotation.id %>" data-media-id="<%= annotation.getMedia().id %>">'
+ '<img class="thumbnail" src="<%= annotation.thumbnail %>" alt="<%= annotation.getMedia().title %>" />'
+ '<div class="validate <%= annotation.status %>"><div class="validate-tooltip"><ul><li><%= annotation.status_messages.join("</li><li>") %></li></ul></div></div><div class="video-info"><h3 class="title-video"><%= annotation.getMedia().title %></h3>'
+ '<p class="subtitle"><%= annotation.title %></p><p class="duration"><%= annotation.begin.toString() %> - <%= annotation.end.toString() %> (<%= annotation.getDuration().toString() %>)</p>'
- + '<ul class="tools"><li><a class="edit" href="#" title="<%= IriSP.translate("Edit segment") %>"></a></li><li><a class="bottom" href="#" title="<%= IriSP.translate("Move segment down") %>"></a></li>'
- + '<li><a class="top" href="#" title="<%= IriSP.translate("Move segment up") %>"></a></li><li><a class="delete" href="#" title="<%= IriSP.translate("Delete segment") %>"></a></li></ul></div></li>'
+ + '<ul class="tools"><li><a class="edit" href="#" title="<%= gettext("Edit segment") %>"></a></li><li><a class="bottom" href="#" title="<%= gettext("Move segment down") %>"></a></li>'
+ + '<li><a class="top" href="#" title="<%= gettext("Move segment up") %>"></a></li><li><a class="delete" href="#" title="<%= gettext("Delete segment") %>"></a></li></ul></div></li>'
),
mediasegmenttemplate = _.template(
'<div class="media-segment">'
+ '<div class="media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= color %>; top: <%= top %>px;" data-segment-id="<%= annotation.id %>"></div>'
+ '<div class="popin media-segment-popin" style="left:<%= popleft %>px; top: <%= 5+top %>px;"><div style="left:<%= pointerpos %>px;" class="pointer"></div><div class="popin-content">'
- + '<h3><%= annotation.title %></h3><a href="#" class="button reprendre-segment" data-segment-id="<%= annotation.id %>"><%= IriSP.translate("Clone segment") %></a>'
- + '<p><%= IriSP.translate("From:") %> <span><%= annotation.begin.toString() %></span> <%= IriSP.translate("to:") %> <span><%= annotation.end.toString() %></span> (<%= IriSP.translate("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
+ + '<h3><%= annotation.title %></h3><a href="#" class="button reprendre-segment" data-segment-id="<%= annotation.id %>"><%= gettext("Clone segment") %></a>'
+ + '<p><%= gettext("From:") %> <span><%= annotation.begin.toString() %></span> <%= gettext("to:") %> <span><%= annotation.end.toString() %></span> (<%= gettext("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
+ '</div></div></div>'
),
mediasegmentlisttemplate = _.template(
@@ -38,7 +38,7 @@
mediafoundtemplate = _.template(
'<div class="media-segment"><div class="media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= color %>; top: <%= top %>px;"></div>'
+ '<div class="popin media-found-popin" style="left:<%= popleft %>px; top: <%= 5+top %>px;"><div style="left:<%= pointerpos %>px;" class="pointer"></div><div class="popin-content">'
- + '<h3><%= title %></h3><a href="#" class="button clone-segment" data-segment-id="<%= annotation.id %>"><%= IriSP.translate("Clone segment") %></a>'
+ + '<h3><%= title %></h3><a href="#" class="button clone-segment" data-segment-id="<%= annotation.id %>"><%= gettext("Clone segment") %></a>'
+ '</div></div></div>'
),
mediafoundlisttemplate = _.template(
@@ -59,19 +59,19 @@
validate: function(_s) {
return (_s.getDuration() >= 1000);
},
- message: "A segment must be at least one second long"
+ message: gettext("A segment must be at least one second long")
},
{
validate: function(_s) {
return (_s.getDuration() < 180000);
},
- message: "A segment must be at most three minutes long"
+ message: gettext("A segment must be at most three minutes long")
},
{
validate: function(_s) {
- return (!!_s.title && _s.title !== IriSP.translate("Untitled segment"));
+ return (!!_s.title && _s.title !== gettext("Untitled segment"));
},
- message: "A segment must have a title"
+ message: gettext("A segment must have a title")
}
];
var segmentwarning = [
@@ -79,13 +79,13 @@
validate: function(_s) {
return (!!_s.description);
},
- message: "A segment should have a description"
+ message: gettext("A segment should have a description")
},
{
validate: function(_s) {
return (!!_s.keywords.length);
},
- message: "A segment should have tags"
+ message: gettext("A segment should have tags")
}
];
@@ -94,13 +94,13 @@
validate: function(_m) {
return _m.segments.length > 2;
},
- message: "A hashcut must be made from at least three segments"
+ message: gettext("A hashcut must be made from at least three segments")
},
{
validate: function(_m) {
- return (!!_m.title && _m.title !== IriSP.translate("Untitled Hashcut"));
+ return (!!_m.title && _m.title !== gettext("Untitled Hashcut"));
},
- message: "A hashcut must have a title"
+ message: gettext("A hashcut must have a title")
}
];
var mashupwarning = [
@@ -108,7 +108,7 @@
validate: function(_m) {
return !!_m.description
},
- message: "A hashcut should have a description"
+ message: gettext("A hashcut should have a description")
}
];
@@ -245,7 +245,7 @@
if (!messages.length) {
messages.push("Your hashcut is valid!");
}
- mashupstatus = ' - ' + _(messages).map(IriSP.translate).join('\n - ');
+ mashupstatus = ' - ' + _(messages).join('\n - ');
$(".publier-button").toggleClass("disable", critical);
@@ -350,7 +350,7 @@
if (!messages.length) {
messages.push("This segment is valid!")
}
- currentSegment.status_messages = _(messages).map(IriSP.translate);
+ currentSegment.status_messages = _(messages);
$(".segmentation .validate").removeClass("critical warning valid").addClass(currentSegment.status);
$(".segmentation .validate-tooltip").html("<ul><li>" + currentSegment.status_messages.join("</li><li>")+"</li></ul>");
@@ -374,7 +374,7 @@
currentSegment.setMedia(currentMedia.id);
currentSegment.setBegin(currentMedia.getCurrentTime());
currentSegment.setEnd(Math.min(currentMedia.getCurrentTime() + 180000, currentMedia.duration));
- currentSegment.title = IriSP.translate("Untitled segment");
+ currentSegment.title = gettext("Untitled segment");
currentSegment.color = currentMedia.color;
currentSegment.thumbnail = currentMedia.thumbnail;
currentSegment.created = new Date();
@@ -396,8 +396,8 @@
if (currentMedia.loaded) {
currentMedia.setCurrentTime(currentSegment.begin);
}
- $(".add-segment").val(IriSP.translate(addMode ? "Add segment to hashcut" : "Save segment"));
- $(".create-or-edit").text(IriSP.translate(addMode ? "Create new segment" : "Edit existing segment"));
+ $(".add-segment").val(addMode ? gettext("Add segment to hashcut") : gettext("Save segment"));
+ $(".create-or-edit").text(addMode ? gettext("Create new segment") : gettext("Edit existing segment"));
$("#segment-title").val(currentSegment.title);
$("#segment-description").val(currentSegment.description);
var segment_tags = $("#segment-tags");
@@ -499,7 +499,7 @@
}
});
$("#segment-title").on("focus click", function() {
- if ($(this).val() === IriSP.translate("Untitled segment")) {
+ if ($(this).val() === gettext("Untitled segment")) {
$(this).val("");
}
});
@@ -755,7 +755,7 @@
currentSegment.setMedia(media.id);
currentSegment.setBegin(s.begin);
currentSegment.setEnd(s.end);
- currentSegment.title = IriSP.translate("Copy of ") + s.title;
+ currentSegment.title = gettext("Copy of ") + s.title;
currentSegment.description = s.description;
currentSegment.keywords = s.keywords;
currentSegment.color = media.color;
@@ -801,7 +801,7 @@
});
/* Changing Hashcut Title and description */
- mashup.title = IriSP.translate("Untitled Hashcut");
+ mashup.title = gettext("Untitled Hashcut");
$(".title-video-wrap a").text(mashup.title);
$("#hashcut-title").val(mashup.title);
@@ -811,7 +811,7 @@
mashup.trigger("change");
});
$("#hashcut-title").on("focus click", function() {
- if ($(this).val() === IriSP.translate("Untitled Hashcut")) {
+ if ($(this).val() === gettext("Untitled Hashcut")) {
$(this).val("");
}
});
@@ -829,14 +829,14 @@
/* Publication */
function onLeave() {
- return IriSP.translate("You haven't published your hashcut yet.\nIf you leave this page, it will be lost");
+ return gettext("You haven't published your hashcut yet.\nIf you leave this page, it will be lost.");
}
$(window).on("beforeunload", onLeave);
$(".publier-button").click(function() {
if ($(this).hasClass("disable")) {
- alert(IriSP.translate("The mashup can't be published because:")+"\n\n"+mashupstatus);
+ alert(gettext("The hashcut can't be published because:")+"\n\n"+mashupstatus);
return false;
}
var postproject = directory.newLocalSource(),
@@ -895,7 +895,7 @@
document.location.href = destination;
},
error: function(jqXHR, textStatus, errorThrown){
- alert(IriSP.translate("Server error\nYour hashcut couldn't be published"));
+ alert(gettext("Server error\nYour hashcut couldn't be published"));
waitscreen.remove();
}
});
--- a/integration/js/i18n.js Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/js/i18n.js Tue Dec 04 18:59:07 2012 +0100
@@ -1,52 +1,52 @@
-IriSP.messages = {
- fr: {
- "Duration:" : "Durée :",
- "duration:" : "durée :",
- "Edit segment": "Éditer le segment",
- "Move segment down": "Descendre le segment",
- "Move segment up": "Remonter le segment",
- "Delete segment": "Supprimer le segment",
- "Clone segment": "Cloner le segment",
- "From:": "De :",
- "to:": "à :",
- "Untitled segment": "Segment sans titre",
- "Untitled Hashcut": "Hashcut sans titre",
- "Copy of ": "Copie de ",
- "A segment must be at least one second long": "Le segment doit durer au moins une seconde",
- "A segment must be at most three minutes long": "Le segment doit durer moins de trois minutes",
- "A segment must have a title": "Le segment doit avoir un titre",
- "A segment should have a description": "Il est recommandé de donner une description au segment",
- "A segment should have tags": "Il est recommandé de taguer le segment",
- "A hashcut must be made from at least three segments": "Un hashcut doit être composé d'au moins trois segments",
- "A hashcut must have a title": "Un titre doit être donné au hashcut",
- "A hashcut should have a description": "Il est recommandé de donner une description au hashcut",
- "One or more segments are invalid": "Un ou plusieurs segments ne sont pas valides",
- "Your hashcut is valid!": "Votre hashcut est valide !",
- "This segment is valid!": "Ce segment est valide !",
- "Add segment to hashcut": "Ajouter au Hashcut",
- "Save segment": "Sauvegarder",
- "Create new segment": "Créer un nouveau segment",
- "Edit existing segment": "Modifier le segment",
- "The hashcut can't be published because:": "Le Hashcut ne peut pas être publié pour les raisons suivantes :",
- "Server error\nYour hashcut couldn't be published": "Erreur serveur\nVotre hashcut n'a pas pu être publié",
- "You haven't published your hashcut yet.\nIf you leave this page, it will be lost": "Vous n'avez pas encore publié votre Hashcut.\nSi vous quittez cette page, il sera perdu.",
- "From hashcut:": "Du hashcut :"
+((function() {
+ var messages = {
+ fr: {
+ "Duration:" : "Durée :",
+ "duration:" : "durée :",
+ "Edit segment": "Éditer le segment",
+ "Move segment down": "Descendre le segment",
+ "Move segment up": "Remonter le segment",
+ "Delete segment": "Supprimer le segment",
+ "Clone segment": "Cloner le segment",
+ "From:": "De :",
+ "to:": "à :",
+ "Untitled segment": "Segment sans titre",
+ "Untitled Hashcut": "Hashcut sans titre",
+ "Copy of ": "Copie de ",
+ "A segment must be at least one second long": "Le segment doit durer au moins une seconde",
+ "A segment must be at most three minutes long": "Le segment doit durer moins de trois minutes",
+ "A segment must have a title": "Le segment doit avoir un titre",
+ "A segment should have a description": "Il est recommandé de donner une description au segment",
+ "A segment should have tags": "Il est recommandé de taguer le segment",
+ "A hashcut must be made from at least three segments": "Un hashcut doit être composé d'au moins trois segments",
+ "A hashcut must have a title": "Un titre doit être donné au hashcut",
+ "A hashcut should have a description": "Il est recommandé de donner une description au hashcut",
+ "One or more segments are invalid": "Un ou plusieurs segments ne sont pas valides",
+ "Your hashcut is valid!": "Votre hashcut est valide !",
+ "This segment is valid!": "Ce segment est valide !",
+ "Add segment to hashcut": "Ajouter au Hashcut",
+ "Save segment": "Sauvegarder",
+ "Create new segment": "Créer un nouveau segment",
+ "Edit existing segment": "Modifier le segment",
+ "The hashcut can't be published because:": "Le Hashcut ne peut pas être publié pour les raisons suivantes :",
+ "Server error\nYour hashcut couldn't be published": "Erreur serveur\nVotre hashcut n'a pas pu être publié",
+ "You haven't published your hashcut yet.\nIf you leave this page, it will be lost.": "Vous n'avez pas encore publié votre Hashcut.\nSi vous quittez cette page, il sera perdu.",
+ "From hashcut:": "Du hashcut :"
+ }
+ };
+
+ var lang = navigator.language || navigator.userLanguage || "en",
+ srcs = [ ];
+ if (typeof messages[lang] === "object") {
+ srcs.push(messages[lang])
}
-};
-
-((function() {
- var lang = IriSP.language || navigator.language || navigator.userLanguage || "en",
- srcs = [ ];
- if (typeof IriSP.messages[lang] === "object") {
- srcs.push(IriSP.messages[lang])
- }
- if (lang.substr(0,2) !== lang && typeof IriSP.messages[lang.substr(0,2)] === "object") {
- srcs.push(IriSP.messages[lang.substr(0,2)])
+ if (lang.substr(0,2) !== lang && typeof messages[lang.substr(0,2)] === "object") {
+ srcs.push(messages[lang.substr(0,2)])
}
srcs.push({});
var l = srcs.length;
- IriSP.translate = function(_str) {
+ window.gettext = function(_str) {
for (var i = 0; i < l; i++) {
if (typeof srcs[i][_str] !== "undefined") {
return srcs[i][_str];
--- a/integration/js/init.js Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/js/init.js Tue Dec 04 18:59:07 2012 +0100
@@ -16,9 +16,11 @@
* knowledge of the CeCILL-C license and that you accept its terms.
*/
-var IriSP = {
- serializers: {}
-};
+if (typeof window.IriSP === "undefined") {
+ window.IriSP = {};
+}
+
+IriSP.serializers = {};
IriSP._ = _;
--- a/integration/js/mashupcore.js Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/js/mashupcore.js Tue Dec 04 18:59:07 2012 +0100
@@ -185,14 +185,14 @@
var _soundCtl = $(".Ldt-Ctrl-Sound");
_soundCtl.removeClass("Ldt-Ctrl-Sound-Mute Ldt-Ctrl-Sound-Half Ldt-Ctrl-Sound-Full");
if (_muted) {
- _soundCtl.attr("title", "Activer le son")
+ _soundCtl.attr("title", gettext("Unmute"))
.addClass("Ldt-Ctrl-Sound-Mute");
} else {
- _soundCtl.attr("title", "Couper le son")
+ _soundCtl.attr("title", gettext("mute"))
.addClass(_vol < .5 ? "Ldt-Ctrl-Sound-Half" : "Ldt-Ctrl-Sound-Full" )
}
volBar.slider("value", _muted ? 0 : 100 * _vol);
- volBar.attr("title",'Volume : ' + Math.floor(100 * _vol) + '%');
+ volBar.attr("title",gettext("Volume:") + Math.floor(100 * _vol) + '%');
}
}
@@ -218,14 +218,14 @@
function onCurrentMediaPlay() {
$(".Ldt-Ctrl-Play")
- .attr("title", "Pause")
+ .attr("title", gettext("Pause"))
.removeClass("Ldt-Ctrl-Play-PlayState")
.addClass("Ldt-Ctrl-Play-PauseState")
}
function onCurrentMediaPause() {
$(".Ldt-Ctrl-Play")
- .attr("title", "Lecture")
+ .attr("title", gettext("Play"))
.removeClass("Ldt-Ctrl-Play-PauseState")
.addClass("Ldt-Ctrl-Play-PlayState")
}
--- a/integration/js/mediaplayer.js Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/js/mediaplayer.js Tue Dec 04 18:59:07 2012 +0100
@@ -11,8 +11,8 @@
+ '<div class="media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= color %>; top: <%= top %>px;" data-segment-id="<%= annotation.id %>"></div>'
+ '<div class="popin media-segment-popin" style="left:<%= popleft %>px; top: <%= 5+top %>px;"><div style="left:<%= pointerpos %>px;" class="pointer"></div><div class="popin-content">'
+ '<h3><%= annotation.title %></h3>'
- + '<p><%= IriSP.translate("From:") %> <span><%= annotation.begin.toString() %></span> <%= IriSP.translate("to:") %> <span><%= annotation.end.toString() %></span> (<%= IriSP.translate("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
- + '<p class="mashup-link"><%= IriSP.translate("From hashcut:") %> <a href="<%= IriSP.endpoints.hashcut_page + annotation.project_id %>"></a></p>'
+ + '<p><%= gettext("From:") %> <span><%= annotation.begin.toString() %></span> <%= gettext("to:") %> <span><%= annotation.end.toString() %></span> (<%= gettext("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
+ + '<p class="mashup-link"><%= gettext("From hashcut:") %> <a href="<%= IriSP.endpoints.hashcut_page + annotation.project_id %>"></a></p>'
+ '</div></div></div>'
),
segmentlisttemplate = _.template(
--- a/integration/media.html Tue Dec 04 13:31:01 2012 +0100
+++ b/integration/media.html Tue Dec 04 18:59:07 2012 +0100
@@ -227,6 +227,7 @@
<script type="text/javascript" src="lib/popcorn-complete.min.js"></script>
<script type="text/javascript" src="lib/ZeroClipboard.js"></script>
<script type="text/javascript" src="js/hashcut.js"></script>
+ <script type="text/javascript" src="js/i18n.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript">
Binary file src/hashcut/locale/en/LC_MESSAGES/django.mo has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hashcut/locale/en/LC_MESSAGES/django.po Tue Dec 04 18:59:07 2012 +0100
@@ -0,0 +1,328 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-12-04 17:01+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+
+#: templates/mashup_all_mashups.html:22 templates/mashup_content.html:26
+#: templates/mashup_edit.html:44 templates/mashup_home.html:15
+#: templates/mashup_profile.html:26
+msgid "Home"
+msgstr "Home"
+
+#: templates/mashup_all_mashups.html:23 templates/mashup_content.html:27
+#: templates/mashup_profile.html:27
+msgid "New hashcut"
+msgstr "New Hashcut"
+
+#: templates/mashup_all_mashups.html:24 templates/mashup_content.html:28
+#: templates/mashup_edit.html:45 templates/mashup_home.html:46
+#: templates/mashup_profile.html:28
+msgid "My profile"
+msgstr "My profile"
+
+#: templates/mashup_content.html:6
+#, python-format
+msgid "Playing video %(title)s"
+msgstr "Playing Video “%(title)s”"
+
+#: templates/mashup_content.html:18
+msgid "Video"
+msgstr "Video"
+
+#: templates/mashup_content.html:51 templates/mashup_edit.html:94
+#: templates/mashup_hashcut.html:50
+msgid "Play/Pause"
+msgstr "Play/Pause"
+
+#: templates/mashup_content.html:57 templates/mashup_edit.html:106
+#: templates/mashup_hashcut.html:56
+msgid "Elapsed time"
+msgstr "Elapsed time"
+
+#: templates/mashup_content.html:59 templates/mashup_edit.html:108
+#: templates/mashup_hashcut.html:58
+msgid "Total time"
+msgstr "Total time"
+
+#: templates/mashup_content.html:62 templates/mashup_edit.html:111
+#: templates/mashup_hashcut.html:61
+msgid "Mute/Unmute"
+msgstr "Mute/Unmute"
+
+#: templates/mashup_content.html:64 templates/mashup_edit.html:113
+#: templates/mashup_hashcut.html:63
+msgid "Set volume"
+msgstr "Set volume"
+
+#: templates/mashup_content.html:75
+msgid "More informations"
+msgstr "More informations"
+
+#: templates/mashup_content.html:80 templates/mashup_edit.html:22
+#: templates/mashup_edit.html.py:142 templates/mashup_hashcut.html:114
+msgid "Title:"
+msgstr "Title:"
+
+#: templates/mashup_content.html:84 templates/mashup_edit.html:40
+#: templates/mashup_hashcut.html:118
+msgid "Duration:"
+msgstr "Duration:"
+
+#: templates/mashup_content.html:88 templates/mashup_edit.html:26
+#: templates/mashup_edit.html.py:152 templates/mashup_edit.html:210
+#: templates/mashup_hashcut.html:94 templates/mashup_hashcut.html.py:126
+msgid "Description:"
+msgstr "Description:"
+
+#: templates/mashup_content.html:92 templates/mashup_edit.html:146
+#: templates/mashup_edit.html.py:214 templates/mashup_hashcut.html:98
+msgid "Tags:"
+msgstr "Tags:"
+
+#: templates/mashup_content.html:99
+msgid "Hashcuts using this video"
+msgstr "Hashcuts using this video"
+
+#: templates/mashup_edit.html:6
+msgid "Hashcut editor"
+msgstr "Hashcut editor"
+
+#: templates/mashup_edit.html:23 templates/mashup_edit.html.py:38
+msgid "Untitled Hashcut"
+msgstr "Untitled Hashcut"
+
+#: templates/mashup_edit.html:57
+msgid "Select videos"
+msgstr "Select videos"
+
+#: templates/mashup_edit.html:58
+msgid "Search videos"
+msgstr "Search videos"
+
+#: templates/mashup_edit.html:68
+msgid "Segment"
+msgstr "Segment"
+
+#: templates/mashup_edit.html:69
+msgid "Preview and publish"
+msgstr "Preview and publish"
+
+#: templates/mashup_edit.html:74
+msgid "Creating a hashcut is easy!"
+msgstr "Creating a Hashcut is easy!"
+
+#: templates/mashup_edit.html:76
+msgid "Start by selecting a video in the left hand column."
+msgstr "Start by selecting a video in the left hand column."
+
+#: templates/mashup_edit.html:77
+msgid "Create a segment in your video and annotate it."
+msgstr "Create a segment in your video and annotate it."
+
+#: templates/mashup_edit.html:78
+msgid "Append your segment to the hashcut and reorder the segments"
+msgstr "Append your segment to the hashcut and reorder the segments"
+
+#: templates/mashup_edit.html:79
+msgid "Add a few comments to your hashcut. You are ready to publish!"
+msgstr "Add a few comments to your hashcut. You are ready to publish!"
+
+#: templates/mashup_edit.html:97
+msgid "Begin segment here"
+msgstr "Begin segment here"
+
+#: templates/mashup_edit.html:99
+msgid "End segment here"
+msgstr "End segment here"
+
+#: templates/mashup_edit.html:131
+msgid "Create a new segment"
+msgstr "Create a new segment"
+
+#: templates/mashup_edit.html:132
+msgid "from"
+msgstr "from"
+
+#: templates/mashup_edit.html:134
+msgid "to"
+msgstr "to"
+
+#: templates/mashup_edit.html:136
+msgid "duration:"
+msgstr "duration:"
+
+#: templates/mashup_edit.html:156
+msgid "Add to hashcut"
+msgstr "Add to Hashcut"
+
+#: templates/mashup_edit.html:163
+msgid "My segments on this media:"
+msgstr "My segments on this media:"
+
+#: templates/mashup_edit.html:169
+msgid "Existing segments on this media:"
+msgstr "Existing segments on this media:"
+
+#: templates/mashup_edit.html:206 templates/mashup_hashcut.html:90
+msgid "Excerpt from:"
+msgstr "Excerpt from:"
+
+#: templates/mashup_edit.html:230
+msgid "Segment list"
+msgstr "Segment list"
+
+#: templates/mashup_edit.html:232
+msgid "No segment"
+msgstr "No segment"
+
+#: templates/mashup_hashcut.html:6
+#, python-format
+msgid "Playing hashcut %(title)s"
+msgstr "Playing Hashcut “%(title)s”"
+
+#: templates/mashup_hashcut.html:18 templates/mashup_home.html:15
+msgid "Hashcut"
+msgstr "Hashcut"
+
+#: templates/mashup_hashcut.html:109
+msgid "More information"
+msgstr "More information"
+
+#: templates/mashup_hashcut.html:122
+msgid "Author:"
+msgstr "Author:"
+
+#: templates/mashup_hashcut.html:132
+msgid "Videos used in this Hashcut"
+msgstr "Videos used in this Hashcut"
+
+#: templates/mashup_home.html:42
+msgid "Create a new hashcut!"
+msgstr "Create a new hashcut!"
+
+#: templates/mashup_home.html:59
+msgid "Featured Hashcuts"
+msgstr "Featured Hashcuts"
+
+#: templates/mashup_home.html:64 templates/mashup_home.html.py:70
+#: templates/mashup_home.html:80
+msgid "by"
+msgstr "by"
+
+#: templates/mashup_home.html:75
+msgid "Newest Hashcuts"
+msgstr "Newest Hashcuts"
+
+#: templates/mashup_home.html:86
+msgid "All Hashcuts"
+msgstr "All Hashcuts"
+
+#: templates/mashup_home.html:92
+msgid "What's a Hashcut?"
+msgstr "What's a Hashcut?"
+
+#: templates/mashup_home.html:97
+msgid "How to?"
+msgstr "How to?"
+
+#: templates/mashup_home.html:100
+msgid "Sign up"
+msgstr "Sign up"
+
+#: templates/mashup_home.html:101
+msgid "Start by creating your own profile on this platform."
+msgstr "Start by creating your own profile on this platform."
+
+#: templates/mashup_home.html:105
+msgid "Create a new hashcut"
+msgstr "Create a new Hashcut"
+
+#: templates/mashup_home.html:106
+msgid ""
+"Choose videos, define and organize segments and comment them to create your "
+"own hashcut."
+msgstr ""
+"Choose videos, define and organize segments and comment them to create your "
+"own hashcut."
+
+#: templates/mashup_home.html:110
+msgid "Publish and share"
+msgstr "Publish and share"
+
+#: templates/mashup_home.html:111
+msgid ""
+"Once your hashcut is done, publish it here and share your work on social "
+"networks."
+msgstr ""
+"Once your hashcut is done, publish it here and share your work on social "
+"networks."
+
+#: templates/mashup_profile.html:6
+#, python-format
+msgid "%(username)s's profile"
+msgstr "%(username)s's profile"
+
+#: templates/mashup_profile.html:18
+msgid "Profile"
+msgstr "Profile"
+
+#: templates/partial/mashup_popin_user.html:11
+#, python-format
+msgid "%(nb_mashup_creator)s Hashcut"
+msgid_plural "%(nb_mashup_creator)s Hashcuts"
+msgstr[0] ""
+msgstr[1] ""
+
+#: templates/partial/mashup_popin_user.html:13
+msgid "Switch account"
+msgstr "Switch account"
+
+#: templates/partial/mashup_popin_user.html:18
+msgid "Create account:"
+msgstr "Create account:"
+
+#: templates/partial/mashup_popin_user.html:22
+#: templates/partial/mashup_popin_user.html:47
+msgid "Login:"
+msgstr "Login"
+
+#: templates/partial/mashup_popin_user.html:26
+msgid "E-mail:"
+msgstr "E-mail:"
+
+#: templates/partial/mashup_popin_user.html:30
+#: templates/partial/mashup_popin_user.html:51
+msgid "Password:"
+msgstr "Password:"
+
+#: templates/partial/mashup_popin_user.html:34
+msgid "Confirm password:"
+msgstr "Confirm password:"
+
+#: templates/partial/mashup_popin_user.html:38
+#: templates/partial/mashup_popin_user.html:58
+msgid "Create account"
+msgstr "Create account"
+
+#: templates/partial/mashup_popin_user.html:43
+msgid "Log In:"
+msgstr "Log In:"
+
+#: templates/partial/mashup_popin_user.html:55
+msgid "Log In"
+msgstr "Log In"
Binary file src/hashcut/locale/en/LC_MESSAGES/djangojs.mo has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hashcut/locale/en/LC_MESSAGES/djangojs.po Tue Dec 04 18:59:07 2012 +0100
@@ -0,0 +1,186 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-12-04 18:45+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: static/hashcut/js/common.js:56
+msgid "Share URL"
+msgstr "Share URL"
+
+#: static/hashcut/js/common.js:60
+msgid "Copy"
+msgstr "Copy"
+
+#: static/hashcut/js/common.js:64
+msgid "Share on Facebook"
+msgstr "Share on Facebook"
+
+#: static/hashcut/js/common.js:68
+msgid "Share on Twitter"
+msgstr "Share on Twitter"
+
+#: static/hashcut/js/common.js:72
+msgid "Share on Google+"
+msgstr "Share on Google+"
+
+#: static/hashcut/js/common.js:76
+msgid "Share via E-Mail"
+msgstr "Share via E-Mail"
+
+#: static/hashcut/js/hashcut.js:1704
+msgid "Unmute"
+msgstr "Unmute"
+
+#: static/hashcut/js/hashcut.js:1707
+msgid "mute"
+msgstr "Mute"
+
+#: static/hashcut/js/hashcut.js:1711
+msgid "Volume:"
+msgstr "Volume:"
+
+#: static/hashcut/js/hashcut.js:1737
+msgid "Pause"
+msgstr "Pause"
+
+#: static/hashcut/js/hashcut.js:1744
+msgid "Play"
+msgstr "Play"
+
+#: static/hashcut/js/hashcut.js:2235
+msgid "A segment must be at least one second long"
+msgstr "A segment must be at least one second long"
+
+#: static/hashcut/js/hashcut.js:2241
+msgid "A segment must be at most three minutes long"
+msgstr "A segment must be at most three minutes long"
+
+#: static/hashcut/js/hashcut.js:2245 static/hashcut/js/hashcut.js.c:2550
+#: static/hashcut/js/hashcut.js:2675
+msgid "Untitled segment"
+msgstr "Untitled segment"
+
+#: static/hashcut/js/hashcut.js:2247
+msgid "A segment must have a title"
+msgstr "A segment must have a title"
+
+#: static/hashcut/js/hashcut.js:2255
+msgid "A segment should have a description"
+msgstr "A segment should have a description"
+
+#: static/hashcut/js/hashcut.js:2261
+msgid "A segment should have tags"
+msgstr "A segment should have tags"
+
+#: static/hashcut/js/hashcut.js:2270
+msgid "A hashcut must be made from at least three segments"
+msgstr "A hashcut must be made from at least three segments"
+
+#: static/hashcut/js/hashcut.js:2274 static/hashcut/js/hashcut.js.c:2977
+#: static/hashcut/js/hashcut.js:2987
+msgid "Untitled Hashcut"
+msgstr "Untitled Hashcut"
+
+#: static/hashcut/js/hashcut.js:2276
+msgid "A hashcut must have a title"
+msgstr "A hashcut must have a title"
+
+#: static/hashcut/js/hashcut.js:2284
+msgid "A hashcut should have a description"
+msgstr "A hashcut should have a description"
+
+#: static/hashcut/js/hashcut.js:2572
+msgid "Add segment to hashcut"
+msgstr "Add segment to hashcut"
+
+#: static/hashcut/js/hashcut.js:2572
+msgid "Save segment"
+msgstr "Save segment"
+
+#: static/hashcut/js/hashcut.js:2573
+msgid "Create new segment"
+msgstr "Create new segment"
+
+#: static/hashcut/js/hashcut.js:2573
+msgid "Edit existing segment"
+msgstr "Edit existing segment"
+
+#: static/hashcut/js/hashcut.js:2931
+msgid "Copy of "
+msgstr "Copy of "
+
+#: static/hashcut/js/hashcut.js:3005
+msgid ""
+"You haven't published your hashcut yet.\n"
+"If you leave this page, it will be lost."
+msgstr ""
+"You haven't published your hashcut yet.\n"
+"If you leave this page, it will be lost."
+
+#: static/hashcut/js/hashcut.js:3012
+msgid "The hashcut can't be published because:"
+msgstr "The hashcut can't be published because:"
+
+#: static/hashcut/js/hashcut.js:3071
+msgid ""
+"Server error\n"
+"Your hashcut couldn't be published"
+msgstr ""
+"Server error\n"
+"Your hashcut couldn't be published"
+
+msgid "The mashup can't be published because:"
+msgstr "The hashcut can't be published because:"
+
+msgid "Duration:"
+msgstr "Duration:"
+
+msgid "duration:"
+msgstr "duration:"
+
+msgid "Edit segment"
+msgstr "Edit segment"
+
+msgid "Move segment down"
+msgstr "Move segment down"
+
+msgid "Move segment up"
+msgstr "Move segment up"
+
+msgid "Delete segment"
+msgstr "Delete segment"
+
+msgid "Clone segment"
+msgstr "Clone segment"
+
+msgid "From:"
+msgstr "From:"
+
+msgid "to:"
+msgstr "to:"
+
+msgid "One or more segments are invalid"
+msgstr "One or more segments are invalid"
+
+msgid "Your hashcut is valid!"
+msgstr "Your hashcut is valid!"
+
+msgid "This segment is valid!"
+msgstr "This segment is valid"
+
+msgid "From hashcut:"
+msgstr "From hashcut:"
Binary file src/hashcut/locale/fr/LC_MESSAGES/django.mo has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hashcut/locale/fr/LC_MESSAGES/django.po Tue Dec 04 18:59:07 2012 +0100
@@ -0,0 +1,330 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-12-04 17:01+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+
+#: templates/mashup_all_mashups.html:22 templates/mashup_content.html:26
+#: templates/mashup_edit.html:44 templates/mashup_home.html:15
+#: templates/mashup_profile.html:26
+msgid "Home"
+msgstr "Accueil"
+
+#: templates/mashup_all_mashups.html:23 templates/mashup_content.html:27
+#: templates/mashup_profile.html:27
+msgid "New hashcut"
+msgstr "Créer un Hashcut"
+
+#: templates/mashup_all_mashups.html:24 templates/mashup_content.html:28
+#: templates/mashup_edit.html:45 templates/mashup_home.html:46
+#: templates/mashup_profile.html:28
+msgid "My profile"
+msgstr "Mon profil"
+
+#: templates/mashup_content.html:6
+#, python-format
+msgid "Playing video %(title)s"
+msgstr "Lecture de la Vidéo « %(title)s »"
+
+#: templates/mashup_content.html:18
+msgid "Video"
+msgstr "Vidéo"
+
+#: templates/mashup_content.html:51 templates/mashup_edit.html:94
+#: templates/mashup_hashcut.html:50
+msgid "Play/Pause"
+msgstr "Lecture/Pause"
+
+#: templates/mashup_content.html:57 templates/mashup_edit.html:106
+#: templates/mashup_hashcut.html:56
+msgid "Elapsed time"
+msgstr "Temps écoulé"
+
+#: templates/mashup_content.html:59 templates/mashup_edit.html:108
+#: templates/mashup_hashcut.html:58
+msgid "Total time"
+msgstr "Durée totale"
+
+#: templates/mashup_content.html:62 templates/mashup_edit.html:111
+#: templates/mashup_hashcut.html:61
+msgid "Mute/Unmute"
+msgstr "Couper/Activer le son"
+
+#: templates/mashup_content.html:64 templates/mashup_edit.html:113
+#: templates/mashup_hashcut.html:63
+msgid "Set volume"
+msgstr "Régler le volume"
+
+#: templates/mashup_content.html:75
+msgid "More informations"
+msgstr "Plus d'informations"
+
+#: templates/mashup_content.html:80 templates/mashup_edit.html:22
+#: templates/mashup_edit.html.py:142 templates/mashup_hashcut.html:114
+msgid "Title:"
+msgstr "Titre :"
+
+#: templates/mashup_content.html:84 templates/mashup_edit.html:40
+#: templates/mashup_hashcut.html:118
+msgid "Duration:"
+msgstr "Durée :"
+
+#: templates/mashup_content.html:88 templates/mashup_edit.html:26
+#: templates/mashup_edit.html.py:152 templates/mashup_edit.html:210
+#: templates/mashup_hashcut.html:94 templates/mashup_hashcut.html.py:126
+msgid "Description:"
+msgstr "Description :"
+
+#: templates/mashup_content.html:92 templates/mashup_edit.html:146
+#: templates/mashup_edit.html.py:214 templates/mashup_hashcut.html:98
+msgid "Tags:"
+msgstr "Mots-clés :"
+
+#: templates/mashup_content.html:99
+msgid "Hashcuts using this video"
+msgstr "Hashcuts utilisant cette vidéo"
+
+#: templates/mashup_edit.html:6
+msgid "Hashcut editor"
+msgstr "Éditeur de Hashcut"
+
+#: templates/mashup_edit.html:23 templates/mashup_edit.html.py:38
+msgid "Untitled Hashcut"
+msgstr "Hashcut sans titre"
+
+#: templates/mashup_edit.html:57
+msgid "Select videos"
+msgstr "Sélectionner les vidéos"
+
+#: templates/mashup_edit.html:58
+msgid "Search videos"
+msgstr "Rechercher une vidéo"
+
+#: templates/mashup_edit.html:68
+msgid "Segment"
+msgstr "Segmenter"
+
+#: templates/mashup_edit.html:69
+msgid "Preview and publish"
+msgstr "Prévisualiser et publier"
+
+#: templates/mashup_edit.html:74
+msgid "Creating a hashcut is easy!"
+msgstr "Créer un Hashcut, c’est facile !"
+
+#: templates/mashup_edit.html:76
+msgid "Start by selecting a video in the left hand column."
+msgstr "Commencez par choisir une vidéo dans le volet de gauche"
+
+#: templates/mashup_edit.html:77
+msgid "Create a segment in your video and annotate it."
+msgstr ""
+"Créez un segment dans la vidéo et profitez-en pour annoter votre segment"
+
+#: templates/mashup_edit.html:78
+msgid "Append your segment to the hashcut and reorder the segments"
+msgstr "Ajoutez votre segment à la liste, réorganisez les segments entre eux"
+
+#: templates/mashup_edit.html:79
+msgid "Add a few comments to your hashcut. You are ready to publish!"
+msgstr ""
+"Rajoutez quelques commentaires à votre Hashcut. Vous êtes prêts à publier !"
+
+#: templates/mashup_edit.html:97
+msgid "Begin segment here"
+msgstr "Débuter le segment ici"
+
+#: templates/mashup_edit.html:99
+msgid "End segment here"
+msgstr "Finir le segment ici"
+
+#: templates/mashup_edit.html:131
+msgid "Create a new segment"
+msgstr "Créer un nouveau segment"
+
+#: templates/mashup_edit.html:132
+msgid "from"
+msgstr "de"
+
+#: templates/mashup_edit.html:134
+msgid "to"
+msgstr "à"
+
+#: templates/mashup_edit.html:136
+msgid "duration:"
+msgstr "durée :"
+
+#: templates/mashup_edit.html:156
+msgid "Add to hashcut"
+msgstr "Ajouter au Hashcut"
+
+#: templates/mashup_edit.html:163
+msgid "My segments on this media:"
+msgstr "Mes segments sur cette vidéo :"
+
+#: templates/mashup_edit.html:169
+msgid "Existing segments on this media:"
+msgstr "Segments existants sur cette vidéo :"
+
+#: templates/mashup_edit.html:206 templates/mashup_hashcut.html:90
+msgid "Excerpt from:"
+msgstr "Extrait de :"
+
+#: templates/mashup_edit.html:230
+msgid "Segment list"
+msgstr "Liste des segments"
+
+#: templates/mashup_edit.html:232
+msgid "No segment"
+msgstr "Aucun segment"
+
+#: templates/mashup_hashcut.html:6
+#, python-format
+msgid "Playing hashcut %(title)s"
+msgstr "Lecture du Hashcut « %(title)s »"
+
+#: templates/mashup_hashcut.html:18 templates/mashup_home.html:15
+msgid "Hashcut"
+msgstr "Hashcut"
+
+#: templates/mashup_hashcut.html:109
+msgid "More information"
+msgstr "Plus d'informations"
+
+#: templates/mashup_hashcut.html:122
+msgid "Author:"
+msgstr "Auteur :"
+
+#: templates/mashup_hashcut.html:132
+msgid "Videos used in this Hashcut"
+msgstr "Vidéos utilisées dans ce Hashcut"
+
+#: templates/mashup_home.html:42
+msgid "Create a new hashcut!"
+msgstr "Créer un Hashcut !"
+
+#: templates/mashup_home.html:59
+msgid "Featured Hashcuts"
+msgstr "Hashcuts à la Une"
+
+#: templates/mashup_home.html:64 templates/mashup_home.html.py:70
+#: templates/mashup_home.html:80
+msgid "by"
+msgstr "par"
+
+#: templates/mashup_home.html:75
+msgid "Newest Hashcuts"
+msgstr "Derniers Hashcuts"
+
+#: templates/mashup_home.html:86
+msgid "All Hashcuts"
+msgstr "Tous les Hashcuts"
+
+#: templates/mashup_home.html:92
+msgid "What's a Hashcut?"
+msgstr "Hashcut ?"
+
+#: templates/mashup_home.html:97
+msgid "How to?"
+msgstr "Comment faire ?"
+
+#: templates/mashup_home.html:100
+msgid "Sign up"
+msgstr "S'inscrire"
+
+#: templates/mashup_home.html:101
+msgid "Start by creating your own profile on this platform."
+msgstr "Commencez par créer votre espace personnel sur cette plateforme."
+
+#: templates/mashup_home.html:105
+msgid "Create a new hashcut"
+msgstr "Créer un Hashcut"
+
+#: templates/mashup_home.html:106
+msgid ""
+"Choose videos, define and organize segments and comment them to create your "
+"own hashcut."
+msgstr ""
+"Choisissez des médias, segmentez les, assemblez les segments et rajoutez des "
+"commentaires sur le Hashcut."
+
+#: templates/mashup_home.html:110
+msgid "Publish and share"
+msgstr "Publier et partager"
+
+#: templates/mashup_home.html:111
+msgid ""
+"Once your hashcut is done, publish it here and share your work on social "
+"networks."
+msgstr ""
+"Une fois le hashcut terminé, publiez-le sur cette plateforme et partagez "
+"votre création sur les réseaux sociaux"
+
+#: templates/mashup_profile.html:6
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Profil de %(username)s"
+
+#: templates/mashup_profile.html:18
+msgid "Profile"
+msgstr "Profil"
+
+#: templates/partial/mashup_popin_user.html:11
+#, python-format
+msgid "%(nb_mashup_creator)s Hashcut"
+msgid_plural "%(nb_mashup_creator)s Hashcuts"
+msgstr[0] ""
+msgstr[1] ""
+
+#: templates/partial/mashup_popin_user.html:13
+msgid "Switch account"
+msgstr "Changer de compte"
+
+#: templates/partial/mashup_popin_user.html:18
+msgid "Create account:"
+msgstr "Créer un compte"
+
+#: templates/partial/mashup_popin_user.html:22
+#: templates/partial/mashup_popin_user.html:47
+msgid "Login:"
+msgstr "Pseudonyme :"
+
+#: templates/partial/mashup_popin_user.html:26
+msgid "E-mail:"
+msgstr "E-mail :"
+
+#: templates/partial/mashup_popin_user.html:30
+#: templates/partial/mashup_popin_user.html:51
+msgid "Password:"
+msgstr "Mot de passe :"
+
+#: templates/partial/mashup_popin_user.html:34
+msgid "Confirm password:"
+msgstr "Confirmer le mot de passe :"
+
+#: templates/partial/mashup_popin_user.html:38
+#: templates/partial/mashup_popin_user.html:58
+msgid "Create account"
+msgstr "Créer un compte"
+
+#: templates/partial/mashup_popin_user.html:43
+msgid "Log In:"
+msgstr "Se connecter :"
+
+#: templates/partial/mashup_popin_user.html:55
+msgid "Log In"
+msgstr "Se connecter"
Binary file src/hashcut/locale/fr/LC_MESSAGES/djangojs.mo has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hashcut/locale/fr/LC_MESSAGES/djangojs.po Tue Dec 04 18:59:07 2012 +0100
@@ -0,0 +1,187 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-12-04 18:46+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+
+#: static/hashcut/js/common.js:56
+msgid "Share URL"
+msgstr "Partager l'URL"
+
+#: static/hashcut/js/common.js:60
+msgid "Copy"
+msgstr "Copier"
+
+#: static/hashcut/js/common.js:64
+msgid "Share on Facebook"
+msgstr "Partager sur Facebook"
+
+#: static/hashcut/js/common.js:68
+msgid "Share on Twitter"
+msgstr "Partager sur Twitter"
+
+#: static/hashcut/js/common.js:72
+msgid "Share on Google+"
+msgstr "Partager sur Google+"
+
+#: static/hashcut/js/common.js:76
+msgid "Share via E-Mail"
+msgstr "Partager par E-Mail"
+
+#: static/hashcut/js/hashcut.js:1704
+msgid "Unmute"
+msgstr "Couper le son"
+
+#: static/hashcut/js/hashcut.js:1707
+msgid "mute"
+msgstr "Activer le son"
+
+#: static/hashcut/js/hashcut.js:1711
+msgid "Volume:"
+msgstr "Volume :"
+
+#: static/hashcut/js/hashcut.js:1737
+msgid "Pause"
+msgstr "Pause"
+
+#: static/hashcut/js/hashcut.js:1744
+msgid "Play"
+msgstr "Lecture"
+
+#: static/hashcut/js/hashcut.js:2235
+msgid "A segment must be at least one second long"
+msgstr "Le segment doit durer au moins une seconde"
+
+#: static/hashcut/js/hashcut.js:2241
+msgid "A segment must be at most three minutes long"
+msgstr "Le segment doit durer moins de trois minutes"
+
+#: static/hashcut/js/hashcut.js:2245 static/hashcut/js/hashcut.js.c:2550
+#: static/hashcut/js/hashcut.js:2675
+msgid "Untitled segment"
+msgstr "Segment sans titre"
+
+#: static/hashcut/js/hashcut.js:2247
+msgid "A segment must have a title"
+msgstr "Le segment doit avoir un titre"
+
+#: static/hashcut/js/hashcut.js:2255
+msgid "A segment should have a description"
+msgstr "Il est recommandé de donner une description au segment"
+
+#: static/hashcut/js/hashcut.js:2261
+msgid "A segment should have tags"
+msgstr "Il est recommandé de taguer le segment"
+
+#: static/hashcut/js/hashcut.js:2270
+msgid "A hashcut must be made from at least three segments"
+msgstr "Un hashcut doit être composé d'au moins trois segments"
+
+#: static/hashcut/js/hashcut.js:2274 static/hashcut/js/hashcut.js.c:2977
+#: static/hashcut/js/hashcut.js:2987
+msgid "Untitled Hashcut"
+msgstr "Hashcut sans titre"
+
+#: static/hashcut/js/hashcut.js:2276
+msgid "A hashcut must have a title"
+msgstr "Un titre doit être donné au hashcut"
+
+#: static/hashcut/js/hashcut.js:2284
+msgid "A hashcut should have a description"
+msgstr "Il est recommandé de donner une description au hashcut"
+
+#: static/hashcut/js/hashcut.js:2572
+msgid "Add segment to hashcut"
+msgstr "Ajouter au Hashcut"
+
+#: static/hashcut/js/hashcut.js:2572
+msgid "Save segment"
+msgstr "Sauvegarder"
+
+#: static/hashcut/js/hashcut.js:2573
+msgid "Create new segment"
+msgstr "Créer un nouveau segment"
+
+#: static/hashcut/js/hashcut.js:2573
+msgid "Edit existing segment"
+msgstr "Modifier le segment"
+
+#: static/hashcut/js/hashcut.js:2931
+msgid "Copy of "
+msgstr "Copie de "
+
+#: static/hashcut/js/hashcut.js:3005
+msgid ""
+"You haven't published your hashcut yet.\n"
+"If you leave this page, it will be lost."
+msgstr ""
+"Vous n'avez pas encore publié votre Hashcut.\n"
+"Si vous quittez cette page, il sera perdu."
+
+#: static/hashcut/js/hashcut.js:3012
+msgid "The hashcut can't be published because:"
+msgstr "Le Hashcut ne peut pas être publié pour les raisons suivantes :"
+
+#: static/hashcut/js/hashcut.js:3071
+msgid ""
+"Server error\n"
+"Your hashcut couldn't be published"
+msgstr ""
+"Erreur serveur\n"
+"Votre hashcut n'a pas pu être publié"
+
+msgid "The mashup can't be published because:"
+msgstr "Le Hashcut ne peut pas être publié pour les raisons suivantes :"
+
+msgid "Duration:"
+msgstr "Durée :"
+
+msgid "duration:"
+msgstr "durée :"
+
+msgid "Edit segment"
+msgstr "Éditer le segment"
+
+msgid "Move segment down"
+msgstr "Descendre le segment"
+
+msgid "Move segment up"
+msgstr "Remonter le segment"
+
+msgid "Delete segment"
+msgstr "Supprimer le segment"
+
+msgid "Clone segment"
+msgstr "Cloner le segment"
+
+msgid "From:"
+msgstr "De :"
+
+msgid "to:"
+msgstr "à :"
+
+msgid "One or more segments are invalid"
+msgstr "Un ou plusieurs segments ne sont pas valides"
+
+msgid "Your hashcut is valid!"
+msgstr "Votre hashcut est valide !"
+
+msgid "This segment is valid!"
+msgstr "Ce segment est valide !"
+
+msgid "From hashcut:"
+msgstr "Du hashcut :"
--- a/src/hashcut/static/hashcut/js/common.js Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/static/hashcut/js/common.js Tue Dec 04 18:59:07 2012 +0100
@@ -37,17 +37,46 @@
var opts = opts || {};
opts.sel = opts.sel || $(".Ldt-Social");
- opts.url = opts.url || document.location.href;
+ opts.url = opts.url || document.location.href
+ opts.text = opts.text || $("title").text();
+
+ if (!opts.sel.length) {
+ return;
+ }
+
+ opts.sel.addClass("Ldt-Social");
if (opts.swf) {
ZeroClipboard.setMoviePath(opts.swf);
}
- var text = opts.sel.find("title").text(),
- clipId = "Social-Clip-" + (++uid),
- clip;
-
- opts.sel.find(".Ldt-Social-CopyBtn").attr("id", clipId);
+ var clipId = "Social-Clip-" + (++uid),
+ clip,
+ html = '<div class="Ldt-Social-Url-Container"><a href="#" target="_blank" class="Ldt-Social-Square Ldt-Social-Url" title="'
+ + gettext("Share URL")
+ + '"></a><span class="Ldt-Social-UrlPop"><input class="Ldt-Social-Input"/><div class="Ldt-Social-CopyBtn" id="'
+ + clipId
+ + '">'
+ + gettext("Copy")
+ + '</div></span></div><a href="http://www.facebook.com/share.php?'
+ + $.param({ u: opts.url, t: opts.text })
+ + '" target="_blank" class="Ldt-Social-Fb Ldt-Social-Ext" title="'
+ + gettext("Share on Facebook")
+ + '"></a><a href="https://twitter.com/intent/tweet?'
+ + $.param({ url: opts.url, text: opts.text })
+ + '" target="_blank" class="Ldt-Social-Twitter Ldt-Social-Ext" title="'
+ + gettext("Share on Twitter")
+ + '"></a><a href="https://plus.google.com/share?'
+ + $.param({ url: opts.url, title: opts.text })
+ + '" target="_blank" class="Ldt-Social-Gplus Ldt-Social-Ext" title="'
+ + gettext("Share on Google+")
+ + '"></a><a href="mailto:?'
+ + $.param({ subject: opts.text, body: opts.text + ": " + opts.url })
+ + '" target="_blank" class="Ldt-Social-Mail" title="'
+ + gettext("Share via E-Mail")
+ + '"></a></div>';
+
+ opts.sel.html(html);
opts.sel.find(".Ldt-Social-Url").click(function() {
var _pop = opts.sel.find(".Ldt-Social-UrlPop");
@@ -81,10 +110,5 @@
"height=300,width=450,left=100,top=100,toolbar=0,menubar=0,status=0,location=0");
return false;
});
-
- opts.sel.find(".Ldt-Social-Fb").attr("href", "http://www.facebook.com/share.php?" + $.param({ u: opts.url, t: text }));
- opts.sel.find(".Ldt-Social-Twitter").attr("href", "https://twitter.com/intent/tweet?" + $.param({ url: opts.url, text: text }));
- opts.sel.find(".Ldt-Social-Gplus").attr("href", "https://plus.google.com/share?" + $.param({ url: opts.url, title: text }));
- opts.sel.find(".Ldt-Social-Mail").attr("href", "mailto:?" + $.param({ subject: text, body: text + ": " + opts.url }));
}
}());
\ No newline at end of file
--- a/src/hashcut/static/hashcut/js/hashcut.js Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/static/hashcut/js/hashcut.js Tue Dec 04 18:59:07 2012 +0100
@@ -16,9 +16,11 @@
* knowledge of the CeCILL-C license and that you accept its terms.
*/
-var IriSP = {
- serializers: {}
-};
+if (typeof window.IriSP === "undefined") {
+ window.IriSP = {};
+}
+
+IriSP.serializers = {};
IriSP._ = _;
@@ -37,66 +39,6 @@
IriSP.vizcolors = ["#1f77b4 ", "#aec7e8 ", "#ff7f0e ", "#ffbb78 ", "#2ca02c ", "#98df8a ", "#d62728 ", "#ff9896 ", "#9467bd ", "#c5b0d5 ", "#8c564b ", "#c49c94 ", "#e377c2 ", "#f7b6d2 ", "#7f7f7f ", "#c7c7c7 ", "#bcbd22 ", "#dbdb8d ", "#17becf ", "#9edae5"];
/* END init.js */
-IriSP.messages = {
- fr: {
- "Duration:" : "Durée :",
- "duration:" : "durée :",
- "Edit segment": "Éditer le segment",
- "Move segment down": "Descendre le segment",
- "Move segment up": "Remonter le segment",
- "Delete segment": "Supprimer le segment",
- "Clone segment": "Cloner le segment",
- "From:": "De :",
- "to:": "à :",
- "Untitled segment": "Segment sans titre",
- "Untitled Hashcut": "Hashcut sans titre",
- "Copy of ": "Copie de ",
- "A segment must be at least one second long": "Le segment doit durer au moins une seconde",
- "A segment must be at most three minutes long": "Le segment doit durer moins de trois minutes",
- "A segment must have a title": "Le segment doit avoir un titre",
- "A segment should have a description": "Il est recommandé de donner une description au segment",
- "A segment should have tags": "Il est recommandé de taguer le segment",
- "A hashcut must be made from at least three segments": "Un hashcut doit être composé d'au moins trois segments",
- "A hashcut must have a title": "Un titre doit être donné au hashcut",
- "A hashcut should have a description": "Il est recommandé de donner une description au hashcut",
- "One or more segments are invalid": "Un ou plusieurs segments ne sont pas valides",
- "Your hashcut is valid!": "Votre hashcut est valide !",
- "This segment is valid!": "Ce segment est valide !",
- "Add segment to hashcut": "Ajouter au Hashcut",
- "Save segment": "Sauvegarder",
- "Create new segment": "Créer un nouveau segment",
- "Edit existing segment": "Modifier le segment",
- "The hashcut can't be published because:": "Le Hashcut ne peut pas être publié pour les raisons suivantes :",
- "Server error\nYour hashcut couldn't be published": "Erreur serveur\nVotre hashcut n'a pas pu être publié",
- "You haven't published your hashcut yet.\nIf you leave this page, it will be lost": "Vous n'avez pas encore publié votre Hashcut.\nSi vous quittez cette page, il sera perdu.",
- "From hashcut:": "Du hashcut :"
- }
-};
-
-((function() {
- var lang = IriSP.language || navigator.language || navigator.userLanguage || "en",
- srcs = [ ];
- if (typeof IriSP.messages[lang] === "object") {
- srcs.push(IriSP.messages[lang])
- }
- if (lang.substr(0,2) !== lang && typeof IriSP.messages[lang.substr(0,2)] === "object") {
- srcs.push(IriSP.messages[lang.substr(0,2)])
- }
- srcs.push({});
- var l = srcs.length;
-
- IriSP.translate = function(_str) {
- for (var i = 0; i < l; i++) {
- if (typeof srcs[i][_str] !== "undefined") {
- return srcs[i][_str];
- }
- }
- return _str;
- }
-
-}) ());
-
-/* END i18n.js */
/* TODO: Separate Project-specific data from Source */
/* model.js is where data is stored in a standard form, whatever the serializer */
@@ -1759,14 +1701,14 @@
var _soundCtl = $(".Ldt-Ctrl-Sound");
_soundCtl.removeClass("Ldt-Ctrl-Sound-Mute Ldt-Ctrl-Sound-Half Ldt-Ctrl-Sound-Full");
if (_muted) {
- _soundCtl.attr("title", "Activer le son")
+ _soundCtl.attr("title", gettext("Unmute"))
.addClass("Ldt-Ctrl-Sound-Mute");
} else {
- _soundCtl.attr("title", "Couper le son")
+ _soundCtl.attr("title", gettext("mute"))
.addClass(_vol < .5 ? "Ldt-Ctrl-Sound-Half" : "Ldt-Ctrl-Sound-Full" )
}
volBar.slider("value", _muted ? 0 : 100 * _vol);
- volBar.attr("title",'Volume : ' + Math.floor(100 * _vol) + '%');
+ volBar.attr("title",gettext("Volume:") + Math.floor(100 * _vol) + '%');
}
}
@@ -1792,14 +1734,14 @@
function onCurrentMediaPlay() {
$(".Ldt-Ctrl-Play")
- .attr("title", "Pause")
+ .attr("title", gettext("Pause"))
.removeClass("Ldt-Ctrl-Play-PlayState")
.addClass("Ldt-Ctrl-Play-PauseState")
}
function onCurrentMediaPause() {
$(".Ldt-Ctrl-Play")
- .attr("title", "Lecture")
+ .attr("title", gettext("Play"))
.removeClass("Ldt-Ctrl-Play-PauseState")
.addClass("Ldt-Ctrl-Play-PlayState")
}
@@ -2245,22 +2187,22 @@
'<li class="item-video media" data-media-id="<%= id %>"><div class="media-count-wrap"><span class="media-count"></span></div>'
+ '<img class="thumbnail" src="<%= thumbnail %>" alt="<%= title %>" />'
+ '<div class="video-info"><h3 class="title-video"><%= title %></h3><p class="description"><%= description %></p>'
- + '<p class="time-length"><%= IriSP.translate("Duration:") %> <span><%= duration.toString() %></span></p></div><div class="media-found-segments"></div></li>'
+ + '<p class="time-length"><%= gettext("Duration:") %> <span><%= duration.toString() %></span></p></div><div class="media-found-segments"></div></li>'
),
segmenttemplate = _.template(
'<li class="item-video annotation" data-segment-id="<%= annotation.id %>" data-media-id="<%= annotation.getMedia().id %>">'
+ '<img class="thumbnail" src="<%= annotation.thumbnail %>" alt="<%= annotation.getMedia().title %>" />'
+ '<div class="validate <%= annotation.status %>"><div class="validate-tooltip"><ul><li><%= annotation.status_messages.join("</li><li>") %></li></ul></div></div><div class="video-info"><h3 class="title-video"><%= annotation.getMedia().title %></h3>'
+ '<p class="subtitle"><%= annotation.title %></p><p class="duration"><%= annotation.begin.toString() %> - <%= annotation.end.toString() %> (<%= annotation.getDuration().toString() %>)</p>'
- + '<ul class="tools"><li><a class="edit" href="#" title="<%= IriSP.translate("Edit segment") %>"></a></li><li><a class="bottom" href="#" title="<%= IriSP.translate("Move segment down") %>"></a></li>'
- + '<li><a class="top" href="#" title="<%= IriSP.translate("Move segment up") %>"></a></li><li><a class="delete" href="#" title="<%= IriSP.translate("Delete segment") %>"></a></li></ul></div></li>'
+ + '<ul class="tools"><li><a class="edit" href="#" title="<%= gettext("Edit segment") %>"></a></li><li><a class="bottom" href="#" title="<%= gettext("Move segment down") %>"></a></li>'
+ + '<li><a class="top" href="#" title="<%= gettext("Move segment up") %>"></a></li><li><a class="delete" href="#" title="<%= gettext("Delete segment") %>"></a></li></ul></div></li>'
),
mediasegmenttemplate = _.template(
'<div class="media-segment">'
+ '<div class="media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= color %>; top: <%= top %>px;" data-segment-id="<%= annotation.id %>"></div>'
+ '<div class="popin media-segment-popin" style="left:<%= popleft %>px; top: <%= 5+top %>px;"><div style="left:<%= pointerpos %>px;" class="pointer"></div><div class="popin-content">'
- + '<h3><%= annotation.title %></h3><a href="#" class="button reprendre-segment" data-segment-id="<%= annotation.id %>"><%= IriSP.translate("Clone segment") %></a>'
- + '<p><%= IriSP.translate("From:") %> <span><%= annotation.begin.toString() %></span> <%= IriSP.translate("to:") %> <span><%= annotation.end.toString() %></span> (<%= IriSP.translate("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
+ + '<h3><%= annotation.title %></h3><a href="#" class="button reprendre-segment" data-segment-id="<%= annotation.id %>"><%= gettext("Clone segment") %></a>'
+ + '<p><%= gettext("From:") %> <span><%= annotation.begin.toString() %></span> <%= gettext("to:") %> <span><%= annotation.end.toString() %></span> (<%= gettext("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
+ '</div></div></div>'
),
mediasegmentlisttemplate = _.template(
@@ -2269,7 +2211,7 @@
mediafoundtemplate = _.template(
'<div class="media-segment"><div class="media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= color %>; top: <%= top %>px;"></div>'
+ '<div class="popin media-found-popin" style="left:<%= popleft %>px; top: <%= 5+top %>px;"><div style="left:<%= pointerpos %>px;" class="pointer"></div><div class="popin-content">'
- + '<h3><%= title %></h3><a href="#" class="button clone-segment" data-segment-id="<%= annotation.id %>"><%= IriSP.translate("Clone segment") %></a>'
+ + '<h3><%= title %></h3><a href="#" class="button clone-segment" data-segment-id="<%= annotation.id %>"><%= gettext("Clone segment") %></a>'
+ '</div></div></div>'
),
mediafoundlisttemplate = _.template(
@@ -2277,7 +2219,9 @@
),
mashupstatus = '',
mediasegmentscache = {},
- addMode, currentMedia, currentSegment;
+ mashupModeAfterSave = false,
+ addMode = false,
+ currentMedia, currentSegment;
IriSP.mashupcore(project, mashup);
@@ -2288,19 +2232,19 @@
validate: function(_s) {
return (_s.getDuration() >= 1000);
},
- message: "A segment must be at least one second long"
+ message: gettext("A segment must be at least one second long")
},
{
validate: function(_s) {
return (_s.getDuration() < 180000);
},
- message: "A segment must be at most three minutes long"
+ message: gettext("A segment must be at most three minutes long")
},
{
validate: function(_s) {
- return (!!_s.title && _s.title !== IriSP.translate("Untitled segment"));
+ return (!!_s.title && _s.title !== gettext("Untitled segment"));
},
- message: "A segment must have a title"
+ message: gettext("A segment must have a title")
}
];
var segmentwarning = [
@@ -2308,13 +2252,13 @@
validate: function(_s) {
return (!!_s.description);
},
- message: "A segment should have a description"
+ message: gettext("A segment should have a description")
},
{
validate: function(_s) {
return (!!_s.keywords.length);
},
- message: "A segment should have tags"
+ message: gettext("A segment should have tags")
}
];
@@ -2323,13 +2267,13 @@
validate: function(_m) {
return _m.segments.length > 2;
},
- message: "A hashcut must be made from at least three segments"
+ message: gettext("A hashcut must be made from at least three segments")
},
{
validate: function(_m) {
- return (!!_m.title && _m.title !== IriSP.translate("Untitled Hashcut"));
+ return (!!_m.title && _m.title !== gettext("Untitled Hashcut"));
},
- message: "A hashcut must have a title"
+ message: gettext("A hashcut must have a title")
}
];
var mashupwarning = [
@@ -2337,7 +2281,7 @@
validate: function(_m) {
return !!_m.description
},
- message: "A hashcut should have a description"
+ message: gettext("A hashcut should have a description")
}
];
@@ -2474,7 +2418,7 @@
if (!messages.length) {
messages.push("Your hashcut is valid!");
}
- mashupstatus = ' - ' + _(messages).map(IriSP.translate).join('\n - ');
+ mashupstatus = ' - ' + _(messages).join('\n - ');
$(".publier-button").toggleClass("disable", critical);
@@ -2579,7 +2523,7 @@
if (!messages.length) {
messages.push("This segment is valid!")
}
- currentSegment.status_messages = _(messages).map(IriSP.translate);
+ currentSegment.status_messages = _(messages);
$(".segmentation .validate").removeClass("critical warning valid").addClass(currentSegment.status);
$(".segmentation .validate-tooltip").html("<ul><li>" + currentSegment.status_messages.join("</li><li>")+"</li></ul>");
@@ -2603,7 +2547,7 @@
currentSegment.setMedia(currentMedia.id);
currentSegment.setBegin(currentMedia.getCurrentTime());
currentSegment.setEnd(Math.min(currentMedia.getCurrentTime() + 180000, currentMedia.duration));
- currentSegment.title = IriSP.translate("Untitled segment");
+ currentSegment.title = gettext("Untitled segment");
currentSegment.color = currentMedia.color;
currentSegment.thumbnail = currentMedia.thumbnail;
currentSegment.created = new Date();
@@ -2625,8 +2569,8 @@
if (currentMedia.loaded) {
currentMedia.setCurrentTime(currentSegment.begin);
}
- $(".add-segment").val(IriSP.translate(addMode ? "Add segment to hashcut" : "Save segment"));
- $(".create-or-edit").text(IriSP.translate(addMode ? "Create new segment" : "Edit existing segment"));
+ $(".add-segment").val(addMode ? gettext("Add segment to hashcut") : gettext("Save segment"));
+ $(".create-or-edit").text(addMode ? gettext("Create new segment") : gettext("Edit existing segment"));
$("#segment-title").val(currentSegment.title);
$("#segment-description").val(currentSegment.description);
var segment_tags = $("#segment-tags");
@@ -2728,7 +2672,7 @@
}
});
$("#segment-title").on("focus click", function() {
- if ($(this).val() === IriSP.translate("Untitled segment")) {
+ if ($(this).val() === gettext("Untitled segment")) {
$(this).val("");
}
});
@@ -2752,10 +2696,14 @@
mashup.trigger("change");
var segment = mashup.getAnnotation(currentSegment);
currentSegment = undefined;
- setMedia(mashup);
- if (segment) {
- mashup.setCurrentTime(segment.begin);
- mashup.trigger("enter-annotation",segment);
+ if (mashupModeAfterSave) {
+ setMedia(mashup);
+ if (segment) {
+ mashup.setCurrentTime(segment.begin);
+ mashup.trigger("enter-annotation",segment);
+ }
+ } else {
+
}
}
return false;
@@ -2857,6 +2805,7 @@
var currentItem = $(this).parents(".item-video"),
media = project.getElement(currentItem.attr("data-media-id")),
segment = project.getElement(currentItem.attr("data-segment-id"));
+ mashupModeAfterSave = !!(currentMedia === mashup);
currentSegment = segment;
setMedia(media);
return false;
@@ -2962,6 +2911,7 @@
$(".mashup-description .edit").click(function() {
if (mashup.currentAnnotation) {
+ mashupModeAfterSave = !!(currentMedia === mashup);
currentSegment = mashup.currentAnnotation.annotation;
setMedia(mashup.currentAnnotation.getMedia());
}
@@ -2978,7 +2928,7 @@
currentSegment.setMedia(media.id);
currentSegment.setBegin(s.begin);
currentSegment.setEnd(s.end);
- currentSegment.title = IriSP.translate("Copy of ") + s.title;
+ currentSegment.title = gettext("Copy of ") + s.title;
currentSegment.description = s.description;
currentSegment.keywords = s.keywords;
currentSegment.color = media.color;
@@ -3024,7 +2974,7 @@
});
/* Changing Hashcut Title and description */
- mashup.title = IriSP.translate("Untitled Hashcut");
+ mashup.title = gettext("Untitled Hashcut");
$(".title-video-wrap a").text(mashup.title);
$("#hashcut-title").val(mashup.title);
@@ -3034,7 +2984,7 @@
mashup.trigger("change");
});
$("#hashcut-title").on("focus click", function() {
- if ($(this).val() === IriSP.translate("Untitled Hashcut")) {
+ if ($(this).val() === gettext("Untitled Hashcut")) {
$(this).val("");
}
});
@@ -3052,14 +3002,14 @@
/* Publication */
function onLeave() {
- return IriSP.translate("You haven't published your hashcut yet.\nIf you leave this page, it will be lost");
+ return gettext("You haven't published your hashcut yet.\nIf you leave this page, it will be lost.");
}
$(window).on("beforeunload", onLeave);
$(".publier-button").click(function() {
if ($(this).hasClass("disable")) {
- alert(IriSP.translate("The mashup can't be published because:")+"\n\n"+mashupstatus);
+ alert(gettext("The hashcut can't be published because:")+"\n\n"+mashupstatus);
return false;
}
var postproject = directory.newLocalSource(),
@@ -3118,7 +3068,7 @@
document.location.href = destination;
},
error: function(jqXHR, textStatus, errorThrown){
- alert(IriSP.translate("Server error\nYour hashcut couldn't be published"));
+ alert(gettext("Server error\nYour hashcut couldn't be published"));
waitscreen.remove();
}
});
@@ -3242,8 +3192,8 @@
+ '<div class="media-segment-section" style="left:<%= left %>px; width:<%= width %>px; background:<%= color %>; top: <%= top %>px;" data-segment-id="<%= annotation.id %>"></div>'
+ '<div class="popin media-segment-popin" style="left:<%= popleft %>px; top: <%= 5+top %>px;"><div style="left:<%= pointerpos %>px;" class="pointer"></div><div class="popin-content">'
+ '<h3><%= annotation.title %></h3>'
- + '<p><%= IriSP.translate("From:") %> <span><%= annotation.begin.toString() %></span> <%= IriSP.translate("to:") %> <span><%= annotation.end.toString() %></span> (<%= IriSP.translate("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
- + '<p class="mashup-link"><%= IriSP.translate("From hashcut:") %> <a href="<%= IriSP.endpoints.hashcut_page + annotation.project_id %>"></a></p>'
+ + '<p><%= gettext("From:") %> <span><%= annotation.begin.toString() %></span> <%= gettext("to:") %> <span><%= annotation.end.toString() %></span> (<%= gettext("duration:") %> <span><%= annotation.getDuration().toString() %></span>)</p>'
+ + '<p class="mashup-link"><%= gettext("From hashcut:") %> <a href="<%= IriSP.endpoints.hashcut_page + annotation.project_id %>"></a></p>'
+ '</div></div></div>'
),
segmentlisttemplate = _.template(
--- a/src/hashcut/static/hashcut/js/social.js Tue Dec 04 13:31:01 2012 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-(function() {
-
-var uid = 0;
-
-window.social = function(opts) {
-
- var opts = opts || {};
- opts.sel = opts.sel || $(".Ldt-Social");
- opts.url = opts.url || document.location.href;
-
- if (opts.swf) {
- ZeroClipboard.setMoviePath(opts.swf);
- }
-
- var text = opts.sel.find("title").text(),
- clipId = "Social-Clip-" + (++uid),
- clip;
-
- opts.sel.find(".Ldt-Social-CopyBtn").attr("id", clipId);
-
- opts.sel.find(".Ldt-Social-Url").click(function() {
- var _pop = opts.sel.find(".Ldt-Social-UrlPop");
- _pop.toggle();
- if (_pop.is(":visible")) {
- if (typeof clip == "undefined") {
- clip = new ZeroClipboard.Client();
- clip.setHandCursor( true );
- clip.glue(clipId);
-
- clip.addEventListener( 'onMouseUp', function() {
- _pop.hide();
- clip.hide();
- });
- }
- clip.show();
- clip.setText( opts.url );
- opts.sel.find(".Ldt-Social-Input").val(opts.url).focus();
- } else {
- clip.hide();
- }
- return false;
- });
- opts.sel.find(".Ldt-Social-Input").focus(function() {
- this.select();
- });
- opts.sel.find(".Ldt-Social-Ext").click(function() {
- window.open(
- opts.sel.find(this).attr("href"),
- "_blank",
- "height=300,width=450,left=100,top=100,toolbar=0,menubar=0,status=0,location=0");
- return false;
- });
-
- opts.sel.find(".Ldt-Social-Fb").attr("href", "http://www.facebook.com/share.php?" + $.param({ u: opts.url, t: text }));
- opts.sel.find(".Ldt-Social-Twitter").attr("href", "https://twitter.com/intent/tweet?" + $.param({ url: opts.url, text: text }));
- opts.sel.find(".Ldt-Social-Gplus").attr("href", "https://plus.google.com/share?" + $.param({ url: opts.url, title: text }));
- opts.sel.find(".Ldt-Social-Mail").attr("href", "mailto:?" + $.param({ subject: text, body: text + ": " + opts.url }));
-}
-}());
-/* END social.js */
--- a/src/hashcut/templates/mashup_all_mashups.html Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/templates/mashup_all_mashups.html Tue Dec 04 18:59:07 2012 +0100
@@ -19,9 +19,9 @@
</div>
<div class="profil-wrap">
<ul>
- <li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">Accueil</a></li>
- <li><a href="{% url mashup_edit branding=branding %}" class="new-hashcut">Créer un Hashcut</a></li>
- <li><a href="#user" class="my-profil open-popin">Mon profil</a></li>
+ <li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">{% trans "Home" %}</a></li>
+ <li><a href="{% url mashup_edit branding=branding %}" class="new-hashcut">{% trans "New hashcut" %}</a></li>
+ <li><a href="#user" class="my-profil open-popin">{% trans "My profile" %}</a></li>
</ul>
</div>
</div><!-- header -->
--- a/src/hashcut/templates/mashup_content.html Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/templates/mashup_content.html Tue Dec 04 18:59:07 2012 +0100
@@ -3,10 +3,38 @@
{% load i18n %}
{% load analytics %}
{% load thumbnail %}
- {% block title %}Lecture du média '{{content.title}}'{% endblock %}
+ {% block title %}{% blocktrans with title=content.title %}Playing video {{title}}{% endblocktrans %}{% endblock %}
{% block css_page %}
<link rel="stylesheet" href="{% static 'hashcut' %}/{{branding}}/css/players.css" />
- {% endblock %}
+ {% endblock %}
+
+ {% block js_import %}
+ {{block.super}}
+ <script type="text/javascript" src="{% static 'hashcut/lib/underscore-min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/lib/popcorn-complete.min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/js/hashcut.js' %}"></script>
+ <script type="text/javascript">
+ IriSP.endpoints = {
+ content: "{% url api_dispatch_list api_name='1.0' resource_name='contents' %}",
+ project: "{% url api_dispatch_list api_name='1.0' resource_name='projects' %}",
+ segment: "{% url api_dispatch_list api_name='1.0' resource_name='segments' %}",
+ ldt: "{% url projectjson_id id='' %}",
+ hashcut_page: "{% url mashup_hashcut branding=branding ldt_id='' %}"
+ };
+
+ $(function() {
+ IriSP.video_url_transform = function(oldurl) {
+ var newurl = oldurl.replace(/mp4:/i,'');
+ newurl = newurl.replace(/ddc_player\//i,'');
+ newurl = newurl.replace(/rtmp/i,'http');
+ return newurl;
+ };
+ IriSP.mediaplayer({
+ id: "{{ctt_id}}"
+ });
+ });
+ </script>
+ {% endblock %}
{% block wrap_header %}
<div class="wrap-header">
@@ -15,17 +43,17 @@
{% include 'partial/hashcut_logo.html' %}
<div class="title-video-wrap">
<p class="title-video" href="#">
- <span class="category">Média</span>
+ <span class="category">{% trans "Video" %}</span>
<span class="separator">»</span>
{{content.title}}
</p>
</div>
- {% include 'partial/hashcut_social.html' %}
+ <div class="Ldt-Social"></div>
<div class="profil-wrap">
<ul>
- <li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">Accueil</a></li>
- <li><a href="{% url mashup_edit branding=branding %}" class="new-hashcut">Créer un Hashcut</a></li>
- <li><a href="#user" class="my-profil open-popin">Mon profil</a></li>
+ <li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">{% trans "Home" %}</a></li>
+ <li><a href="{% url mashup_edit branding=branding %}" class="new-hashcut">{% trans "New hashcut" %}</a></li>
+ <li><a href="#user" class="my-profil open-popin">{% trans "My profile" %}</a></li>
</ul>
</div>
</div><!-- header -->
@@ -36,7 +64,6 @@
<div class="content clearfix">
<div class="left-content">
- <h2>Lire le Média</h2>
<div class="bloc-video">
<div class="video">
<div class="video-wait"></div>
@@ -49,26 +76,20 @@
<div class="Ldt-Ctrl">
<div class="Ldt-Ctrl-Left">
- <div title="Lecture" class="Ldt-Ctrl-button Ldt-Ctrl-Play Ldt-Ctrl-Play-PlayState"></div>
+ <div title="{% trans 'Play/Pause' %}" class="Ldt-Ctrl-button Ldt-Ctrl-Play Ldt-Ctrl-Play-PlayState"></div>
<div class="Ldt-Ctrl-spacer"></div>
- <div class="Ldt-Ctrl-InOutBlock">
- <div title="Débuter le segment ici" class="Ldt-Ctrl-button Ldt-Ctrl-SetIn"></div>
- <div class="Ldt-Ctrl-spacer"></div>
- <div title="Finir le segment ici" class="Ldt-Ctrl-button Ldt-Ctrl-SetOut"></div>
- <div class="Ldt-Ctrl-spacer"></div>
- </div>
</div>
<div class="Ldt-Ctrl-Right">
<div class="Ldt-Ctrl-spacer"></div>
<div class="Ldt-Ctrl-Time">
- <div title="Temps écoulé" class="Ldt-Ctrl-Time-Elapsed">00:00</div>
+ <div class="Ldt-Ctrl-Time-Elapsed" title="{% trans 'Elapsed time' %}">00:00</div>
<div class="Ldt-Ctrl-Time-Separator">/</div>
- <div title="Temps total" class="Ldt-Ctrl-Time-Total">00:00</div>
+ <div class="Ldt-Ctrl-Time-Total" title="{% trans 'Total time' %}">00:00</div>
</div>
<div class="Ldt-Ctrl-spacer"></div>
- <div title="Couper le son" class="Ldt-Ctrl-button Ldt-Ctrl-Sound Ldt-Ctrl-Sound-Full"></div>
+ <div class="Ldt-Ctrl-button Ldt-Ctrl-Sound Ldt-Ctrl-Sound-Full" title="{% trans 'Mute/Unmute' %}"></div>
</div>
- <div title="Changer le volume" class="Ldt-Ctrl-Volume-Control">
+ <div class="Ldt-Ctrl-Volume-Control" title="{% trans 'Set volume' %}">
<div class="Ldt-Ctrl-Volume-Bar"></div>
</div>
</div>
@@ -79,68 +100,35 @@
</div><!-- left-content -->
<div class="right-content">
- <h2>Plus d’informations</h2>
+ <h2>{% trans 'More informations' %}</h2>
<div class="more-info-wrap">
<table class="more-info ">
<tbody>
<tr class="info-title">
- <th>Titre :</th>
+ <th>{% trans 'Title:' %}</th>
<td><a href="#">{{content.title}}</a></td>
</tr>
<tr class="info-duration">
- <th>Durée :</th>
+ <th>{% trans 'Duration:' %}</th>
<td></td>
</tr>
<tr class="info-description">
- <th>Description : </th>
+ <th>{% trans 'Description:' %}</th>
<td></td>
</tr>
<tr class="info-tags">
- <th>Tags : </th>
+ <th>{% trans 'Tags:' %}</th>
<td></td>
</tr>
</tbody>
</table>
</div>
</ul>
- <h2>Hashcuts utilisant le média</h2>
+ <h2>{% trans 'Hashcuts using this video' %}</h2>
<ul class="list-video">
</ul>
</div><!-- right-content -->
</div><!-- content -->
{% endblock %}
-<!-- JavaScript -->
-{% block js_import %}
-<script type="text/javascript" src="{% static 'hashcut/lib/jquery.min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/lib/jquery-ui.min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/js/common.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/lib/underscore-min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/lib/popcorn-complete.min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/js/hashcut.js' %}"></script>
-<script type="text/javascript">
- IriSP.endpoints = {
- content: "{% url api_dispatch_list api_name='1.0' resource_name='contents' %}",
- project: "{% url api_dispatch_list api_name='1.0' resource_name='projects' %}",
- segment: "{% url api_dispatch_list api_name='1.0' resource_name='segments' %}",
- ldt: "{% url projectjson_id id='' %}",
- hashcut_page: "{% url mashup_hashcut branding=branding ldt_id='' %}"
- };
-
- $(function() {
- IriSP.video_url_transform = function(oldurl) {
- var newurl = oldurl.replace(/mp4:/i,'');
- newurl = newurl.replace(/ddc_player\//i,'');
- newurl = newurl.replace(/rtmp/i,'http');
- return newurl;
- };
- IriSP.mediaplayer({
- id: "{{ctt_id}}"
- });
- social({
- swf: "{% static 'hashcut/lib/ZeroClipboard.swf' %}"
- });
- });
-</script>
-{% endblock %}
--- a/src/hashcut/templates/mashup_edit.html Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/templates/mashup_edit.html Tue Dec 04 18:59:07 2012 +0100
@@ -3,12 +3,46 @@
{% load i18n %}
{% load analytics %}
{% load thumbnail %}
- {% block title %}Création de Hashcut{% endblock %}
+ {% block title %}{% trans "Hashcut editor" %}{% endblock %}
{% block css_page %}
<link rel="stylesheet" href="{% static 'hashcut/lib/jquery.tagit.css' %}" />
<link rel="stylesheet" href="{% static 'hashcut' %}/{{branding}}/css/edition.css" />
{% endblock %}
+ {% block js_import %}
+ {{ block.super }}
+ <script type="text/javascript" src="{% static 'hashcut/lib/tag-it.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/lib/underscore-min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/lib/popcorn-complete.min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/js/hashcut.js' %}"></script>
+ <script type="text/javascript">
+ IriSP.endpoints = {
+ content: "{% url api_dispatch_list api_name='1.0' resource_name='contents' %}",
+ //project: "{% url api_dispatch_list api_name='1.0' resource_name='projects' %}",
+ project: "{% url mashup_save branding=branding %}",
+ segment: "{% url api_dispatch_list api_name='1.0' resource_name='segments' %}",
+ ldt: "{% url projectjson_id id='' %}",
+ hashcut_page: "{% url mashup_hashcut branding=branding ldt_id='' %}"
+ };
+ $(function() {
+ IriSP.video_url_transform = function(oldurl) {
+ var newurl = oldurl.replace(/mp4:/i,'');
+ newurl = newurl.replace(/ddc_player\//i,'');
+ newurl = newurl.replace(/rtmp/i,'http');
+ return newurl;
+ };
+ var hashcut = IriSP.editor({
+ creator: "{{user.username}}",
+ csrf_token: "{{csrf_token}}",
+ filter: {
+ tags__icontains: "{{branding}}"
+ }
+ });
+ $(".change-account").remove();
+ });
+ </script>
+ {% endblock %}
+
{% block wrap_header %}
<div class="wrap-header">
<div class="header">
@@ -19,11 +53,11 @@
<div class="popin-content">
<form class="clearfix" action="#" id="hashcut-form" method="">
<p>
- <label for="hashcut-title">Titre :</label>
- <input type="text" id="hashcut-title" name="" value="Hashcut sans titre" />
+ <label for="hashcut-title">{% trans "Title:" %}</label>
+ <input type="text" id="hashcut-title" name="" value="{% trans 'Untitled Hashcut' %}" />
</p>
<p>
- <label for="hashcut-description">Description :</label>
+ <label for="hashcut-description">{% trans "Description:" %}</label>
<textarea name="" id="hashcut-description"></textarea>
</p>
</form>
@@ -35,14 +69,14 @@
<div class="title-video-wrap">
<p class="title-video">
- <a title="Modifier le titre et la description" class="open-popin" href="#update-title">Hashcut sans titre</a>
+ <a title="Modifier le titre et la description" class="open-popin" href="#update-title">{% trans "Untitled Hashcut" %}</a>
</p>
- <p class="time-length">Durée: <span class="mashup-total-duration">00:00</span></p>
+ <p class="time-length">{% trans "Duration:" %} <span class="mashup-total-duration">00:00</span></p>
</div>
<div class="profil-wrap">
<ul class="space-top">
- <li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">Accueil</a></li>
- <li><a href="#user" class="my-profil open-popin">Mon profil</a></li>
+ <li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">{% trans "Home" %}</a></li>
+ <li><a href="#user" class="my-profil open-popin">{% trans "My profile" %}</a></li>
</ul>
</div>
</div><!-- header -->
@@ -54,8 +88,8 @@
<div class="col-left">
<div class="left-head">
- <h2>Sélectionner les vidéos</h2>
- <input type="text" name="" placeholder="Rechercher une vidéo" />
+ <h2>{% trans "Select videos" %}</h2>
+ <input type="text" name="" placeholder="{% trans 'Search videos' %}" />
</div>
<ul class="list-video">
@@ -65,18 +99,18 @@
<div class="col-middle empty-mode">
<div class="col-middle-header">
- <a href="#" class="tab tab-segment">Segmenter <span class="tab-media-title"></span></a>
- <a href="#" class="tab tab-pvw">Prévisualiser et Publier</a>
+ <a href="#" class="tab tab-segment">{% trans "Segment" %} <span class="tab-media-title"></span></a>
+ <a href="#" class="tab tab-pvw">{% trans "Preview and publish" %}</a>
</div>
<div class="video">
<div class="tutorial">
- <h2>Créer un Hashcut, c’est facile !</h2>
+ <h2>{% trans "Creating a hashcut is easy!" %}</h2>
<ol>
- <li>Commencez par choisir une vidéo dans le volet de gauche</li>
- <li>Créez un segment dans la vidéo et profitez-en pour annoter votre segment</li>
- <li>Ajoutez votre segment à la liste, réorganisez les segments entre eux</li>
- <li>Rajoutez quelques commentaires à votre Hashcut. Vous êtes prêts à publier !</li>
+ <li>{% trans "Start by selecting a video in the left hand column." %}</li>
+ <li>{% trans "Create a segment in your video and annotate it." %}</li>
+ <li>{% trans "Append your segment to the hashcut and reorder the segments" %}</li>
+ <li>{% trans "Add a few comments to your hashcut. You are ready to publish!" %}</li>
</ol>
</div>
<div class="video-wait"></div>
@@ -91,26 +125,26 @@
<div class="Ldt-Ctrl">
<div class="Ldt-Ctrl-Left">
- <div class="Ldt-Ctrl-button Ldt-Ctrl-Play Ldt-Ctrl-Play-PlayState" title="Lecture/Pause"></div>
+ <div class="Ldt-Ctrl-button Ldt-Ctrl-Play Ldt-Ctrl-Play-PlayState" title="{% trans 'Play/Pause' %}"></div>
<div class="Ldt-Ctrl-spacer"></div>
<div class="Ldt-Ctrl-InOutBlock">
- <div class="Ldt-Ctrl-button Ldt-Ctrl-SetIn" title="Débuter le segment ici"></div>
+ <div class="Ldt-Ctrl-button Ldt-Ctrl-SetIn" title="{% trans 'Begin segment here' %}"></div>
<div class="Ldt-Ctrl-spacer"></div>
- <div class="Ldt-Ctrl-button Ldt-Ctrl-SetOut" title="Finir le segment ici"></div>
+ <div class="Ldt-Ctrl-button Ldt-Ctrl-SetOut" title="{% trans 'End segment here' %}"></div>
<div class="Ldt-Ctrl-spacer"></div>
</div>
</div>
<div class="Ldt-Ctrl-Right">
<div class="Ldt-Ctrl-spacer"></div>
<div class="Ldt-Ctrl-Time">
- <div class="Ldt-Ctrl-Time-Elapsed" title="Temps écoulé">00:00</div>
+ <div class="Ldt-Ctrl-Time-Elapsed" title="{% trans 'Elapsed time' %}">00:00</div>
<div class="Ldt-Ctrl-Time-Separator">/</div>
- <div class="Ldt-Ctrl-Time-Total" title="Temps total">00:00</div>
+ <div class="Ldt-Ctrl-Time-Total" title="{% trans 'Total time' %}">00:00</div>
</div>
<div class="Ldt-Ctrl-spacer"></div>
- <div class="Ldt-Ctrl-button Ldt-Ctrl-Sound Ldt-Ctrl-Sound-Full" title="Couper/Activer le son"></div>
+ <div class="Ldt-Ctrl-button Ldt-Ctrl-Sound Ldt-Ctrl-Sound-Full" title="{% trans 'Mute/Unmute' %}"></div>
</div>
- <div class="Ldt-Ctrl-Volume-Control" title="Changer le volume">
+ <div class="Ldt-Ctrl-Volume-Control" title="{% trans 'Set volume' %}">
<div class="Ldt-Ctrl-Volume-Bar"></div>
</div>
</div>
@@ -128,45 +162,45 @@
<div class="validate-tooltip"></div>
</div>
<h2>
- <span class="create-or-edit">Créer un nouveau segment</span>
- de
+ <span class="create-or-edit">{% trans 'Create a new segment' %}</span>
+ {% trans 'from' %}
<span class="time-tangle tangle-start"></span>
- à
+ {% trans 'to' %}
<span class="time-tangle tangle-end"></span>
- (durée:
+ ({% trans 'duration:' %}
<span class="time-tangle tangle-duration"></span>)
</h2>
<form action="#" id="segment-form">
<div class="form-segment-left">
<p>
- <label for="segment-title">Titre :</label>
+ <label for="segment-title">{% trans 'Title:' %}</label>
<input type="text" id="segment-title" />
</p>
<p>
- <label for="segment-tags">Tags :</label>
+ <label for="segment-tags">{% trans 'Tags:' %}</label>
<ul id="segment-tags"></ul>
</p>
</div>
<div class="form-segment-right">
<p>
- <label for="segment-description">Description :</label>
+ <label for="segment-description">{% trans 'Description:' %}</label>
<textarea id="segment-description"></textarea>
</p>
</div>
- <input class="button add-segment" type="submit" value="Ajouter au Hashcut" />
+ <input class="button add-segment" type="submit" value="{% trans 'Add to hashcut' %}" />
</form>
</div>
</div><!-- popin segmentation -->
<div class="media-segments self-media-segments">
- <h2>Mes segments sur ce média :</h2>
+ <h2>{% trans 'My segments on this media:' %}</h2>
<div class="media-segments-list">
</div>
</div>
<div class="media-segments other-media-segments">
- <h2>Segments existants sur ce média :</h2>
+ <h2>{% trans 'Existing segments on this media:' %}</h2>
<div class="media-segments-list">
</div>
</div>
@@ -203,15 +237,15 @@
<table>
<tbody>
<tr>
- <th>Extrait de :</th>
+ <th>{% trans 'Excerpt from:' %}</th>
<td><span class="annotation-media-title"></span> (<span class="annotation-time annotation-begin"></span> - <span class="annotation-time annotation-end"></span>)</td>
</tr>
<tr>
- <th>Description :</th>
+ <th>{% trans 'Description:' %}</th>
<td><span class="annotation-description"></span></td>
</tr>
<tr>
- <th>Tags :</th>
+ <th>{% trans 'Tags:' %}</th>
<td><span class="annotation-tags"></span></td>
</tr>
</tbody>
@@ -227,9 +261,9 @@
<div class="validate critical">
<div class="validate-tooltip"></div>
</div>
- <h2>Liste des segments</h2>
+ <h2>{% trans 'Segment list' %}</h2>
<div class="frise mashup-frise">
- <p class="aucun-segment">Aucun segment</p>
+ <p class="aucun-segment">{% trans 'No segment' %}</p>
<div class="frise-overflow">
<div class="frise-segments">
</div>
@@ -251,38 +285,4 @@
</div><!-- content -->
{% endblock %}
-<!-- JavaScript -->
-{% block js_import %}
-{{ block.super }}
-<script type="text/javascript" src="{% static 'hashcut/lib/tag-it.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/lib/underscore-min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/lib/popcorn-complete.min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/js/hashcut.js' %}"></script>
-<script type="text/javascript">
- IriSP.endpoints = {
- content: "{% url api_dispatch_list api_name='1.0' resource_name='contents' %}",
- //project: "{% url api_dispatch_list api_name='1.0' resource_name='projects' %}",
- project: "{% url mashup_save branding=branding %}",
- segment: "{% url api_dispatch_list api_name='1.0' resource_name='segments' %}",
- ldt: "{% url projectjson_id id='' %}",
- hashcut_page: "{% url mashup_hashcut branding=branding ldt_id='' %}"
- };
- $(function() {
- IriSP.video_url_transform = function(oldurl) {
- var newurl = oldurl.replace(/mp4:/i,'');
- newurl = newurl.replace(/ddc_player\//i,'');
- newurl = newurl.replace(/rtmp/i,'http');
- return newurl;
- };
- var hashcut = IriSP.editor({
- creator: "{{user.username}}",
- csrf_token: "{{csrf_token}}",
- filter: {
- tags__icontains: "{{branding}}"
- }
- });
- $(".change-account").remove();
- });
-</script>
-{% endblock %}
--- a/src/hashcut/templates/mashup_hashcut.html Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/templates/mashup_hashcut.html Tue Dec 04 18:59:07 2012 +0100
@@ -3,11 +3,39 @@
{% load i18n %}
{% load analytics %}
{% load thumbnail %}
- {% block title %}Lecture du Hashcut '{{proj.title}}'{% endblock %}
+ {% block title %}{% blocktrans with title=proj.title %}Playing hashcut {{title}}{% endblocktrans %}{% endblock %}
{% block css_page %}
<link rel="stylesheet" href="{% static 'hashcut' %}/{{branding}}/css/players.css" />
{% endblock %}
+ {% block js_import %}
+ {{ block.super }}
+ <script type="text/javascript" src="{% static 'hashcut/lib/underscore-min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/lib/popcorn-complete.min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/js/hashcut.js' %}"></script>
+ <script type="text/javascript">
+ IriSP.endpoints = {
+ content: "{% url api_dispatch_list api_name='1.0' resource_name='contents' %}",
+ project: "{% url api_dispatch_list api_name='1.0' resource_name='projects' %}",
+ segment: "{% url api_dispatch_list api_name='1.0' resource_name='segments' %}",
+ ldt: "{% url projectjson_id id='' %}",
+ media_page: "{% url mashup_content branding=branding ctt_id='' %}"
+ };
+
+ $(function() {
+ IriSP.video_url_transform = function(oldurl) {
+ var newurl = oldurl.replace(/mp4:/i,'');
+ newurl = newurl.replace(/ddc_player\//i,'');
+ newurl = newurl.replace(/rtmp/i,'http');
+ return newurl;
+ };
+ IriSP.mashupplayer({
+ id: "{{ldt_id}}"
+ });
+ });
+ </script>
+ {% endblock %}
+
{% block wrap_header %}
<div class="wrap-header">
<div class="header">
@@ -15,12 +43,12 @@
{% include 'partial/hashcut_logo.html' %}
<div class="title-video-wrap">
<p class="title-video" href="#">
- <span class="category">Hashcut</span>
+ <span class="category">{% trans 'Hashcut' %}</span>
<span class="separator">»</span>
{{proj.title}}
</p>
</div>
- {% include 'partial/hashcut_social.html' %}
+ <div class="Ldt-Social"></div>
<div class="profil-wrap">
<ul>
<li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">Accueil</a></li>
@@ -35,7 +63,6 @@
{% block content %}
<div class="content clearfix">
<div class="left-content">
- <h2>Lire le Hashcut</h2>
<div class="bloc-video">
<div class="video">
<div class="video-wait"></div>
@@ -48,26 +75,20 @@
<div class="Ldt-Ctrl">
<div class="Ldt-Ctrl-Left">
- <div title="Lecture" class="Ldt-Ctrl-button Ldt-Ctrl-Play Ldt-Ctrl-Play-PlayState"></div>
+ <div title="{% trans 'Play/Pause' %}" class="Ldt-Ctrl-button Ldt-Ctrl-Play Ldt-Ctrl-Play-PlayState"></div>
<div class="Ldt-Ctrl-spacer"></div>
- <div class="Ldt-Ctrl-InOutBlock">
- <div title="Débuter le segment ici" class="Ldt-Ctrl-button Ldt-Ctrl-SetIn"></div>
- <div class="Ldt-Ctrl-spacer"></div>
- <div title="Finir le segment ici" class="Ldt-Ctrl-button Ldt-Ctrl-SetOut"></div>
- <div class="Ldt-Ctrl-spacer"></div>
- </div>
</div>
<div class="Ldt-Ctrl-Right">
<div class="Ldt-Ctrl-spacer"></div>
<div class="Ldt-Ctrl-Time">
- <div title="Temps écoulé" class="Ldt-Ctrl-Time-Elapsed">00:00</div>
+ <div class="Ldt-Ctrl-Time-Elapsed" title="{% trans 'Elapsed time' %}">00:00</div>
<div class="Ldt-Ctrl-Time-Separator">/</div>
- <div title="Temps total" class="Ldt-Ctrl-Time-Total">00:00</div>
+ <div class="Ldt-Ctrl-Time-Total" title="{% trans 'Total time' %}">00:00</div>
</div>
<div class="Ldt-Ctrl-spacer"></div>
- <div title="Couper le son" class="Ldt-Ctrl-button Ldt-Ctrl-Sound Ldt-Ctrl-Sound-Full"></div>
+ <div class="Ldt-Ctrl-button Ldt-Ctrl-Sound Ldt-Ctrl-Sound-Full" title="{% trans 'Mute/Unmute' %}"></div>
</div>
- <div title="Changer le volume" class="Ldt-Ctrl-Volume-Control">
+ <div class="Ldt-Ctrl-Volume-Control" title="{% trans 'Set volume' %}">
<div class="Ldt-Ctrl-Volume-Bar"></div>
</div>
</div>
@@ -94,15 +115,15 @@
<table>
<tbody>
<tr>
- <th>Extrait de :</th>
+ <th>{% trans 'Excerpt from:' %}</th>
<td><span class="annotation-media-title"></span> (<span class="annotation-time annotation-begin"></span> - <span class="annotation-time annotation-end"></span>)</td>
</tr>
<tr>
- <th>Description :</th>
+ <th>{% trans 'Description:' %}</th>
<td><span class="annotation-description"></span></td>
</tr>
<tr>
- <th>Tags :</th>
+ <th>{% trans 'Tags:' %}</th>
<td><span class="annotation-tags"></span></td>
</tr>
</tbody>
@@ -113,65 +134,34 @@
</div><!-- left-content -->
<div class="right-content">
- <h2>Plus d’informations</h2>
+ <h2>{% trans 'More information' %}</h2>
<div class="more-info-wrap">
<table class="more-info ">
<tbody>
<tr class="info-title">
- <th>Titre :</th>
+ <th>{% trans 'Title:' %}</th>
<td>{{proj.title}}</td>
</tr>
<tr class="info-duration">
- <th>Durée :</th>
+ <th>{% trans 'Duration:' %}</th>
<td></td>
</tr>
<tr class="info-author">
- <th>Auteur : </th>
+ <th>{% trans 'Author:' %}</th>
<td><a href="{% url mashup_profile branding=branding username=proj.created_by %}">{{proj.created_by}}</a></td>
</tr>
<tr class="info-description">
- <th>Description : </th>
+ <th>{% trans 'Description:' %}</th>
<td></td>
</tr>
</tbody>
</table>
</div>
- <h2>Médias utilisés dans le Hashcut</h2>
+ <h2>{% trans 'Videos used in this Hashcut' %}</h2>
<ul class="list-video">
</ul>
</div><!-- right-content -->
</div><!-- content -->
{% endblock %}
-<!-- JavaScript -->
-{% block js_import %}
-{{ block.super }}
-<script type="text/javascript" src="{% static 'hashcut/lib/underscore-min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/lib/popcorn-complete.min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/js/hashcut.js' %}"></script>
-<script type="text/javascript">
- IriSP.endpoints = {
- content: "{% url api_dispatch_list api_name='1.0' resource_name='contents' %}",
- project: "{% url api_dispatch_list api_name='1.0' resource_name='projects' %}",
- segment: "{% url api_dispatch_list api_name='1.0' resource_name='segments' %}",
- ldt: "{% url projectjson_id id='' %}",
- media_page: "{% url mashup_content branding=branding ctt_id='' %}"
- };
-
- $(function() {
- IriSP.video_url_transform = function(oldurl) {
- var newurl = oldurl.replace(/mp4:/i,'');
- newurl = newurl.replace(/ddc_player\//i,'');
- newurl = newurl.replace(/rtmp/i,'http');
- return newurl;
- };
- IriSP.mashupplayer({
- id: "{{ldt_id}}"
- });
- social({
- swf: "{% static 'hashcut/lib/ZeroClipboard.swf' %}"
- });
- });
-</script>
-{% endblock %}
--- a/src/hashcut/templates/mashup_home.html Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/templates/mashup_home.html Tue Dec 04 18:59:07 2012 +0100
@@ -12,7 +12,7 @@
<meta name="description" content="Interface d'édition de Hashcuts (Mashups vidéo cliquables)" />
<meta name="copyright" content="Institut de Recherche et d'Innovation (IRI), 2012" />
<meta name="author" content="Anthony Ly, Raphaël Velt, Thibaut Cavalié" />
- <title>Hashcut {{branding}} » {% block title %}Accueil{% endblock %}</title>
+ <title>{% trans "Hashcut" %} {{branding}} » {% block title %}{% trans "Home" %}{% endblock %}</title>
{% block css_declaration %}
{% endblock %}
@@ -25,8 +25,27 @@
<link rel="stylesheet" href="{% static 'hashcut' %}/{{branding}}/css/home.css" />
{% endblock %}
- {% block js_declaration %}
+ {% block js_import %}
+
+ <script type="text/javascript" src="{% static 'hashcut/lib/jquery.min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/lib/jquery-ui.min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'hashcut/js/common.js' %}"></script>
+ <script type="text/javascript" src="{% url jsi18n 'hashcut' %}"></script>
+ {% if not user.is_authenticated %}
+ <script type="text/javascript">
+ /* Forbid access to edit page if not connected */
+ $(function() {
+ $("a[href='{% url mashup_edit branding=branding %}']").click(function() {
+ $("#user").show();
+ return false;
+ });
+ });
+
+ </script>
+
+ {% endif %}
{% endblock %}
+
{% endblock %}
</head>
<body>
@@ -39,11 +58,11 @@
{% include 'partial/mashup_popin_user.html' %}
{% include 'partial/hashcut_logo.html' %}
<div class="title-header">
- <h2><a href="{% url mashup_edit branding=branding %}">Créer un hashcut !</a></h2>
+ <h2><a href="{% url mashup_edit branding=branding %}">{% trans "Create a new hashcut!" %}</a></h2>
</div>
<div class="profil-wrap">
<ul class="space-top-2">
- <li><a href="#user" class="my-profil open-popin">Mon profil</a></li>
+ <li><a href="#user" class="my-profil open-popin">{% trans "My profile" %}</a></li>
</ul>
</div>
</div><!-- header -->
@@ -56,59 +75,59 @@
{% block content %}
<div class="content">
<div class="left-content">
- <h2>Hashcuts à la Une</h2>
+ <h2>{% trans "Featured Hashcuts" %}</h2>
<div class="hashcut-video-wrap news">
<div class="video-item">
{% if m1 %}
<a href="{% url mashup_hashcut branding=branding ldt_id=m1.project.ldt_id %}" class="screenshot">{% thumbnail m1.project.image "302x202" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" alt=""/>{% empty %} {% endthumbnail %}</a>
- <h3><a class="title" href="{% url mashup_hashcut branding=branding ldt_id=m1.project.ldt_id %}">{{ m1.project.title }}</a> par <a class="author" href="{% url mashup_profile branding=branding username=m1.creator %}">{{ m1.creator }}</a><!-- | <span class="duration">02:24</span> --></h3>
+ <h3><a class="title" href="{% url mashup_hashcut branding=branding ldt_id=m1.project.ldt_id %}">{{ m1.project.title }}</a> {% trans "by" %} <a class="author" href="{% url mashup_profile branding=branding username=m1.creator %}">{{ m1.creator }}</a><!-- | <span class="duration">02:24</span> --></h3>
{% endif %}
</div>
<div class="video-item">
{% if m2 %}
<a href="{% url mashup_hashcut branding=branding ldt_id=m2.project.ldt_id %}" class="screenshot">{% thumbnail m2.project.image "302x202" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" alt=""/>{% empty %} {% endthumbnail %}</a>
- <h3><a class="title" href="{% url mashup_hashcut branding=branding ldt_id=m2.project.ldt_id %}">{{ m2.project.title }}</a> par <a class="author" href="{% url mashup_profile branding=branding username=m2.creator %}">{{ m2.creator }}</a><!-- | <span class="duration">02:24</span> --></h3>
+ <h3><a class="title" href="{% url mashup_hashcut branding=branding ldt_id=m2.project.ldt_id %}">{{ m2.project.title }}</a> {% trans "by" %} <a class="author" href="{% url mashup_profile branding=branding username=m2.creator %}">{{ m2.creator }}</a><!-- | <span class="duration">02:24</span> --></h3>
{% endif %}
</div>
</div>
- <h2>Derniers Hashcuts</h2>
+ <h2>{% trans "Newest Hashcuts" %}</h2>
<div class="hashcut-video-wrap last">
{% for m in mashups %}
<div class="video-item">
<a href="{% url mashup_hashcut branding=branding ldt_id=m.project.ldt_id %}" class="screenshot">{% thumbnail m.project.image "142x95" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" alt=""/>{% empty %} {% endthumbnail %}</a>
- <h3><a class="title" href="{% url mashup_hashcut branding=branding ldt_id=m2.project.ldt_id %}">{% if m.project.title|length > 30 %}{{m.project.title|slice:":30"}}...{% else %}{{m.project.title}}{% endif %}</a> par <a class="author" href="{% url mashup_profile branding=branding username=m.creator %}">{{ m.creator }}</a><!-- | <span class="duration">02:24</span> --></h3>
+ <h3><a class="title" href="{% url mashup_hashcut branding=branding ldt_id=m2.project.ldt_id %}">{% if m.project.title|length > 30 %}{{m.project.title|slice:":30"}}...{% else %}{{m.project.title}}{% endif %}</a> {% trans "by" %} <a class="author" href="{% url mashup_profile branding=branding username=m.creator %}">{{ m.creator }}</a><!-- | <span class="duration">02:24</span> --></h3>
</div>
{% endfor %}
</div>
<div class="pagination">
- <a href="{% url mashup_all branding=branding %}">Tous les Hashcuts</a>
+ <a href="{% url mashup_all branding=branding %}">{% trans 'All Hashcuts' %}</a>
</div>
</div><!-- left-content -->
<div class="right-content">
<div class="definition">
- <h2>Hashcuts ?</h2>
+ <h2>{% trans "What's a Hashcut?" %}</h2>
<p>Un <strong>Hashcut</strong> est à la fois une <a href="http://fr.wikipedia.org/wiki/Hypervid%C3%A9o" target="_blank">Hypervidéo</a> (vidéo cliquable) et un <a href="http://fr.wikipedia.org/wiki/Mashup_%28video%29" target="_blank">Mashup</a> (mélange de médias, de l’anglais mash, «purée»).</p>
<p>Un <strong>Hashcut</strong> est un assemblage de citations de vidéos, mises bout à bout, sans altération des médias d’origine, et permet à chacun de proposer un nouveau regard, une porte d’entrée éditorialisée sur ces médias.</p>
</div>
<div class="how-to">
- <h2>Comment faire ?</h2>
+ <h2>{% trans "How to?" %}</h2>
<ul>
<li class="inscription">
- <h3><a class="open-popin" href="#user">1. S’inscrire</a></h3>
- <p>Commencez par créer votre espace personnel sur cette plateforme !</p>
+ <h3><a class="open-popin" href="#user">1. {% trans "Sign up" %}</a></h3>
+ <p>{% trans "Start by creating your own profile on this platform." %}</p>
</li>
<li class="next-step"></li>
<li class="creation">
- <h3><a href="{% url mashup_edit branding=branding %}">2. Créer un hashcut</a></h3>
- <p>Choisissez des médias, segmentez les, assemblez les segments et rajoutez des commentaires sur le Hashcut.</p>
+ <h3><a href="{% url mashup_edit branding=branding %}">2. {% trans "Create a new hashcut" %}</a></h3>
+ <p>{% trans "Choose videos, define and organize segments and comment them to create your own hashcut." %}</p>
</li>
<li class="next-step"></li>
<li class="publier">
- <h3><a href="#">3. Publier et partager</a></h3>
- <p>Une fois le hashcut terminé, publiez-le sur cette plateforme etpartagez votre création sur les réseaux sociaux</p>
+ <h3><a href="#">3. {% trans "Publish and share" %}</a></h3>
+ <p>{% trans "Once your hashcut is done, publish it here and share your work on social networks." %}</p>
</li>
</ul>
</div>
@@ -118,13 +137,9 @@
{% endblock %}
{% block footer %}
<div class="footer clearfix">
- <ul class="links-left">
- <li><a href="#">Mentions légales</a></li>
- <li><a href="#">Contacts</a></li>
- </ul>
<ul class="links-right">
- <li><a title="IRI" href="http://www.iri.centrepompidou.fr/" target="_blank"> <img src="{% static 'hashcut' %}/{{branding}}/img/logo-iri.png" alt="iri" /></a></li>
- <li><a title="cinecast" href="http://cinecast.fr/" target="_blank"><img src="{% static 'hashcut' %}/{{branding}}/img/logo-cinecast.png" alt="cinecast" /></a></li>
+ <li><a title="IRI" href="http://www.iri.centrepompidou.fr/" target="_blank"> <img src="{% static 'hashcut' %}/{{branding}}/img/logo-iri.png" alt="IRI" /></a></li>
+ <li><a title="cinecast" href="http://cinecast.fr/" target="_blank"><img src="{% static 'hashcut' %}/{{branding}}/img/logo-cinecast.png" alt="Cinecast" /></a></li>
<li>© 2012</li>
</ul>
</div><!-- footer -->
@@ -132,26 +147,6 @@
</div><!-- wrap -->
</div><!-- wrapper -->
{% endblock %}
-<!-- JavaScript -->
-{% block js_import %}
-<script type="text/javascript" src="{% static 'hashcut/lib/jquery.min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/lib/jquery-ui.min.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/js/common.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/js/social.js' %}"></script>
-<script type="text/javascript" src="{% static 'hashcut/lib/ZeroClipboard.js' %}"></script>
-{% if not user.is_authenticated %}
-<script type="text/javascript">
-/* Forbid access to edit page if not connected */
-$(function() {
- $("a[href='{% url mashup_edit branding=branding %}']").click(function() {
- $("#user").show();
- return false;
- });
-});
-
-</script>
-{% endif %}
-{% endblock %}
{% endblock %}
{% analytics %}
</body>
--- a/src/hashcut/templates/mashup_profile.html Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/templates/mashup_profile.html Tue Dec 04 18:59:07 2012 +0100
@@ -3,7 +3,8 @@
{% load i18n %}
{% load analytics %}
{% load thumbnail %}
- {% block title %}Profil de '{{username}}'{% endblock %}
+
+ {% block title %}{% blocktrans %}{{username}}'s profile{% endblocktrans %}{% endblock %}
{% block css_page %}
<link rel="stylesheet" href="{% static 'hashcut' %}/{{branding}}/css/profil.css" />
{% endblock %}
@@ -15,17 +16,17 @@
{% include 'partial/hashcut_logo.html' %}
<div class="title-video-wrap">
<p class="title-video" href="#">
- <span class="category">Profil</span>
+ <span class="category">{% trans "Profile" %}</span>
<span class="separator">»</span>
{{username}}
</p>
</div>
- {% include 'partial/hashcut_social.html' %}
+ <div class="Ldt-Social"></div>
<div class="profil-wrap">
<ul>
- <li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">Accueil</a></li>
- <li><a href="{% url mashup_edit branding=branding %}" class="new-hashcut">Créer un Hashcut</a></li>
- <li><a href="#user" class="my-profil open-popin">Mon profil</a></li>
+ <li><a href="{% url mashup_home branding=branding %}" class="all-hashcut">{% trans "Home" %}</a></li>
+ <li><a href="{% url mashup_edit branding=branding %}" class="new-hashcut">{% trans "New hashcut" %}</a></li>
+ <li><a href="#user" class="my-profil open-popin">{% trans "My profile" %}</a></li>
</ul>
</div>
</div><!-- header -->
@@ -54,14 +55,4 @@
</div-->
</div><!-- content -->
{% endblock %}
-{% block js_import %}
-{{block.super}}
-<script type="text/javascript">
- $(function() {
- social({
- swf: "{% static 'hashcut/lib/ZeroClipboard.swf' %}"
- });
- });
-</script>
-{% endblock %}
--- a/src/hashcut/templates/partial/hashcut_social.html Tue Dec 04 13:31:01 2012 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
- <div class="Ldt-Social">
- <div class="Ldt-Social-Url-Container">
- <a href="#" target="_blank" class="Ldt-Social-Square Ldt-Social-Url" title="Partager le lien"></a>
- <span class="Ldt-Social-UrlPop">
- <input class="Ldt-Social-Input"/>
- <div class="Ldt-Social-CopyBtn">Copier</div>
- </span>
- </div>
- <a href="#" target="_blank" class="Ldt-Social-Fb Ldt-Social-Ext" title="Partager sur Facebook"></a>
- <a href="#" target="_blank" class="Ldt-Social-Twitter Ldt-Social-Ext" title="Partager sur Twitter"></a>
- <a href="#" target="_blank" class="Ldt-Social-Gplus Ldt-Social-Ext" title="Partager sur Google+"></a>
- <a href="#" target="_blank" class="Ldt-Social-Mail" title="Partager par mail"></a>
- </div>
\ No newline at end of file
--- a/src/hashcut/templates/partial/iri_top_header.html Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/templates/partial/iri_top_header.html Tue Dec 04 18:59:07 2012 +0100
@@ -0,0 +1,9 @@
+{% load static %}
+<script type="text/javascript" src="{% static 'hashcut/lib/ZeroClipboard.js' %}"></script>
+<script type="text/javascript">
+ $(function() {
+ social({
+ swf: "{% static 'hashcut/lib/ZeroClipboard.swf' %}"
+ });
+ })
+</script>
--- a/src/hashcut/templates/partial/mashup_popin_user.html Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/templates/partial/mashup_popin_user.html Tue Dec 04 18:59:07 2012 +0100
@@ -1,3 +1,4 @@
+{% load i18n %}
<!-- popin user -->
<div class="popin user" id="user">
@@ -7,54 +8,54 @@
<div class="user-screen info">
<h2>{{user.username}}</h2>
<h3>{{user.email}}</h3>
- <a href="{% url mashup_profile branding=branding username=user.username %}" class="nb-hashcut">{{nb_mashup_creator}} Hashcuts</a>
+ <a href="{% url mashup_profile branding=branding username=user.username %}" class="nb-hashcut">{% blocktrans count counter=nb_mashup_creator %}{{nb_mashup_creator}} Hashcut{% plural %}{{nb_mashup_creator}} Hashcuts{% endblocktrans %}</a>
<p>
- <a href="#" class="change-account button">Changer de compte</a>
+ <a href="#" class="change-account button">{% trans 'Switch account' %}</a>
</p>
</div>
{% endif %}
<div class="user-screen signup hide">
- <h2>Créer un compte :</h2>
+ <h2>{% trans 'Create account:' %}</h2>
<form action="{% url mashup_create_user branding=branding %}" class="signup-form" method="post">
{% csrf_token %}
<p>
- <label for="signup-pseudo">Pseudonyme : </label>
+ <label for="signup-pseudo">{% trans 'Login:' %}</label>
<input type="text" id="signup-pseudo" name="signup-pseudo" />
</p>
<p >
- <label for="signup-email">Email : </label>
+ <label for="signup-email">{% trans 'E-mail:' %}</label>
<input type="text" id="signup-email" name="signup-email" />
</p>
<p >
- <label for="signup-password">Mot de passe : </label>
+ <label for="signup-password">{% trans 'Password:' %}</label>
<input type="password" id="signup-password" name="signup-password" />
</p>
<p>
- <label for="signup-password">Confirmer le mot de passe : </label>
+ <label for="signup-password">{% trans 'Confirm password:' %}</label>
<input type="password" id="signup-confirm-password" name="signup-confirm-password" />
</p>
<p>
- <input class="button" type="submit" value="Créer le compte">
+ <input class="button" type="submit" value="{% trans 'Create account' %}">
</p>
</form>
</div>
<div class="user-screen login{% if user.is_authenticated %} hide{% endif %}">
- <h2>Connexion :</h2>
+ <h2>{% trans 'Log In:' %}</h2>
<form action="{% url mashup_identicate_user branding=branding %}" class="login-form" method="post">
{% csrf_token %}
<p>
- <label for="signup-pseudo">Pseudonyme : </label>
+ <label for="signup-pseudo">{% trans 'Login:' %}</label>
<input type="text" id="signup-pseudo" name="signup-pseudo" />
</p>
<p >
- <label for="signup-email">Mot de passe : </label>
+ <label for="signup-email">{% trans 'Password:' %}</label>
<input type="password" id="signup-password" name="signup-password" />
</p>
<p>
- <input class="button" type="submit" value="Se connecter">
+ <input class="button" type="submit" value="{% trans 'Log In' %}">
</p>
<p>
- <a class="button signup-button" href="#">Créer un compte</a>
+ <a class="button signup-button" href="#">{% trans 'Create account' %}</a>
</p>
</form>
</div>
--- a/src/hashcut/urls.py Tue Dec 04 13:31:01 2012 +0100
+++ b/src/hashcut/urls.py Tue Dec 04 18:59:07 2012 +0100
@@ -3,6 +3,7 @@
MashupCreateUser, MashupIdenticateUser
urlpatterns = patterns('',
+ url(r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog', name='jsi18n'),
url(r'^(?P<branding>.*)/edit/$', MashupEdit.as_view(), name="mashup_edit"),
url(r'^(?P<branding>.*)/save/$', 'hashcut.views.save_mashup', name="mashup_save"),
url(r'^(?P<branding>.*)/hashcut/(?P<ldt_id>.*)/$', MashupHashcut.as_view(), name="mashup_hashcut"),