web commit by NicolasLimare: patch for the meta plugin : [[meta lang="ja"]]
[ikiwiki.git] / doc / todo / language_definition_for_the_meta_plugin.mdwn
1 Here is a patch for the [[plugins/meta]] plugin. It adds the possibility to define the language 
2 used for a page, with
3     [[meta lang="ja"]]
4
5 It doesn't insert the langage information in the xhtml meta elements, but defines a LANG
6 variable to use in the templates, for example with
7
8     <html xmlns="http://www.w3.org/1999/xhtml"
9           lang="<TMPL_IF NAME="LANG"><TMPL_VAR LANG><TMPL_ELSE>fr</TMPL_IF>"
10           xml:lang="<TMPL_IF NAME="LANG"><TMPL_VAR LANG><TMPL_ELSE>fr</TMPL_IF>">
11
12 This way also allows to define a language for a subset of the final page, with custom
13 templates and inclusion. 
14
15 This may be useful for sites with a few pages in different languages, but no full i18n.
16
17 <pre>
18 --- meta.orig.pm  2007-07-27 00:19:51.000000000 +0200
19 +++ meta.pm       2007-08-05 22:37:40.000000000 +0200
20 @@ -11,6 +11,7 @@
21  my %permalink;
22  my %author;
23  my %authorurl;
24 +my %lang;
25  
26  sub import { #{{{
27         hook(type => "preprocess", id => "meta", call => \&preprocess, scan => 1);
28 @@ -100,6 +101,11 @@
29                 $meta{$page}.='<link href="'.encode_entities($value).
30                         "\" rel=\"openid.delegate\" />\n";
31         }
32 +       elsif ($key eq 'lang') {
33 +           if ($value =~ /^[A-Za-z]{2}$/) {
34 +               $lang{$page}=$value;
35 +           }
36 +       }
37         else {
38                 $meta{$page}.=scrub("<meta name=\"".encode_entities($key).
39                         "\" content=\"".encode_entities($value)."\" />\n");
40 @@ -131,6 +137,8 @@
41                 if exists $author{$page} && $template->query(name => "author");
42         $template->param(authorurl => $authorurl{$page})
43                 if exists $authorurl{$page} && $template->query(name => "authorurl");
44 +       $template->param(lang => $lang{$page})
45 +               if exists $lang{$page} && $template->query(name => "lang");
46  
47  } # }}}
48 </pre>
49
50
51 [[tag wishlist patch plugin/meta translation]]