I knew there was something else I wanted to mention in my previous entry. I've been doing a little more hacking on SVN::Web recently.
One of the things that's bugged me about SVN::Web is the hoops a user needs to go through if they want to write their own SVN::Web::action class.
As well as writing the class (which is relatively easy), they need to provide templates for the interface, and localisation files for any language strings that they use.
This has been unduly difficult in the past. Although SVN::Web has supported looking for templates in multiple directories for some time now, localisation files have always had to live in one location.
Worse, you couldn't 'override' a localisation string that ships with SVN::Web with one of your own, without changing the files that ship with SVN::Web.
This makes upgrading more complicated than it needs to be, and means that the instructions for installing any third party actions would be more complicated than is really necessary.
So, over the weekend I finally did the work to make SVN::Web support localisation files in multiple directories. This means that you can use the localisation files that ship with SVN::Web, and selectively override one or more of the localisation strings by creating your own language.po file in your own directory -- future SVN::Web upgrades won't overwrite it. And installing third party actions is now simpler, since they can ship with their own localisation files, and now it's just a config.yaml tweak to have them used.
To do this I had to change the i18n infrastructure somewhat. Previously (I inherited this from clkao) SVN::Web used Locale::Maketext::Simple. As the name implies, this does make localisation quite simple, but at the cost of some flexibility. One of the things it couldn't do was support localisations in multiple directories.
So I had to roll my own SVN::Web::I18N, using Locale::Maketext and Locale::Maketext::Lexicon. The code itself is pretty simple, but I had a few headscratching moments trying to work out how to tie it together, as I found the Locale::Maketext* documentation a little confusing.
These changes were in r1178 (http://jc.ngo.org.uk/svnweb/jc/revision?rev=1178>), and you can see SVN::Web::I18N too (
Now if I can just get SVN::Client support working I can get on and release SVN::Web 0.50. And with that out of the door I can release a couple of other modules I've had hanging around -- SVN::Web::Timeline (http://jc.ngo.org.uk/svnweb/jc/browse/nik/CPAN/SVN-Web/branches/timeline), which generates a nifty AJAX timeline of commits to the source code, and SVN::Web::Search (http://jc.ngo.org.uk/svnweb/jc/browse/nik/CPAN/SVN-Web-Search/trunk) which indexes Subversion repositories and lets you search over them.