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 @origneedsbuild;
my %origsubs; my %origsubs;
my @slavelanguages; # language codes ordered as in config po_slave_languages my @slavelanguages; # language codes ordered as in config po_slave_languages
my %slavelanguages; # language code to name lookup
memoize("istranslatable"); memoize("istranslatable");
memoize("_istranslation"); memoize("_istranslation");
@ -138,6 +139,7 @@ sub checkconfig () {
else { else {
$master_language_code=$config{po_master_language}{code}; $master_language_code=$config{po_master_language}{code};
$master_language_name=$config{po_master_language}{name}; $master_language_name=$config{po_master_language}{name};
$config{po_master_language}=joinlangpair($master_language_code, $master_language_name);
} }
} }
if (! defined $master_language_code) { if (! defined $master_language_code) {
@ -148,23 +150,25 @@ sub checkconfig () {
} }
if (ref $config{po_slave_languages} eq 'ARRAY') { if (ref $config{po_slave_languages} eq 'ARRAY') {
my %slaves;
foreach my $pair (@{$config{po_slave_languages}}) { foreach my $pair (@{$config{po_slave_languages}}) {
my ($code, $name)=splitlangpair($pair); my ($code, $name)=splitlangpair($pair);
if (defined $code) { if (defined $code) {
push @slavelanguages, $code; push @slavelanguages, $code;
$slaves{$code} = $name; $slavelanguages{$code} = $name;
} }
} }
$config{po_slave_languages} = \%slaves;
} }
elsif (ref $config{po_slave_languages} eq 'HASH') { elsif (ref $config{po_slave_languages} eq 'HASH') {
%slavelanguages=%{$config{po_slave_languages}};
@slavelanguages = sort { @slavelanguages = sort {
$config{po_slave_languages}->{$a} cmp $config{po_slave_languages}->{$b}; $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 { map {
islanguagecode($_) islanguagecode($_)
@ -797,7 +801,7 @@ sub _istranslation ($) {
return 0 unless defined $masterpage && defined $lang return 0 unless defined $masterpage && defined $lang
&& length $masterpage && length $lang && length $masterpage && length $lang
&& defined $pagesources{$masterpage} && defined $pagesources{$masterpage}
&& defined $config{po_slave_languages}{$lang}; && defined $slavelanguages{$lang};
return (maybe_add_leading_slash($masterpage, $hasleadingslash), $lang) return (maybe_add_leading_slash($masterpage, $hasleadingslash), $lang)
if istranslatable($masterpage); if istranslatable($masterpage);
@ -1015,8 +1019,8 @@ sub languagename ($) {
return $master_language_name return $master_language_name
if $code eq $master_language_code; if $code eq $master_language_code;
return $config{po_slave_languages}{$code} return $slavelanguages{$code}
if defined $config{po_slave_languages}{$code}; if defined $slavelanguages{$code};
return; return;
} }
@ -1252,6 +1256,13 @@ sub splitlangpair ($) {
return $code, $name; return $code, $name;
} }
sub joinlangpair ($$) {
my $code=shift;
my $name=shift;
return "$code|$name";
}
# ,---- # ,----
# | PageSpecs # | 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", * po: Make the po_master_language use a langpair like "en|English",
so it can be configured via the web. so it can be configured via the web.
* po: Allow enabling via web setup. * 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 -- Joey Hess <joeyh@debian.org> Tue, 07 Sep 2010 12:08:05 -0400