2 # .po as a wiki page type
3 package IkiWiki::Plugin::po;
11 hook(type => "getsetup", id => "po", call => \&getsetup);
12 hook(type => "targetpage", id => "po", call => \&targetpage);
13 hook(type => "filter", id => "po", call => \&filter);
14 hook(type => "htmlize", id => "po", call => \&htmlize);
17 sub getsetup () { #{{{
21 rebuild => 1, # format plugin
23 po_supported_languages => {
25 example => { 'fr' => { 'name' => 'Français' },
26 'es' => { 'name' => 'Castellano' },
27 'de' => { 'name' => 'Deutsch' },
34 sub targetpage (@) { #{{{
36 my $page=$params{page};
39 my ($origpage, $lang) = ($page =~ /(.*)[.]([a-z]{2}$)/);
41 if (defined $origpage && defined $lang
42 && (length($origpage) > 0) && (length($lang) > 0)
43 && defined $config{po_supported_languages}{$lang}) {
44 if (! $config{usedirs} || $page eq 'index') {
45 return $origpage.".".$ext.".".$lang;
48 return $origpage."/index.".$ext.".".$lang;
53 # We use filter to convert PO to HTML, since the other plugins might do harm to it.
56 my $content = decode_utf8(encode_utf8($params{content}));
58 if (defined $pagesources{$params{page}} && $pagesources{$params{page}} =~ /\.po$/) {
59 $content = "<pre>" . $content . "</pre>";
65 # We need this to register the .po file extension
66 sub htmlize (@) { #{{{
68 return $params{content};