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"]]
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
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>">
11 This way also allows to define a language for a subset of the final page, with custom
12 templates and inclusion.
14 This may be useful for sites with a few pages in different languages, but no full i18n.
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]]
19 >> --lang=XX could be a setup option, with a default value, then the template would be
21 <html xmlns="http://www.w3.org/1999/xhtml" lang="<TMPL_VAR LANG>" xml:lang="<TMPL_VAR LANG>">
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]]
26 >>>> Yes, english default makes sense. I guess we should use the `$config{lang}`,
27 >>>> defined from the setup file or command-line options to define the default language
28 >>>> (`$config{lang}` defaults to `en` which is fine) if the html pages, and override
29 >>>> it from the `meta` directive.
30 >>>> — [[NicolasLimare]]
32 >>>>> ikiwiki already has a $config{locale}, which is a full locale (ie,
33 >>>>> "en_US.UTF-8". This just needs to be parsed for the lang. --[[Joey]]
35 >>>>>> My mistake, I meant $config{locale} --[[NicolasLimare]]
38 --- meta.orig.pm 2007-07-27 00:19:51.000000000 +0200
39 +++ meta.pm 2007-08-05 22:37:40.000000000 +0200
47 hook(type => "preprocess", id => "meta", call => \&preprocess, scan => 1);
49 $meta{$page}.='<link href="'.encode_entities($value).
50 "\" rel=\"openid.delegate\" />\n";
52 + elsif ($key eq 'lang') {
53 + if ($value =~ /^[A-Za-z]{2}$/) {
54 + $lang{$page}=$value;
58 $meta{$page}.=scrub("<meta name=\"".encode_entities($key).
59 "\" content=\"".encode_entities($value)."\" />\n");
61 if exists $author{$page} && $template->query(name => "author");
62 $template->param(authorurl => $authorurl{$page})
63 if exists $authorurl{$page} && $template->query(name => "authorurl");
64 + $template->param(lang => $lang{$page})
65 + if exists $lang{$page} && $template->query(name => "lang");
71 [[tag wishlist patch plugins/meta translation]]