web commit by NicolasLimare: typo
[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 \[[meta lang="ja"]]
3
4 It doesn't insert the langage information in the xhtml meta elements, but defines a LANG
5 variable to use in the templates, for example with
6
7     <html xmlns="http://www.w3.org/1999/xhtml"
8           lang="<TMPL_IF NAME="LANG"><TMPL_VAR LANG><TMPL_ELSE>fr</TMPL_IF>"
9           xml:lang="<TMPL_IF NAME="LANG"><TMPL_VAR LANG><TMPL_ELSE>fr</TMPL_IF>">
10
11 This way also allows to define a language for a subset of the final page, with custom
12 templates and inclusion. 
13
14 This may be useful for sites with a few pages in different languages, but no full i18n.
15
16 > Looks good, but the need to modify the template and include a default
17 > language in it is a bit problimatic, I think. --[[Joey]]
18
19 >> --lang=XX could be a setup option, with a default value, then the template would be 
20
21                 <html xmlns="http://www.w3.org/1999/xhtml" lang="<TMPL_VAR LANG>" xml:lang="<TMPL_VAR LANG>">
22
23 >>> Yes, that seems reasonable. I guess there's no problem with defaulting
24 >>> to en if it can be overridden in the setup. --[[Joey]]
25
26 >>>> Yes, english default makes sense. But maybe this option should also be used to define the 
27 >>>> language used for the messages, ie override the locale?
28 >>>> Or just --html-lang=XX, only used by the templates? 
29 >>>> — NicolasLimare
30
31 <pre>
32 --- meta.orig.pm  2007-07-27 00:19:51.000000000 +0200
33 +++ meta.pm       2007-08-05 22:37:40.000000000 +0200
34 @@ -11,6 +11,7 @@
35  my %permalink;
36  my %author;
37  my %authorurl;
38 +my %lang;
39  
40  sub import { #{{{
41         hook(type => "preprocess", id => "meta", call => \&preprocess, scan => 1);
42 @@ -100,6 +101,11 @@
43                 $meta{$page}.='<link href="'.encode_entities($value).
44                         "\" rel=\"openid.delegate\" />\n";
45         }
46 +       elsif ($key eq 'lang') {
47 +           if ($value =~ /^[A-Za-z]{2}$/) {
48 +               $lang{$page}=$value;
49 +           }
50 +       }
51         else {
52                 $meta{$page}.=scrub("<meta name=\"".encode_entities($key).
53                         "\" content=\"".encode_entities($value)."\" />\n");
54 @@ -131,6 +137,8 @@
55                 if exists $author{$page} && $template->query(name => "author");
56         $template->param(authorurl => $authorurl{$page})
57                 if exists $authorurl{$page} && $template->query(name => "authorurl");
58 +       $template->param(lang => $lang{$page})
59 +               if exists $lang{$page} && $template->query(name => "lang");
60  
61  } # }}}
62 </pre>
63
64
65 [[tag wishlist patch plugin/meta translation]]