po plugin(refreshpot): prevent PO references to be written

... else we can fall into some kind of nasty infinite loop, when two ikiwiki
instances don't store their working copy of the repository at the same place:
every POT file update in one repository would trigger an update of the same POT
file in the others repository, and so on.

Signed-off-by: intrigeri <intrigeri@boum.org>
master
intrigeri 2008-10-18 21:47:49 +02:00
parent a0deb3038c
commit 629968fc89
1 changed files with 7 additions and 0 deletions

View File

@ -9,6 +9,7 @@ use strict;
use IkiWiki 2.00; use IkiWiki 2.00;
use Encode; use Encode;
use Locale::Po4a::Chooser; use Locale::Po4a::Chooser;
use Locale::Po4a::Po;
use File::Basename; use File::Basename;
use File::Copy; use File::Copy;
use File::Spec; use File::Spec;
@ -119,6 +120,12 @@ sub refreshpot ($) { #{{{
$doc->{TT}{utf_mode} = 1; $doc->{TT}{utf_mode} = 1;
$doc->{TT}{file_in_charset} = 'utf-8'; $doc->{TT}{file_in_charset} = 'utf-8';
$doc->{TT}{file_out_charset} = 'utf-8'; $doc->{TT}{file_out_charset} = 'utf-8';
# let's cheat a bit to force porefs option to be passed to Locale::Po4a::Po;
# this is undocument use of internal Locale::Po4a::TransTractor's data,
# compulsory since this module prevents us from using the porefs option.
my %po_options = ('porefs' => 'none');
$doc->{TT}{po_out}=Locale::Po4a::Po->new(\%po_options);
# do the actual work
$doc->parse; $doc->parse;
$doc->writepo($potfile); $doc->writepo($potfile);
} #}}} } #}}}