yesno: Always accept English even when localised.

It seems to be a failing of i18n in unix that the translation stops at the
commands and the parameters to them, and ikiwiki is no exception with its
currently untranslated directives. So the little bit that's translated sticks
out like a sore thumb. It also breaks building of wikis if a different locale
happens to be set.

I suppose the best thing to do is either give up on the localisation of this
part completly, or make it recognise English in addition to the locale. I've
tenatively chosen the latter.

(Also accept 1 and 0 as input.)
master
Joey Hess 2009-01-03 12:52:47 -05:00
parent 66ff63c296
commit b0a03fef65
3 changed files with 24 additions and 1 deletions

View File

@ -1658,7 +1658,7 @@ sub gettext {
sub yesno ($) {
my $val=shift;
return (defined $val && lc($val) eq gettext("yes"));
return (defined $val && (lc($val) eq gettext("yes") || lc($val) eq "yes" || $val eq "1"));
}
sub inject {

2
debian/changelog vendored
View File

@ -3,6 +3,8 @@ ikiwiki (3.01) UNRELEASED; urgency=low
* ikiwiki-makerepo: Fix injecting of empty mercurial and bzr repositories.
Closes: #510518
* Fix documentation about git hook to use right name. Closes: #510393
* yesno: Always accept English even when localised.
* yesno: Also accept 1 and 0 as input.
-- Joey Hess <joeyh@debian.org> Fri, 02 Jan 2009 14:12:16 -0500

21
t/yesno.t 100755
View File

@ -0,0 +1,21 @@
#!/usr/bin/perl
use warnings;
use strict;
use Test::More tests => 10;
BEGIN { use_ok("IkiWiki"); }
# note: yesno always accepts English even if localized.
# So no need to bother setting locale to C.
ok(IkiWiki::yesno("yes") == 1);
ok(IkiWiki::yesno("Yes") == 1);
ok(IkiWiki::yesno("YES") == 1);
ok(IkiWiki::yesno("no") == 0);
ok(IkiWiki::yesno("No") == 0);
ok(IkiWiki::yesno("NO") == 0);
ok(IkiWiki::yesno("1") == 1);
ok(IkiWiki::yesno("0") == 0);
ok(IkiWiki::yesno("mooooooooooo") == 0);