diff --git a/dist/modeles/article_traductions.html b/dist/modeles/article_traductions.html
index 124c842b49a26ae780b80ccfc0752de8020ec25f..cd3d5a6267aa1308c9dce5844768bc8f877605df 100644
--- a/dist/modeles/article_traductions.html
+++ b/dist/modeles/article_traductions.html
@@ -11,14 +11,15 @@
 <div class="traductions">
 <p><:trad_article_traduction:></p>
 <ul>
-	<BOUCLE_traductions(ARTICLES) {traduction} {par lang}>
+	<BOUCLE_traductions(ARTICLES) {traduction} {par lang}>[
+	(#TOTAL_BOUCLE|>{1}|?{' '})
 	<li lang="#LANG" xml:lang="#LANG" dir="#LANG_DIR"[ class="(#EXPOSE)"]>
 		&#91;[(#EXPOSE{
 		<span>,
 		<a href="#URL_ARTICLE" rel="alternate" hreflang="#LANG"[ title="(#TITRE|texte_backend)"]>}
 		)][(#LANG|traduire_nom_langue)]#EXPOSE{</span>,</a>}&#93;
 	</li>
-	</BOUCLE_traductions>
+	]</BOUCLE_traductions>
 </ul>
 </div>
 </B_traductions>
diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php
index 5c39739f459f2ef24d7a789d43268655b15f3f47..fe47e1fc898109c1306c32bb0b16034ed4e50805 100644
--- a/ecrire/public/criteres.php
+++ b/ecrire/public/criteres.php
@@ -185,6 +185,7 @@ function critere_traduction_dist($idb, &$boucles, $crit) {
 }
 
 // {origine_traduction}
+//   (id_trad>0 AND id_article=id_trad) OR (id_trad=0)
 // http://www.spip.net/@origine_traduction
 // http://doc.spip.org/@critere_origine_traduction_dist
 function critere_origine_traduction_dist($idb, &$boucles, $crit) {
@@ -192,11 +193,14 @@ function critere_origine_traduction_dist($idb, &$boucles, $crit) {
 	$prim = $boucle->primary;
 	$table = $boucle->id_table;
 
-	$c= array("'='", "'$table." . "id_trad'", "'$table.$prim'");
+	$c =
+	array("'OR'",
+		array("'='", "'$table." . "id_trad'", "'$table.$prim'"),
+		array("'='", "'$table.id_trad'", "'0'")
+	);
 	$boucle->where[]= ($crit->not ? array("'NOT'", $c) : $c);
 }
 
-
 // {meme_parent}
 // http://www.spip.net/@meme_parent
 // http://doc.spip.org/@critere_meme_parent_dist