po: added an optional target percentage to needstranslation
authorintrigeri <intrigeri@boum.org>
Sun, 11 Jul 2010 09:58:09 +0000 (11:58 +0200)
committerJoey Hess <joey@kitenet.net>
Mon, 12 Jul 2010 19:40:39 +0000 (15:40 -0400)
(cherry picked from commit 98cc9460ac67fee606437712882cfa1e5d259729)

IkiWiki/Plugin/po.pm
doc/ikiwiki/pagespec/po.mdwn

index 4e6eff94fa09b4cccd42430e8ac9595e8dbd48cc..903a9500f5dc8482b52860ff6b212dbb296d641b 100644 (file)
@@ -1249,16 +1249,29 @@ sub match_currentlang ($$;@) {
 
 sub match_needstranslation ($$;@) {
        my $page=shift;
+       my $wanted=shift;
+
+       if (defined $wanted && $wanted ne "") {
+               if ($wanted !~ /^\d+$/) {
+                       return IkiWiki::FailReason->new("parameter is not an integer");
+               }
+               elsif ($wanted > 100) {
+                       return IkiWiki::FailReason->new("parameter is greater than 100");
+                }
+        }
+        else {
+               $wanted=100;
+        }
 
        my $percenttranslated=IkiWiki::Plugin::po::percenttranslated($page);
        if ($percenttranslated eq 'N/A') {
                return IkiWiki::FailReason->new("file is not a translatable page");
        }
-       elsif ($percenttranslated < 100) {
+       elsif ($percenttranslated < $wanted) {
                return IkiWiki::SuccessReason->new("file has $percenttranslated translated");
         }
        else {
-               return IkiWiki::FailReason->new("file is fully translated");
+               return IkiWiki::FailReason->new("file is translated enough");
        }
 }
 
index f8b398575bd56ec952999e97ab3c47435082a225..f9956404ccf35e22510020eeea2aebf3f0be6a64 100644 (file)
@@ -12,7 +12,10 @@ wiki:
 * "`currentlang()`" - tests whether a page is written in the same
   language as the current page.
 * "`needstranslation()`" - tests whether a page needs translation
-  work. Only slave pages match this PageSpec.
+  work. Only slave pages match this PageSpec. A minimum target
+  translation percentage can optionally be passed as an integer
+  parameter: "`needstranslation(50)`" matches only pages less than 50%
+  translated.
 
 Note that every non-po page is considered to be written in
 `po_master_language`, as specified in `ikiwiki.setup`.