push @{$config{wiki_file_prune_regexps}}, qr/\.pot$/;
- if ($config{po_master_language}{code} ne 'en') {
- # use translated underlay directories in preference
- # to the untranslated ones
- foreach my $underlay ('basewiki', reverse @{$config{underlaydirs}}) {
- add_underlay("locale/".$config{po_master_language}{code}."/".$underlay);
+ # Translated versions of the underlays are added if available.
+ foreach my $underlay ("basewiki", map { m/^\Q$config{underlaydirbase}\E\/*(.*)/ } reverse @{$config{underlaydirs}}) {
+ next if $underlay=~/^locale\//;
+
+ # Add underlay containing the pot files.
+ #add_underlay("locale/pot/$underlay")
+ # if -d "$config{underlaydirbase}/locale/pot/$underlay";
+
+ # Add underlays containing the po files for slave languages.
+ foreach my $ll (keys %{$config{po_slave_languages}}) {
+ add_underlay("locale/mo/$underlay")
+ if -d "$config{underlaydirbase}/locale/mo/$underlay";
+ }
+
+ if ($config{po_master_language}{code} ne 'en') {
+ # Add underlay containing translated source files
+ # for the master language.
+ add_underlay("locale/$config{po_master_language}{code}/$underlay");
}
}
}
my $updated_po_files=0;
# Refresh/create POT and PO files as needed.
+ # (But avoid doing so if they are in an underlay directory.)
foreach my $file (grep {istranslatablefile($_)} @rendered) {
- my $page=pagename($file);
my $masterfile=srcfile($file);
+ my $page=pagename($file);
my $updated_pot_file=0;
- # Only refresh Pot file if it does not exist, or if
+ # Only refresh POT file if it does not exist, or if
# $pagesources{$page} was changed: don't if only the HTML was
# refreshed, e.g. because of a dependency.
- if ((grep { $_ eq $pagesources{$page} } @origneedsbuild)
- || ! -e potfile($masterfile)) {
+ if ($masterfile eq "$config{srcdir}/$file" &&
+ ((grep { $_ eq $pagesources{$page} } @origneedsbuild)
+ || ! -e potfile($masterfile))) {
refreshpot($masterfile);
$updated_pot_file=1;
}
my @pofiles;
- map {
- push @pofiles, $_ if ($updated_pot_file || ! -e $_);
- } (pofiles($masterfile));
+ foreach my $po (pofiles($masterfile)) {
+ next if ! $updated_pot_file && ! -e $po;
+ next if grep { $po=~/\Q$_\E/ } @{$config{underlaydirs}};
+ push @pofiles, $po;
+ }
if (@pofiles) {
refreshpofiles($masterfile, @pofiles);
map { IkiWiki::rcs_add($_) } @pofiles if $config{rcs};
my $type=pagetype($file);
return 0 if ! defined $type || $type eq 'po';
return 0 if $file =~ /\.pot$/;
- return 0 unless -e "$config{srcdir}/$file"; # underlay dirs may be read-only
return 1 if pagespec_match(pagename($file), $config{po_translatable_pages});
return;
}
An integration branch, called `meta-po`, merges [[intrigeri]]'s `po`
and `meta` branches, and thus has thise additional features.
-
Language display order
----------------------
to an array to support this. (If twere done, twere best done quickly.)
--[[Joey]]
-po files in underlay
---------------------
-
-I think this plugin doesn't yet allow po files to be present in an
-underlay to translate files also from the underlay.
-
-In `istranslatablefile`, it specifically checks that
-the file is present in srcdir.
-
-Problem with this is that it precludes using po to translate
-the basewiki (work which is well under way for Danish BTW),
-since the translated po files cannot really be used.
-
-A further problem comes if one wants to use a non-English language as the
-`po_master_language`. It would be good to get a translated
-basewiki, taking po files from the underlay and using them as the primary
-page sources, but this plugin doesn't yet support that.
-
-And, maybe it shouldn't? A user would not expect to see a po file when
-editing the index page of their wiki, just because they're using a
-different language. Instead, we might want to build localized .mdwn files
-for the basewiki, and then ikiwiki would just use that translated underlay.
-The when the user edits index, they get a nice mdwn file to start from.
-
-So, we seem to have two cases, in one po files from the underlay should be
-used, in the other not. Hmm. Support both?
-
-> Update -- I've written po2wiki, which can spit out translated underlays
-> in markdown format, and made the po plugin enable use of such underlays
-> when the master language is not `en`.
---[[Joey]]
-
Duplicate %links ?
------------------