Untranslated Pages Snippet
This snippet put alone on a page, displays all the pages of the Wiki (except those from the XWiki, Scheduler and Panels Spaces).
It is very useful when you work on a multilingual wiki and you want to keep a default language up-to-date (people might add pages in their language and not translate them in the default language).
##GET THE BASE LANGUAGE YOU WANT TO CHECK
#set($baselanguage=$request.get("baselanguage"))
##FORM TO SET THE BASE LANGUAGE
<FORM method=GET action=$doc.getURL()>
Select base language : <SELECT name="baselanguage" onchange='this.form.submit()'>
<OPTION VALUE=></OPTION>
<OPTION VALUE="en">English</OPTION>
<OPTION VALUE="fr">Français</OPTION>
<OPTION VALUE="es">Castellano</OPTION>
</SELECT>
<INPUT type=submit value ="Select">
</FORM>
##GET ALL THE DOCUMENTS
#set($documents=$xwiki.searchDocuments(""))
##RUN THROUGH THE DOCUMENTS
#foreach($item in $documents)
##REMOVE ALL DOCUMENTS THAT ARE IN XWiki, Scheduler OR Panels SPACE
#if(($xwiki.getDocument($item).getSpace()!="XWiki")&&($xwiki.getDocument($item).getSpace()!="Scheduler")&&($xwiki.getDocument($item).getSpace()!="Panels"))
#set($defaultlanguage=$xwiki.getDocument($item).getDefaultLanguage())
##LOOK ONLY THROUGH THE DOCUMENTS THAT DO NOT HAVE THE DEFAULT LANGUAGE EQUALS TO THE CHECKED LANGUAGE
#if($defaultlanguage!=$baselanguage)
#set($translations=$xwiki.getDocument($item).getTranslationList())
#set($untranslated="false")
#foreach($language in $translations)
#if($language==$baselanguage)
#set($untranslated="true")
#end
#end
#if($untranslated=="false")
##IF THE LANGUAGE IS NOT INTO THE AVAILABLE TRANSLATIONS AND IS NOT THE DEFAULT LANGUAGE, DISPLAY A LINK TO THE DOCUMENT
* [$item]
#end
#end
#end
#end
A more efficient version using nested queries, might not work on all databases:
<form method="get" action="$doc.getURL()">
<fieldset>
<select name="baseLanguage" onchange='this.form.submit()'>
<option value="">Select language to check</option>
<option value="en">English</option>
<option value="fr">Français</option>
<option value="es">Castellano</option>
</select>
<input type=submit value="Select"/>
</fieldset>
</form>
#set($baseLanguage = "$!request.get('baseLanguage')")
#if($baseLanguage != '')
#foreach($d in $xwiki.searchDocuments("where doc.translation = 0 and doc.defaultLanguage <> '$baseLanguage' and doc.fullName not in (select d2.fullName from XWikiDocument d2 where d2.translation = 1 and d2.language = '$baseLanguage') and doc.space not in ('XWiki', 'Scheduler', 'Panels', 'Blog')"))
* [$d]
#end
#end