Page MenuHomeMusing Studio

No OneTemporary

diff --git a/pages/404-general.tmpl b/pages/404-general.tmpl
index dfc4653..ed8b356 100644
--- a/pages/404-general.tmpl
+++ b/pages/404-general.tmpl
@@ -1,7 +1,7 @@
-{{define "head"}}<title>Page not found &mdash; {{.SiteName}}</title>{{end}}
+{{define "head"}}<title>Page non trouvée &mdash; {{.SiteName}}</title>{{end}}
{{define "content"}}
<div class="error-page">
- <p class="msg">This page is missing.</p>
- <p>Are you sure it was ever here?</p>
+ <p class="msg">Cette page est manquante.</p>
+ <p>Vous êtes-sûr qu'elle ai jamais existé ?</p>
</div>
{{end}}
diff --git a/pages/404.tmpl b/pages/404.tmpl
index b103e27..6f42750 100644
--- a/pages/404.tmpl
+++ b/pages/404.tmpl
@@ -1,10 +1,10 @@
-{{define "head"}}<title>Post not found &mdash; {{.SiteName}}</title>{{end}}
+{{define "head"}}<title>Publication non trouvée &mdash; {{.SiteName}}</title>{{end}}
{{define "content"}}
<div class="error-page" style="max-width:30em">
- <p class="msg">Post not found.</p>
+ <p class="msg">Publication non trouvée.</p>
{{if and (not .SingleUser) .OpenRegistration}}
- <p class="commentary" style="margin-top:2.5em">Why not share a thought of your own?</p>
- <p><a href="/">Start a blog</a> and spread your ideas on <strong>{{.SiteName}}</strong>, a simple{{if .Federation}}, federated{{end}} blogging community.</p>
+ <p class="commentary" style="margin-top:2.5em">Pourquoi ne pas partager vos propres mots ?</p>
+ <p><a href="/">Créez un blog</a> et partagez vos idées sur <strong>{{.SiteName}}</strong></p>
{{end}}
</div>
{{end}}
diff --git a/pages/410.tmpl b/pages/410.tmpl
index 5dfd4a4..95aa250 100644
--- a/pages/410.tmpl
+++ b/pages/410.tmpl
@@ -1,7 +1,7 @@
-{{define "head"}}<title>Unpublished &mdash; {{.SiteName}}</title>{{end}}
+{{define "head"}}<title>Dépublié &mdash; {{.SiteName}}</title>{{end}}
{{define "content"}}
<div class="error-page">
- <p class="msg">{{if .Content}}{{.Content}}{{else}}Post was unpublished by the author.{{end}}</p>
- <p class="commentary">It might be back some day.</p>
+ <p class="msg">{{if .Content}}{{.Content}}{{else}}La publication a été dépubliée par son auteur.{{end}}</p>
+ <p class="commentary">Elle pourrait être de retour un jour.</p>
</div>
{{end}}
diff --git a/pages/500.tmpl b/pages/500.tmpl
index e148fb5..593c0bc 100644
--- a/pages/500.tmpl
+++ b/pages/500.tmpl
@@ -1,10 +1,10 @@
-{{define "head"}}<title>Server error &mdash; {{.SiteName}}</title>{{end}}
+{{define "head"}}<title>Erreur serveur &mdash; {{.SiteName}}</title>{{end}}
{{define "content"}}
<div class="content-container tight">
- <h1>Server error &#x1F635;</h1>
- <p>Please <a href="https://github.com/writefreely/writefreely/issues/new">contact the human authors</a> of this software and remind them of their many shortcomings.</p>
- <p>Be gentle, though. They are fragile mortal beings.</p>
- <p style="margin-top:2em">Also, unlike the AI that will soon replace them, you will need to include an error log from the server in your report. (Utterly <em>primitive</em>, we know.)</p>
+ <h1>Erreur serveur &#x1F635;</h1>
+ <p>S'il vous plaît <a href="https://github.com/writefreely/writefreely/issues/new">contactez les auteurs</a> de ce logiciel et rappelez-leur leurs nombreux défauts.</p>
+ <p>Restez courtois néanmoins, ce sont de fragiles êtres vivants.</p>
+ <p style="margin-top:2em">De plus, contrairement à l'IA qui les remplacera bientôt, vous devrez inclure un journal des erreurs du serveur dans votre rapport. (Très <em>primitif</em>, on sait.)</p>
<p>&ndash; {{.SiteName}} &#x1F916;</p>
</div>
{{end}}
diff --git a/pages/503.tmpl b/pages/503.tmpl
index 70c6c78..0ee33ed 100644
--- a/pages/503.tmpl
+++ b/pages/503.tmpl
@@ -1,7 +1,7 @@
-{{define "head"}}<title>Temporarily Unavailable &mdash; {{.SiteMetaName}}</title>{{end}}
+{{define "head"}}<title>Indisponible temporairement &mdash; {{.SiteMetaName}}</title>{{end}}
{{define "content"}}
<div class="error-page">
- <p class="msg">The words aren't coming to me. &#x1F5C5;</p>
- <p>We couldn't serve this page due to high server load. This should only be temporary.</p>
+ <p class="msg">Je ne trouve pas les mots. &#x1F5C5;</p>
+ <p>Nous n'avons pas pu afficher cette page en raison de la charge élevée du serveur. Cela ne devrait être que temporaire.</p>
</div>
{{end}}
diff --git a/pages/about.tmpl b/pages/about.tmpl
index 7c502dc..649a291 100644
--- a/pages/about.tmpl
+++ b/pages/about.tmpl
@@ -1,29 +1,29 @@
{{define "head"}}<title>{{.ContentTitle}} &mdash; {{.SiteName}}</title>
<meta name="description" content="{{.PlainContent}}">
{{end}}
{{define "content"}}
<div class="content-container snug">
<h1>{{.ContentTitle}}</h1>
{{.Content}}
{{if .PublicStats}}
<hr style="margin:1.5em 0;" />
- <p><em>{{.SiteName}}</em> is home to <strong>{{largeNumFmt .AboutStats.NumPosts}}</strong> {{pluralize "article" "articles" .AboutStats.NumPosts}} across <strong>{{largeNumFmt .AboutStats.NumBlogs}}</strong> {{pluralize "blog" "blogs" .AboutStats.NumBlogs}}.</p>
+ <p><em>{{.SiteName}}</em> héberge <strong>{{largeNumFmt .AboutStats.NumPosts}}</strong> {{pluralize "article" "articles" .AboutStats.NumPosts}} parmis <strong>{{largeNumFmt .AboutStats.NumBlogs}}</strong> {{pluralize "blog" "blogs" .AboutStats.NumBlogs}}.</p>
{{end}}
{{if not .WFModesty}}
- <h2 style="margin-top:2em">About WriteFreely</h2>
- <p><a href="https://writefreely.org">WriteFreely</a> is a self-hosted, decentralized blogging platform for publishing beautiful, simple blogs.</p>
- <p>It lets you publish a single blog, or host a community of writers who can create multiple blogs under one account. You can also enable federation, which allows people in the fediverse to follow your blog, bookmark your posts, and share them with others.</p>
+ <h2 style="margin-top:2em">A propos de WriteFreely</h2>
+ <p><a href="https://writefreely.org">WriteFreely</a> est une plate-forme de blogs décentralisée et auto-hébergée pour publier de beaux et simples blogs.</p>
+ <p>Il vous permet de publier un seul blog ou d'héberger une communauté d'écrivains qui peuvent créer plusieurs blogs sous un seul compte. Vous pouvez également activer la fédération, qui permet aux personnes du fediverse de suivre votre blog, d'ajouter vos articles à leurs favoris et de les partager avec d'autres.</p>
<div class="clearfix blurbs" style="font-size: 1.3em;text-align:center">
<div class="half big">
- <p><a href="https://writefreely.org/start">Start an instance</a></p>
+ <p><a href="https://writefreely.org/start">Démarrer une instance</a></p>
</div>
<div class="half big">
<p><a href="https://writefreely.org">WriteFreely</a></p>
</div>
</div>
{{end}}
</div>
{{end}}
diff --git a/pages/landing.tmpl b/pages/landing.tmpl
index 2131b40..15e04ce 100644
--- a/pages/landing.tmpl
+++ b/pages/landing.tmpl
@@ -1,203 +1,202 @@
{{define "head"}}
<title>{{.SiteName}}</title>
<style type="text/css">
h2 {
font-weight: normal;
}
#pricing.content-container div.form-container #payment-form {
display: block !important;
}
#pricing #signup-form table {
max-width: inherit !important;
width: 100%;
}
#pricing #payment-form table {
margin-top: 0 !important;
max-width: inherit !important;
width: 100%;
}
tr.subscription {
border-spacing: 0;
}
#pricing.content-container tr.subscription button {
margin-top: 0 !important;
margin-bottom: 0 !important;
width: 100%;
}
#pricing tr.subscription td {
padding: 0 0.5em;
}
#pricing table.billing > tbody > tr > td:first-child {
vertical-align: middle !important;
}
.billing-section {
display: none;
}
.billing-section.bill-me {
display: table-row;
}
#btn-create {
color: white !important;
}
#total-price {
padding-left: 0.5em;
}
#alias-site.demo {
color: #999;
}
#alias-site {
text-align: left;
margin: 0.5em 0;
}
form dd {
margin: 0;
}
.banner-container {
text-align: left;
}
.banner-container h1 {
margin-top: 0;
max-width: 8em;
}
.or {
margin-bottom: 2.5em !important;
}
</style>
{{end}}
{{define "content"}}
<div id="pricing" class="content-container wide-form">
<div class="row">
<div class="banner-container">
{{.Banner}}
<p><a href="{{if .Content}}#more{{else}}/about{{end}}">Learn more...</a></p>
</div>
<div{{if not .OpenRegistration}} style="padding: 2em 0;"{{end}}>
{{ if .OpenRegistration }}
{{template "oauth-buttons" .}}
{{if not .DisablePasswordAuth}}
{{if .Flashes}}<ul class="errors">
{{range .Flashes}}<li class="urgent">{{.}}</li>{{end}}
</ul>{{end}}
<div id="billing">
<form action="/auth/signup" method="POST" id="signup-form" onsubmit="return signup()">
<dl class="billing">
<label>
- <dt>Username</dt>
+ <dt>Nom d'utilisateur</dt>
<dd>
<input type="text" id="alias" name="alias" style="width: 100%; box-sizing: border-box;" tabindex="1" autofocus {{if .ForcedLanding}}disabled{{end}} />
- {{if .Federation}}<p id="alias-site" class="demo">@<strong>your-username</strong>@{{.FriendlyHost}}</p>{{else}}<p id="alias-site" class="demo">{{.FriendlyHost}}/<strong>your-username</strong></p>{{end}}
+ {{if .Federation}}<p id="alias-site" class="demo">@<strong>votre-nom</strong>@{{.FriendlyHost}}</p>{{else}}<p id="alias-site" class="demo">{{.FriendlyHost}}/<strong>votre-nom</strong></p>{{end}}
</dd>
</label>
<label>
- <dt>Password</dt>
+ <dt>Mot de passe</dt>
<dd><input type="password" id="password" name="pass" autocomplete="new-password" placeholder="" tabindex="2" style="width: 100%; box-sizing: border-box;" {{if .ForcedLanding}}disabled{{end}} /></dd>
</label>
<label>
- <dt>Email (optional)</dt>
- <dd><input type="email" name="email" id="email" style="letter-spacing: 1px; width: 100%; box-sizing: border-box;" placeholder="me@example.com" tabindex="3" {{if .ForcedLanding}}disabled{{end}} /></dd>
+ <dt>Email (optionnel)</dt>
+ <dd><input type="email" name="email" id="email" style="letter-spacing: 1px; width: 100%; box-sizing: border-box;" placeholder="moi@bdx.town" tabindex="3" {{if .ForcedLanding}}disabled{{end}} /></dd>
</label>
<dt>
- <button id="btn-create" type="submit" style="margin-top: 0" {{if .ForcedLanding}}disabled{{end}}>Create blog</button>
+ <button id="btn-create" type="submit" style="margin-top: 0" {{if .ForcedLanding}}disabled{{end}}>Créer mon blog</button>
</dt>
</dl>
</form>
</div>
{{end}}
{{ else }}
- <p style="font-size: 1.3em; margin: 1rem 0;">Registration is currently closed.</p>
- <p>You can always sign up on <a href="https://writefreely.org/instances">another instance</a>.</p>
+ <p style="font-size: 1.3em; margin: 1rem 0;">Les inscriptions sont actuellement fermées.</p>
{{ end }}
</div>
</div>
{{if .Content}}
<a name="more"></a><hr style="margin: 1em auto 3em;" />
{{end}}
</div>
{{ if .Content }}
<div class="content-container snug">
{{.Content}}
</div>
{{ end }}
<script type="text/javascript" src="/js/h.js"></script>
<script type="text/javascript">
function signup() {
var $pass = document.getElementById('password');
// Validate input
if (!aliasOK) {
var $a = $alias;
$a.el.className = 'error';
$a.el.focus();
$a.el.scrollIntoView();
return false;
}
if ($pass.value == "") {
var $a = $pass;
$a.className = 'error';
$a.focus();
$a.scrollIntoView();
return false;
}
var $btn = document.getElementById('btn-create');
$btn.disabled = true;
$btn.value = 'Creating...';
return true;
}
var $alias = H.getEl('alias');
var $aliasSite = document.getElementById('alias-site');
var aliasOK = true;
var typingTimer;
var doneTypingInterval = 750;
var doneTyping = function() {
// Check on username
var alias = $alias.el.value;
if (alias != "") {
var params = {
username: alias
};
var http = new XMLHttpRequest();
http.open("POST", '/api/alias', true);
// Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/json");
http.onreadystatechange = function() {
if (http.readyState == 4) {
data = JSON.parse(http.responseText);
if (http.status == 200) {
aliasOK = true;
$alias.removeClass('error');
$aliasSite.className = $aliasSite.className.replace(/(?:^|\s)demo(?!\S)/g, '');
$aliasSite.className = $aliasSite.className.replace(/(?:^|\s)error(?!\S)/g, '');
$aliasSite.innerHTML = '{{ if .Federation }}@<strong>' + data.data + '</strong>@{{.FriendlyHost}}{{ else }}{{.FriendlyHost}}/<strong>' + data.data + '</strong>/{{ end }}';
} else {
aliasOK = false;
$alias.setClass('error');
$aliasSite.className = 'error';
$aliasSite.textContent = data.error_msg;
}
}
}
http.send(JSON.stringify(params));
} else {
$aliasSite.className += ' demo';
$aliasSite.innerHTML = '{{ if .Federation }}@<strong>your-username</strong>@{{.FriendlyHost}}{{ else }}{{.FriendlyHost}}/<strong>your-username</strong>/{{ end }}';
}
};
$alias.on('keyup input', function() {
clearTimeout(typingTimer);
typingTimer = setTimeout(doneTyping, doneTypingInterval);
});
</script>
{{end}}
diff --git a/pages/login.tmpl b/pages/login.tmpl
index f0a54eb..6fac4fe 100644
--- a/pages/login.tmpl
+++ b/pages/login.tmpl
@@ -1,36 +1,36 @@
-{{define "head"}}<title>Log in &mdash; {{.SiteName}}</title>
+{{define "head"}}<title>Se connecter &mdash; {{.SiteName}}</title>
<meta name="description" content="Log in to {{.SiteName}}.">
<meta itemprop="description" content="Log in to {{.SiteName}}.">
<style>
input{margin-bottom:0.5em;}
</style>
{{end}}
{{define "content"}}
<div class="tight content-container">
- <h1>Log in to {{.SiteName}}</h1>
+ <h1>Se connecter à {{.SiteName}}</h1>
{{if .Flashes}}<ul class="errors">
{{range .Flashes}}<li class="urgent">{{.}}</li>{{end}}
</ul>{{end}}
{{template "oauth-buttons" .}}
{{if not .DisablePasswordAuth}}
<form action="/auth/login" method="post" style="text-align: center;margin-top:1em;" onsubmit="disableSubmit()">
- <input type="text" name="alias" placeholder="Username" value="{{.LoginUsername}}" {{if not .LoginUsername}}autofocus{{end}} /><br />
- <input type="password" name="pass" placeholder="Password" {{if .LoginUsername}}autofocus{{end}} /><br />
+ <input type="text" name="alias" placeholder="Nom d'utilisateur" value="{{.LoginUsername}}" {{if not .LoginUsername}}autofocus{{end}} /><br />
+ <input type="password" name="pass" placeholder="Mot de passe" {{if .LoginUsername}}autofocus{{end}} /><br />
{{if .To}}<input type="hidden" name="to" value="{{.To}}" />{{end}}
- <input type="submit" id="btn-login" value="Login" />
+ <input type="submit" id="btn-login" value="Connexion" />
</form>
- {{if and (not .SingleUser) .OpenRegistration}}<p style="text-align:center;font-size:0.9em;margin:3em auto;max-width:26em;">{{if .Message}}{{.Message}}{{else}}<em>No account yet?</em> <a href="{{.SignupPath}}">Sign up</a> to start a blog.{{end}}</p>{{end}}
+ {{if and (not .SingleUser) .OpenRegistration}}<p style="text-align:center;font-size:0.9em;margin:3em auto;max-width:26em;">{{if .Message}}{{.Message}}{{else}}<em>Pas encore inscrit ?</em> <a href="{{.SignupPath}}">Inscrivez-vous</a> pour créer un blog.{{end}}</p>{{end}}
<script type="text/javascript">
function disableSubmit() {
var $btn = document.getElementById("btn-login");
$btn.value = "Logging in...";
$btn.disabled = true;
}
</script>
{{end}}
{{end}}
diff --git a/pages/privacy.tmpl b/pages/privacy.tmpl
index 578472a..d86c49e 100644
--- a/pages/privacy.tmpl
+++ b/pages/privacy.tmpl
@@ -1,10 +1,10 @@
{{define "head"}}<title>{{.ContentTitle}} &mdash; {{.SiteName}}</title>
<meta name="description" content="{{.PlainContent}}">
{{end}}
{{define "content"}}<div class="content-container snug">
<h1>{{.ContentTitle}}</h1>
- <p style="font-style:italic">Last updated {{.Updated}}</p>
+ <p style="font-style:italic">Mis à jour le {{.Updated}}</p>
{{.Content}}
</div>
{{end}}
diff --git a/pages/signup.tmpl b/pages/signup.tmpl
index b1bb50d..1099d3c 100644
--- a/pages/signup.tmpl
+++ b/pages/signup.tmpl
@@ -1,180 +1,180 @@
{{define "head"}}
<title>Sign up &mdash; {{.SiteName}}</title>
<style type="text/css">
h2 {
font-weight: normal;
}
#pricing.content-container div.form-container #payment-form {
display: block !important;
}
#pricing #signup-form table {
max-width: inherit !important;
width: 100%;
}
#pricing #payment-form table {
margin-top: 0 !important;
max-width: inherit !important;
width: 100%;
}
tr.subscription {
border-spacing: 0;
}
#pricing.content-container tr.subscription button {
margin-top: 0 !important;
margin-bottom: 0 !important;
width: 100%;
}
#pricing tr.subscription td {
padding: 0 0.5em;
}
#pricing table.billing > tbody > tr > td:first-child {
vertical-align: middle !important;
}
.billing-section {
display: none;
}
.billing-section.bill-me {
display: table-row;
}
#btn-create {
color: white !important;
}
#total-price {
padding-left: 0.5em;
}
#alias-site.demo {
color: #999;
}
#alias-site {
text-align: left;
margin: 0.5em 0;
}
form dd {
margin: 0;
}
</style>
{{end}}
{{define "content"}}
<div id="pricing" class="content-container wide-form">
<div class="row">
<div style="margin: 0 auto; max-width: 25em;">
- <h1>Sign up</h1>
+ <h1>Inscription</h1>
{{ if .Error }}
<p style="font-style: italic">{{.Error}}</p>
{{ else }}
{{if .Flashes}}<ul class="errors">
{{range .Flashes}}<li class="urgent">{{.}}</li>{{end}}
</ul>{{end}}
<div id="billing">
{{template "oauth-buttons" .}}
{{if not .DisablePasswordAuth}}
<form action="/auth/signup" method="POST" id="signup-form" onsubmit="return signup()">
<input type="hidden" name="invite_code" value="{{.Invite}}" />
<dl class="billing">
<label>
- <dt>Username</dt>
+ <dt>Nom d'utilisateur</dt>
<dd>
<input type="text" id="alias" name="alias" style="width: 100%; box-sizing: border-box;" tabindex="1" autofocus />
- {{if .Federation}}<p id="alias-site" class="demo">@<strong>your-username</strong>@{{.FriendlyHost}}</p>{{else}}<p id="alias-site" class="demo">{{.FriendlyHost}}/<strong>your-username</strong></p>{{end}}
+ {{if .Federation}}<p id="alias-site" class="demo">@<strong>votre-nom</strong>@{{.FriendlyHost}}</p>{{else}}<p id="alias-site" class="demo">{{.FriendlyHost}}/<strong>votre-nom</strong></p>{{end}}
</dd>
</label>
<label>
- <dt>Password</dt>
+ <dt>Mot de passe</dt>
<dd><input type="password" id="password" name="pass" autocomplete="new-password" placeholder="" tabindex="2" style="width: 100%; box-sizing: border-box;" /></dd>
</label>
<label>
- <dt>Email (optional)</dt>
- <dd><input type="email" name="email" id="email" style="letter-spacing: 1px; width: 100%; box-sizing: border-box;" placeholder="me@example.com" tabindex="3" /></dd>
+ <dt>Email (optionnel)</dt>
+ <dd><input type="email" name="email" id="email" style="letter-spacing: 1px; width: 100%; box-sizing: border-box;" placeholder="moi@bdx.town" tabindex="3" /></dd>
</label>
<dt>
- <button id="btn-create" type="submit" style="margin-top: 0">Create blog</button>
+ <button id="btn-create" type="submit" style="margin-top: 0">Créer mon blog</button>
</dt>
</dl>
</form>
{{end}}
</div>
{{ end }}
</div>
</div>
<script type="text/javascript" src="/js/h.js"></script>
<script type="text/javascript">
function signup() {
var $pass = document.getElementById('password');
// Validate input
if (!aliasOK) {
var $a = $alias;
$a.el.className = 'error';
$a.el.focus();
$a.el.scrollIntoView();
return false;
}
if ($pass.value == "") {
var $a = $pass;
$a.className = 'error';
$a.focus();
$a.scrollIntoView();
return false;
}
var $btn = document.getElementById('btn-create');
$btn.disabled = true;
$btn.value = 'Creating...';
return true;
}
var $alias = H.getEl('alias');
var $aliasSite = document.getElementById('alias-site');
var aliasOK = true;
var typingTimer;
var doneTypingInterval = 750;
var doneTyping = function() {
// Check on username
var alias = $alias.el.value;
if (alias != "") {
var params = {
username: alias
};
var http = new XMLHttpRequest();
http.open("POST", '/api/alias', true);
// Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/json");
http.onreadystatechange = function() {
if (http.readyState == 4) {
data = JSON.parse(http.responseText);
if (http.status == 200) {
aliasOK = true;
$alias.removeClass('error');
$aliasSite.className = $aliasSite.className.replace(/(?:^|\s)demo(?!\S)/g, '');
$aliasSite.className = $aliasSite.className.replace(/(?:^|\s)error(?!\S)/g, '');
$aliasSite.innerHTML = '{{ if .Federation }}@<strong>' + data.data + '</strong>@{{.FriendlyHost}}{{ else }}{{.FriendlyHost}}/<strong>' + data.data + '</strong>/{{ end }}';
} else {
aliasOK = false;
$alias.setClass('error');
$aliasSite.className = 'error';
$aliasSite.textContent = data.error_msg;
}
}
}
http.send(JSON.stringify(params));
} else {
$aliasSite.className += ' demo';
$aliasSite.innerHTML = '{{ if .Federation }}@<strong>your-username</strong>@{{.FriendlyHost}}{{ else }}{{.FriendlyHost}}/<strong>your-username</strong>/{{ end }}';
}
};
$alias.on('keyup input', function() {
clearTimeout(typingTimer);
typingTimer = setTimeout(doneTyping, doneTypingInterval);
});
</script>
{{end}}

File Metadata

Mime Type
text/x-diff
Expires
Sun, May 17, 12:30 AM (10 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3732123

Event Timeline