Untranslated Pages Snippet

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

Tags:
Created by Jean Couteau on 2009/06/02 18:17
Last modified by Marta Girdea on 2009/06/04 20:36

This wiki is licensed under a Creative Commons license
2.2.1.27354