summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2009-01-03 12:52:47 -0500
committerJoey Hess <joey@gnu.kitenet.net>2009-01-03 12:52:47 -0500
commitb0a03fef656989ccf2552262ab8230f980821861 (patch)
tree6729d0bb9bd3b6bf72c85a5a1dacd166bdf7ff5f
parent66ff63c296b5be28a95b32d849926714470049af (diff)
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.)
-rw-r--r--IkiWiki.pm2
-rw-r--r--debian/changelog2
-rwxr-xr-xt/yesno.t21
3 files changed, 24 insertions, 1 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index e509a7c2f..7eef4c320 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -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 {
diff --git a/debian/changelog b/debian/changelog
index 0f2c75787..f892dc524 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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
diff --git a/t/yesno.t b/t/yesno.t
new file mode 100755
index 000000000..60a8c071d
--- /dev/null
+++ b/t/yesno.t
@@ -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);