summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/po.pm17
-rw-r--r--doc/ikiwiki/pagespec/po.mdwn5
2 files changed, 19 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index 4e6eff94f..903a9500f 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -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");
}
}
diff --git a/doc/ikiwiki/pagespec/po.mdwn b/doc/ikiwiki/pagespec/po.mdwn
index f8b398575..f9956404c 100644
--- a/doc/ikiwiki/pagespec/po.mdwn
+++ b/doc/ikiwiki/pagespec/po.mdwn
@@ -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`.