po: Auto-upgrade old format settings to new formats when writing setup file.

master
Joey Hess 2010-09-10 14:04:43 -04:00
parent 5edddf87ca
commit 23f8869009
2 changed files with 21 additions and 8 deletions

View File

@ -30,6 +30,7 @@ my %translations;
my @origneedsbuild;
my %origsubs;
my @slavelanguages; # language codes ordered as in config po_slave_languages
my %slavelanguages; # language code to name lookup
memoize("istranslatable");
memoize("_istranslation");
@ -138,6 +139,7 @@ sub checkconfig () {
else {
$master_language_code=$config{po_master_language}{code};
$master_language_name=$config{po_master_language}{name};
$config{po_master_language}=joinlangpair($master_language_code, $master_language_name);
}
}
if (! defined $master_language_code) {
@ -148,23 +150,25 @@ sub checkconfig () {
}
if (ref $config{po_slave_languages} eq 'ARRAY') {
my %slaves;
foreach my $pair (@{$config{po_slave_languages}}) {
my ($code, $name)=splitlangpair($pair);
if (defined $code) {
push @slavelanguages, $code;
$slaves{$code} = $name;
$slavelanguages{$code} = $name;
}
}
$config{po_slave_languages} = \%slaves;
}
elsif (ref $config{po_slave_languages} eq 'HASH') {
%slavelanguages=%{$config{po_slave_languages}};
@slavelanguages = sort {
$config{po_slave_languages}->{$a} cmp $config{po_slave_languages}->{$b};
} keys %{$config{po_slave_languages}};
} keys %slavelanguages;
$config{po_slave_languages}=[
map { joinlangpair($_, $slavelanguages{$_}) } @slavelanguages
]
}
delete $config{po_slave_languages}{$master_language_code};
delete $slavelanguages{$master_language_code};
map {
islanguagecode($_)
@ -797,7 +801,7 @@ sub _istranslation ($) {
return 0 unless defined $masterpage && defined $lang
&& length $masterpage && length $lang
&& defined $pagesources{$masterpage}
&& defined $config{po_slave_languages}{$lang};
&& defined $slavelanguages{$lang};
return (maybe_add_leading_slash($masterpage, $hasleadingslash), $lang)
if istranslatable($masterpage);
@ -1015,8 +1019,8 @@ sub languagename ($) {
return $master_language_name
if $code eq $master_language_code;
return $config{po_slave_languages}{$code}
if defined $config{po_slave_languages}{$code};
return $slavelanguages{$code}
if defined $slavelanguages{$code};
return;
}
@ -1252,6 +1256,13 @@ sub splitlangpair ($) {
return $code, $name;
}
sub joinlangpair ($$) {
my $code=shift;
my $name=shift;
return "$code|$name";
}
# ,----
# | PageSpecs
# `----

2
debian/changelog vendored
View File

@ -10,6 +10,8 @@ ikiwiki (3.20100832) UNRELEASED; urgency=low
* po: Make the po_master_language use a langpair like "en|English",
so it can be configured via the web.
* po: Allow enabling via web setup.
* po: Auto-upgrade old format settings to new formats when writing
setup file.
-- Joey Hess <joeyh@debian.org> Tue, 07 Sep 2010 12:08:05 -0400