Here is a patch for the [[plugins/meta]] plugin. It adds the possibility to define the language
used for a page, with [[!meta lang="ja"]]
It doesn't insert the langage information in the xhtml meta elements, but defines a LANG
variable to use in the templates, for example with
<html xmlns="http://www.w3.org/1999/xhtml"
lang="<TMPL_IF NAME="LANG"><TMPL_VAR LANG><TMPL_ELSE>fr</TMPL_IF>"
xml:lang="<TMPL_IF NAME="LANG"><TMPL_VAR LANG><TMPL_ELSE>fr</TMPL_IF>">
This way also allows to define a language for a subset of the final page, with custom
templates and inclusion.
This may be useful for sites with a few pages in different languages, but no full i18n.
Looks good, but the need to modify the template and include a default
language in it is a bit problimatic, I think. --[[Joey]]
--lang=XX could be a setup option, with a default value, then the template would be
<html xmlns="http://www.w3.org/1999/xhtml" lang="<TMPL_VAR LANG>" xml:lang="<TMPL_VAR LANG>">
Yes, that seems reasonable. I guess there's no problem with defaulting
to en if it can be overridden in the setup. --[[Joey]]
Yes, english default makes sense. I guess we should use the $config{lang} ,
defined from the setup file or command-line options to define the default language
($config{lang} defaults to en which is fine) if the html pages, and override
it from the meta directive.
— [[NicolasLimare]]
ikiwiki already has a $config{locale}, which is a full locale (ie,
"en_US.UTF-8". This just needs to be parsed for the lang. --[[Joey]]
My mistake, I meant $config{locale} --[[NicolasLimare]]
So the patch below could be changed to parse $config{locale} for the
language, and pass it if no specific lang was set for the page. The only
problem with that would be that this is all done inside the meta plugin,
so if that plugin were disabled, the lang would be empty. To avoid that,
I guess that the template needs to look like:
<html xmlns="http://www.w3.org/1999/xhtml"
<TMPL_IF NAME="LANG">lang="<TMPL_VAR LANG>" xml:lang="<TMPL_VAR LANG>"</TMPL_IF>>
Now it just needs to be finished up.. --[[Joey]]
Please resolve lang somewhere reusable rather than within meta plugin: It is certainly usable outside
the scope of the meta plugin as well. --[[JonasSmedegaard]]
I don't see any problem with having this in meta? meta is on by default, and
other plugins are free to use it or even depend on it (e.g. inline does).
My only comments on this patch beyond what Joey said are that the page
language could usefully go into $pagestate{$page}{meta}{lang} for other
plugins to be able to see it (is that what you meant?), and that
restricting to 2 characters is too restrictive (HTML 4.01 mentions
en , en-US and i-navajo as possible language codes).
This slightly complicates parsing the locale to get the default language:
it'll need tr/_/-/ after the optional .encoding is removed.
--[[smcv]]
[[!tag wishlist patch plugins/meta translation]]
|