106 lines
4.1 KiB
Markdown
106 lines
4.1 KiB
Markdown
[[template id=plugin name=linguas author="Jordà Polo"]]
|
|
|
|
Linguas
|
|
=======
|
|
|
|
Linguas is a plugin for [ikiwiki](http://ikiwiki.info/) that
|
|
allows translations of wiki pages.
|
|
|
|
Download: [linguas.pm](http://ettin.org/pub/ikiwiki/linguas.pm) (2006-08-21).
|
|
|
|
Note that even though it is still available for download, this plugin is no
|
|
longer actively maintained. If you are interested in multilingual wiki pages, you
|
|
can also take a look at other approaches such as [[todo/l10n]] or Lars Wirzenius's
|
|
[Static website, with translations, using IkiWiki](http://liw.iki.fi/liw/log/2007-05.html#20070528b).
|
|
|
|
Usage
|
|
-----
|
|
|
|
Translatable pages and translations must have the following format:
|
|
`pagename.$LANG`, where `$LANG` is a ISO639-1 (two-letter) language code.
|
|
To enable linguas, add the following line in the source code of the page:
|
|
|
|
\[[linguas ]]
|
|
|
|
Note that linguas is only required in one of the pages (the original,
|
|
for instance); the rest of translations will be automatically
|
|
updated. Additionally, it is also possible to specify the title of
|
|
the translation:
|
|
|
|
\[[linguas title="Translated title"]]
|
|
|
|
|
|
Template
|
|
--------
|
|
|
|
This is the template code that should be added to `templates/page.tmpl`:
|
|
|
|
<TMPL_IF NAME="LINGUAS">
|
|
<div id="linguas">
|
|
<p class="otherlinguas"><TMPL_VAR NAME="OTHERLINGUAS"></p>
|
|
<ul>
|
|
<TMPL_LOOP NAME="LINGUAS">
|
|
<li><TMPL_VAR NAME=LINK></li>
|
|
</TMPL_LOOP>
|
|
</ul>
|
|
</div>
|
|
</TMPL_IF>
|
|
|
|
|
|
TODO/Known Problems
|
|
-------------------
|
|
|
|
* The current language list only contains 4 languages (ca, de, en,
|
|
es), and is "hardcoded" in linguas.pm. Would be interesting to define
|
|
it in ikiwiki.setup, though some problems were found while trying to do
|
|
so. (Actually, defining hash-like arguments from the command like works
|
|
fine, but it fails from ikiwiki.setup.)
|
|
|
|
> My guess about this is that it's because of the way Setup/Standard.pm
|
|
> untaints the config items from the file. It has code to handle arrays,
|
|
> but not hashes or more complex data structures. --[[Joey]]
|
|
|
|
> > Right. With this simple
|
|
> > [patch](http://ettin.org/pub/ikiwiki/hash_setup.patch) it seems to
|
|
> > work. However, note that 1) it only allows simple hashes, hashes of
|
|
> > hashes will not work (I don't think getops can handle complex hashes
|
|
> > anyway); 2) I don't really know when/why you call
|
|
> > `possibly_foolish_untaint()`; and 3) I'm no perl guru ;). --Jordà
|
|
|
|
> > > It's good. Applied..
|
|
|
|
* Wiki links to other translated pages require the full page name
|
|
including the `.$LANG`. It should be possible to link automatically
|
|
to pages with the same `.$LANG`, but that would probably require some
|
|
changes in IkiWiki. (I'm not sure though, I still haven't looked at
|
|
it... any hints?)
|
|
|
|
> Have you considered using the form ll/page? This would let more usual
|
|
> linking rules apply amoung pages without needing to specify the
|
|
> language. I'm not sure if you're supporting browser content
|
|
> negotiation, or whether that other layout would be harder to support it
|
|
> though. --[[Joey]]
|
|
|
|
> > Actually, I'm happy with the way it works now (and yeah, it is very
|
|
> > easy to take advantage of content negotiation). I just wanted
|
|
> > something simple to translatte a single page (or a few pages), not
|
|
> > the entire wiki. I'm not even sure it is a good idea to have fully
|
|
> > multilingual wikis, in most cases I would go for a different wiki
|
|
> > for each language. That said, I think it is an interesting idea, so
|
|
> > I'll take a look when I have the time. Thanks for your comments.
|
|
> > --Jordà
|
|
|
|
* The changes to htmllink in ikiwiki 1.44 broke this plugin.
|
|
The following fixes it:
|
|
|
|
--- linguas.pm.orig 2006-08-23 19:07:04.000000000 +0200
|
|
+++ linguas.pm 2007-03-24 01:53:18.000000000 +0100
|
|
@@ -100,7 +100,7 @@
|
|
if (exists $linguas{$2} && defined $linguas{$2}) {
|
|
$link = $linguas{$2}{'name'};
|
|
}
|
|
- push @links, IkiWiki::htmllink($page, $destpage, $trans, 0, 0, $link);
|
|
+ push @links, IkiWiki::htmllink($page, $destpage, $trans, noimageinline => 0, forcesubpage => 0, linktext => $link);
|
|
}
|
|
|
|
my $otherlinguas = 'Translations:'; |