]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
* Fix encoding issue with use of Locale::Gettext. Seems that the OO
[ikiwiki.git] / IkiWiki.pm
index faca32835b095f7c428b3f74d0aabddc25b59d1c..43ef67e8c9ce6ea4824977528a602533962cd47c 100644 (file)
@@ -82,7 +82,7 @@ sub checkconfig () { #{{{
                eval q{use POSIX};
                error($@) if $@;
                $ENV{LANG} = $config{locale}
-                       if POSIX::setlocale(&POSIX::LC_TIME, $config{locale});
+                       if POSIX::setlocale(&POSIX::LC_ALL, $config{locale});
        }
 
        if ($config{w3mmode}) {
@@ -129,6 +129,8 @@ sub loadplugins () { #{{{
 sub loadplugin ($) { #{{{
        my $plugin=shift;
 
+       return if grep { $_ eq $plugin} @{$config{disable_plugins}};
+
        my $mod="IkiWiki::Plugin::".possibly_foolish_untaint($plugin);
        eval qq{use $mod};
        if ($@) {
@@ -317,6 +319,10 @@ sub bestlink ($$) { #{{{
                }
        } while $cwd=~s!/?[^/]+$!!;
 
+       if (length $config{userdir} && exists $links{"$config{userdir}/".lc($link)}) {
+               return "$config{userdir}/".lc($link);
+       }
+
        #print STDERR "warning: page $page, broken link: $link\n";
        return "";
 } #}}}
@@ -511,6 +517,10 @@ sub preprocess ($$$;$) { #{{{
                        if ($preprocessing{$page}++ > 3) {
                                # Avoid loops of preprocessed pages preprocessing
                                # other pages that preprocess them, etc.
+                               #translators: The first parameter is a
+                               #translators: preprocessor directive name,
+                               #translators: the second a page name, the
+                               #translators: third a number.
                                return "[[".sprintf(gettext("%s preprocessing loop detected on %s at depth %i"),
                                        $command, $page, $preprocessing{$page}).
                                "]]";
@@ -806,13 +816,15 @@ sub file_pruned ($$) { #{{{
        $file =~ m/$regexp/;
 } #}}}
 
+my $gettext_obj;
 sub gettext { #{{{
        # Only use gettext in the rare cases it's needed.
-       # This overrides future calls of this function.
        if (exists $ENV{LANG} || exists $ENV{LC_ALL} || exists $ENV{LC_MESSAGES}) {
-               eval q{use Locale::gettext};
-               textdomain('ikiwiki');
-               return Locale::gettext::gettext(shift);
+               if (! $gettext_obj) {
+                       eval q{use Locale::gettext ''};
+                       $gettext_obj=Locale::gettext->domain('ikiwiki');
+               }
+               return $gettext_obj->get(shift);
        }
        else {
                return shift;