po plugin: created OTHERLANGUAGES template loop
It currently only provides basic translations/master pages links. Updated documentation accordingly. Signed-off-by: intrigeri <intrigeri@boum.org>master
parent
32cc0b336a
commit
a28559798a
|
@ -25,6 +25,7 @@ sub import {
|
|||
hook(type => "tweakbestlink", id => "po", call => \&tweakbestlink);
|
||||
hook(type => "filter", id => "po", call => \&filter);
|
||||
hook(type => "htmlize", id => "po", call => \&htmlize);
|
||||
hook(type => "pagetemplate", id => "po", call => \&pagetemplate);
|
||||
}
|
||||
|
||||
sub getsetup () { #{{{
|
||||
|
@ -198,6 +199,49 @@ sub htmlize (@) { #{{{
|
|||
return IkiWiki::htmlize($page, $page, pagetype($masterfile), $content);
|
||||
} #}}}
|
||||
|
||||
sub otherlanguages ($) { #{{{
|
||||
my $page=shift;
|
||||
my @ret;
|
||||
if (istranslatable($page)) {
|
||||
foreach my $lang (sort keys %{$translations{$page}}) {
|
||||
push @ret, {
|
||||
url => urlto($translations{$page}{$lang}, $page),
|
||||
code => $lang,
|
||||
language => $config{po_slave_languages}{$lang},
|
||||
master => 0,
|
||||
};
|
||||
}
|
||||
}
|
||||
elsif (istranslation($page)) {
|
||||
my ($masterpage, $curlang) = ($page =~ /(.*)[.]([a-z]{2})$/);
|
||||
push @ret, {
|
||||
url => urlto($masterpage, $page),
|
||||
code => $config{po_master_language}{code},
|
||||
language => $config{po_master_language}{name},
|
||||
master => 1,
|
||||
};
|
||||
foreach my $lang (sort keys %{$translations{$masterpage}}) {
|
||||
push @ret, {
|
||||
url => urlto($translations{$masterpage}{$lang}, $page),
|
||||
code => $lang,
|
||||
language => $config{po_slave_languages}{$lang},
|
||||
master => 0,
|
||||
} unless ($lang eq $curlang);
|
||||
}
|
||||
}
|
||||
return @ret;
|
||||
} #}}}
|
||||
|
||||
sub pagetemplate (@) { #{{{
|
||||
my %params=@_;
|
||||
my $page=$params{page};
|
||||
my $template=$params{template};
|
||||
|
||||
if ($template->query(name => "otherlanguages")) {
|
||||
$template->param(otherlanguages => [otherlanguages($page)]);
|
||||
}
|
||||
} # }}}
|
||||
|
||||
sub istranslatable ($) { #{{{
|
||||
my $page=shift;
|
||||
my $file=$pagesources{$page};
|
||||
|
|
|
@ -93,6 +93,29 @@ page's language, *i.e.*:
|
|||
- `foo/page.LL.html` if `usedirs` is disabled
|
||||
|
||||
|
||||
Templates
|
||||
---------
|
||||
|
||||
The `OTHERLANGUAGES` loop provides ways to display the existing
|
||||
translations and/or master page. One typically adds the following code
|
||||
to `templates/page.tmpl`:
|
||||
|
||||
<TMPL_IF NAME="OTHERLANGUAGES">
|
||||
<div id="otherlanguages">
|
||||
<ul>
|
||||
<TMPL_LOOP NAME="OTHERLANGUAGES">
|
||||
<li>
|
||||
<a href="<TMPL_VAR NAME="URL">"
|
||||
class="is_master_<TMPL_VAR NAME="MASTER">">
|
||||
<TMPL_VAR NAME="LANGUAGE">
|
||||
</a>
|
||||
</li>
|
||||
</TMPL_LOOP>
|
||||
</ul>
|
||||
</div>
|
||||
</TMPL_IF>
|
||||
|
||||
|
||||
Server support
|
||||
==============
|
||||
|
||||
|
@ -123,12 +146,11 @@ lighttpd unfortunately does not support content negotiation.
|
|||
TODO
|
||||
====
|
||||
|
||||
Display available translations
|
||||
------------------------------
|
||||
Link relationships
|
||||
------------------
|
||||
|
||||
The [[linguas|plugins/contrib/linguas]] plugin has some code that can
|
||||
be used as a basis to display the existing translations, and allow to
|
||||
navigate between them.
|
||||
Should pages using the `OTHERLANGUAGES` template loop be declared as
|
||||
linking to the same page in other versions?
|
||||
|
||||
View translation status
|
||||
-----------------------
|
||||
|
@ -138,10 +160,14 @@ completeness, either for a given page or for the whole wiki.
|
|||
|
||||
This should not be too hard using gettext tools. If this is
|
||||
implemented as a
|
||||
[[HTML::Template|http://search.cpan.org/search?mode=dist&query=HTML%3A%3ATemplate]]
|
||||
[HTML::Template](http://search.cpan.org/search?mode=dist&query=HTML%3A%3ATemplate)
|
||||
loop, a page using it should depend on any "master" and "slave" pages
|
||||
whose status is being displayed.
|
||||
|
||||
If it's not too heavy to compute, this status data may be made
|
||||
available in the `OTHERLANGUAGES` template loop; else, a dedicated
|
||||
loop would be needed.
|
||||
|
||||
Automatic PO files update
|
||||
-------------------------
|
||||
|
||||
|
|
Loading…
Reference in New Issue