87 lines
4.4 KiB
Markdown
87 lines
4.4 KiB
Markdown
I've been working on a plugin called "po", that adds support for multi-lingual wikis,
|
|
translated with gettext, using [po4a](http://po4a.alioth.debian.org/).
|
|
|
|
More information:
|
|
|
|
* It can be found in [my "po" branch](http://repo.or.cz/w/ikiwiki/intrigeri.git?a=shortlog;h=refs/heads/po): `git clone git://repo.or.cz/ikiwiki/intrigeri.git`
|
|
* It involves adding three hooks to ikiwiki core.
|
|
* It is documented (including TODO and plans for next work steps) in `doc/plugins/po.mdwn`, which can be found in the same branch.
|
|
* No public demo site is available so far, I'm working on this.
|
|
|
|
My plan is to get this plugin clean enough to be included in ikiwiki.
|
|
|
|
The current version is a proof-of-concept, mature enough for me to dare submitting it here,
|
|
but I'm prepared to hear various helpful remarks, and to rewrite parts of it as needed.
|
|
|
|
Any thoughts on this?
|
|
|
|
> Well, I think it's pretty stunning what you've done here. Seems very
|
|
> complete and well thought out. I have not read the code in great detail
|
|
> yet.
|
|
>
|
|
> Just using po files is an approach I've never seen tried with a wiki. I
|
|
> suspect it will work better for some wikis than others. For wikis that
|
|
> just want translations that match the master language as closely as
|
|
> possible and don't wander off and diverge, it seems perfect. (But what happens
|
|
> if someone edits the Discussion page of a translated page?)
|
|
>
|
|
> Please keep me posted, when you get closer to having all issues solved
|
|
> and ready for merging I can do a review and hopefully help with the
|
|
> security items you listed. --[[Joey]]
|
|
|
|
>> Thanks a lot for your quick review, it's reassuring to hear such nice words
|
|
>> from you. I did not want to design and write a full translation system, when
|
|
>> tools such as gettext/po4a already have all the needed functionality, for cases
|
|
>> where the master/slave languages paradigm fits.
|
|
>> Integrating these tools into ikiwiki plugin system was a pleasure.
|
|
>>
|
|
>> I'll tell you when I'm ready for merging, but in the meantime,
|
|
>> I'd like you to review the changes I did to the core (3 added hooks).
|
|
>> Can you please do this? If not, I'll go on and hope I'm not going to far in
|
|
>> the wrong direction.
|
|
>>
|
|
>>> Sure.. I'm not completly happy with any of the hooks since they're very
|
|
>>> special purpose, and also since `run_hooks` is not the best interface
|
|
>>> for a hook that modifies a variable, where only the last hook run will
|
|
>>> actually do anything. It might be better to just wrap
|
|
>>> `targetpage`, `bestlink`, and `beautify_urlpath`. But, I noticed
|
|
>>> the other day that such wrappers around exported functions are only visible by
|
|
>>> plugins loaded after the plugin that defines them.
|
|
>>>
|
|
>>> Update: Take a look at the new "Function overriding" section of
|
|
>>> [[plugins/write]]. I think you can just inject wrappers about a few ikiwiki
|
|
>>> functions, rather than adding hooks. The `inject` function is pretty
|
|
>>> insane^Wlow level, but seems to work great. --[[Joey]]
|
|
>>>
|
|
>>>> Thanks a lot, it seems to be a nice interface for what I was trying to achieve.
|
|
>>>> I may be forced to wait two long weeks before I have a chance to confirm
|
|
>>>> this. Stay tuned. --[[intrigeri]]
|
|
>>>>
|
|
>>>>> I've updated the plugin to use `inject`. It is now fully self-contained,
|
|
>>>>> and does not modify the core anymore. --[[intrigeri]]
|
|
>>
|
|
>> The Discussion pages issue is something I am not sure about yet. But I will
|
|
>> probably decide that "slave" pages, being only translations, don't deserve
|
|
>> a discussion page: the discussion should happen in the language in which the
|
|
>> pages are written for real, which is the "master" one. --[[intrigeri]]
|
|
>>
|
|
>> I think that's a good decision, you don't want to translate discussion,
|
|
>> and if the discussion page turns out multilingual, well, se la vi. ;-)
|
|
>>
|
|
>> Relatedly, what happens if a translated page has a broken link, and you
|
|
>> click on it to edit it? Seems you'd first have to create a master page
|
|
>> and could only then translate it, right? I wonder if this will be clear
|
|
>> though to the user.
|
|
>>
|
|
>> And also, is there any way to start a translation of a page into a new
|
|
>> lanauge using the web interface?
|
|
>>
|
|
>> FWIW, I'm tracking your po branch in ikiwiki master git in the po
|
|
>> branch. One thing I'd like to try in there is setting up a translated
|
|
>> basewiki, which seems like it should be pretty easy to do, and would be
|
|
>> a great demo! --[[Joey]]
|
|
>>
|
|
>>> I've merged your changes into my own branch. Please note my
|
|
>>> repository location has changed a few days ago, see my user page
|
|
>>> for the new one. --[[intrigeri]]
|