Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

nik (3476)

nik
  nikc@cpan.org
AOL IM: nikclayton (Add Buddy, Send Message)

Journal of nik (3476)

Tuesday October 10, 2006
05:21 AM

SVN::Web, easier third party action integration

[ #31278 ]

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 (http://jc.ngo.org.uk/svnweb/jc/view/nik/CPAN/SVN-Web/trunk/lib/SVN/Web/I18N.pm) .

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.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.