Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Localize content #50

Closed
wants to merge 3 commits into from

3 participants

@clochix

I've translated the default content into french and updated the loading code to try to get content according to navigator's language, with a default fallback.

@toolness
Owner

Hey @clochix, thanks for this pull request and really sorry for not getting back to you in 8 months. However, we're currently taking a different approach via requirejs' i18n module--see #163--so we won't be using this right now. :/

@toolness toolness closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
View
39 contents/default-content.fr.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<!--
+Bricoler HTML, ce n'est pas compliqué. Lisez les commentaires (comme celui-ci) pour apprendre comment éditer cette page.
+-->
+
+<html>
+
+<!--
+Vous avez peut-être remarqué que certains mots sur cette page (comme par exemple <body> et <h1>) sont placés entre des chevrons et écrits en bleu.
+
+Ces mots sont appelés des éléments, « tag » en anglais. Les éléments permettent de structurer votre page. Par exemple, mettons que vous vouliez créer un paragraphe. Vous allez placer un élément à l'endroit exact où vous voulez que le paragraphe débute, et un autre élément là où vous voulez qu'il s'arrête. La chose la plus importante à retenir est qu'à quelques exceptions près, les éléments vont toujours par paire. Vous devez donc dans la plupart des cas avoir un élément ouvrant et un élément fermant.
+
+L'élément <body> ci-dessous contient le vrai contenu de votre page. Tout ce que les visiteurs verront va être écrit à l'intérieur de cet élément.
+-->
+
+ <body>
+
+<!--
+En dessous de ce commentaire, voici un titre. L'élément <h1> désigne un titre, et tout son contenu est mis en forme comme un titre dans la fenêtre de prévisualisation sur la droite. <h1> ouvre l'élément, </h1> le ferme, le titre est tout ce qui se trouve entre les deux.
+-->
+
+ <h1>Un titre important</h1>
+
+<!--
+Voici un autre titre. <h2> désigne un titre comme <h1>, mais de moindre importance, un sous-titre.
+
+Essayez de modifier les mots à l'intérieur des éléments en bleu <h1> et <h2> autour de ce commentaire, et regardez ce qui se passe dans la fenêtre de droite.
+-->
+
+ <h2>Un titre moins important</h2>
+
+<!--
+L'élément <p> ci-dessous désigne un paragraphe et est l'un des éléments les plus utilisés en HTML. On l'utilise pour écrire… des paragraphes de texte. Essayez donc de modifier le contenu de ce paragraphe, voire d'en ajouter un ou deux. Souvenez-vous juste que les paragraphes doivent commencer par un élément ouvrant <p> et finir par un élément fermant </p>. Essayez de créer un second paragraphe sous le premier en copiant et collant la ligne toute entière.
+-->
+
+ <p>Regardez&nbsp;! J'&eacute;cris du HTML&nbsp;!</p>
+
+</body>
+</html>
View
0  default-content.html → contents/default-content.html
File renamed without changes
View
50 js/main.js
@@ -6,7 +6,7 @@
// [RequireJS plugin]: http://requirejs.org/docs/plugins.html#apiload
(function() {
var errorsLoaded = jQuery.Deferred();
-
+
define("appReady", [], {
load: function(name, req, load, config) {
jQuery.when(errorsLoaded).then(load);
@@ -58,7 +58,7 @@ define("main", function(require) {
if (supportsPushState)
window.history.replaceState({pageToLoad: pageToLoad}, "", location.href);
-
+
var codeMirror = ParsingCodeMirror($("#source")[0], {
mode: "text/html",
theme: "jsbin",
@@ -141,7 +141,7 @@ define("main", function(require) {
return false;
};
});
-
+
window.addEventListener("hashchange", function(event) {
// We don't currently support dynamically changing the URL
// without a full page reload, unfortunately, so just trigger a
@@ -151,7 +151,7 @@ define("main", function(require) {
if (newPageToLoad != pageToLoad)
window.location.reload();
}, false);
-
+
if (supportsPushState)
window.addEventListener("popstate", function(event) {
// We don't currently support dynamically changing the URL
@@ -165,7 +165,7 @@ define("main", function(require) {
if (event.state && event.state.pageToLoad != pageToLoad)
window.location.reload();
}, false);
-
+
function onPostPublish(url, newPageToLoad) {
// If the browser supports history.pushState, set the URL to
// be the new URL to remix the page they just published, so they
@@ -186,7 +186,7 @@ define("main", function(require) {
else
window.location.hash = "#" + pageToLoad;
}
-
+
// TEMP TEMP TEMP TEMP TEMP -- HOOK UP VIA publishUI INSTEAD
$("#confirm-publication").click(function(){
$("#confirm-dialog").hide();
@@ -233,12 +233,44 @@ define("main", function(require) {
else
$(".preview-title").hide();
});
-
+
+
+ var currentLanguage = window.navigator.userLanguage || window.navigator.language,
+ defaultLanguage = 'en';
+ /**
+ * Fetch content from remote URL
+ *
+ * @param {Array} list Array of URLs to try. Will try the first one
+ * then the second if the first doesn't exists…
+ * @param {Function} onSuccess function to call on success
+ */
+ function getContent(list, onSuccess) {
+ if (list.length > 0) {
+ jQuery.ajax({
+ url: list[0] + '.html',
+ success: onSuccess,
+ dataType: 'text',
+ statusCode: {
+ 404: function () {
+ getContent(list.slice(1), onSuccess);
+ }
+ }
+ });
+ }
+ }
+ function getContentList(page) {
+
+ return [
+ 'contents/' + page + '.' + currentLanguage,
+ 'contents/' + page + '.' + defaultLanguage,
+ 'contents/' + page
+ ];
+ }
if (!pageToLoad) {
- jQuery.get("default-content.html", function(html) {
+ getContent(getContentList('default-content'), function (html) {
codeMirror.setValue(html.trim());
doneLoading();
- }, "text");
+ });
} else
publishUI.loadCode(pageToLoad, doneLoading);
Something went wrong with that request. Please try again.