From b0a03fef656989ccf2552262ab8230f980821861 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 3 Jan 2009 12:52:47 -0500 Subject: [PATCH] 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.) --- IkiWiki.pm | 2 +- debian/changelog | 2 ++ t/yesno.t | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100755 t/yesno.t 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 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);