aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/po.pm14
-rwxr-xr-xt/po.t19
2 files changed, 20 insertions, 13 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index ad3fe9da8..6395ebdc2 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -164,7 +164,7 @@ sub checkconfig () {
map {
islanguagecode($_)
or error(sprintf(gettext("%s is not a valid language code"), $_));
- } ($config{po_master_language}{code}, keys %{$config{po_slave_languages}});
+ } ($config{po_master_language}{code}, @slavelanguages);
if (! exists $config{po_translatable_pages} ||
! defined $config{po_translatable_pages}) {
@@ -193,7 +193,7 @@ sub checkconfig () {
next if $underlay=~/^locale\//;
# Underlays containing the po files for slave languages.
- foreach my $ll (keys %{$config{po_slave_languages}}) {
+ foreach my $ll (@slavelanguages) {
add_underlay("po/$ll/$underlay")
if -d "$config{underlaydirbase}/po/$ll/$underlay";
}
@@ -615,7 +615,7 @@ sub mybeautify_urlpath ($) {
$res =~ s!/\Qindex.$config{htmlext}\E$!/!;
map {
$res =~ s!/\Qindex.$_.$config{htmlext}\E$!/!;
- } (keys %{$config{po_slave_languages}});
+ } @slavelanguages;
}
return $res;
}
@@ -852,7 +852,7 @@ sub otherlanguages_codes ($) {
return \@ret unless istranslation($page) || istranslatable($page);
my $curlang=lang($page);
foreach my $lang
- ($config{po_master_language}{code}, keys %{$config{po_slave_languages}}) {
+ ($config{po_master_language}{code}, @slavelanguages) {
next if $lang eq $curlang;
push @ret, $lang;
}
@@ -890,7 +890,7 @@ sub pofile ($$) {
sub pofiles ($) {
my $masterfile=shift;
- return map pofile($masterfile, $_), (keys %{$config{po_slave_languages}});
+ return map pofile($masterfile, $_), @slavelanguages;
}
sub refreshpot ($) {
@@ -1048,7 +1048,7 @@ sub ishomepage ($) {
my $page = shift;
return 1 if $page eq 'index';
- map { return 1 if $page eq 'index.'.$_ } keys %{$config{po_slave_languages}};
+ map { return 1 if $page eq 'index.'.$_ } @slavelanguages;
return undef;
}
@@ -1063,7 +1063,7 @@ sub deletetranslations ($) {
if (-e $absfile && ! -l $absfile && ! -d $absfile) {
push @todelete, $file;
}
- } keys %{$config{po_slave_languages}};
+ } @slavelanguages;
map {
if ($config{rcs}) {
diff --git a/t/po.t b/t/po.t
index 0155b5303..444743cac 100755
--- a/t/po.t
+++ b/t/po.t
@@ -17,7 +17,7 @@ BEGIN {
}
}
-use Test::More tests => 65;
+use Test::More tests => 68;
BEGIN { use_ok("IkiWiki"); }
@@ -42,8 +42,8 @@ $config{po_slave_languages} = {
$config{po_translatable_pages}='index or test1 or test2 or translatable';
$config{po_link_to}='negotiated';
IkiWiki::loadplugins();
-IkiWiki::checkconfig();
ok(IkiWiki::loadplugin('po'), "po plugin loaded");
+IkiWiki::checkconfig();
### seed %pagesources and %pagecase
$pagesources{'index'}='index.mdwn';
@@ -91,6 +91,13 @@ ok(! IkiWiki::Plugin::po::istranslatable('test3'), "test3 is not translatable");
ok(! IkiWiki::Plugin::po::istranslation('test3'), "test3 is not a translation");
}
+### pofiles
+
+my @pofiles = IkiWiki::Plugin::po::pofiles(srcfile("index.mdwn"));
+ok( @pofiles, "pofiles is defined");
+ok( @pofiles == 2, "pofiles has correct size");
+is_deeply(\@pofiles, ["$config{srcdir}/index.es.po", "$config{srcdir}/index.fr.po"], "pofiles content is correct");
+
### links
require IkiWiki::Render;
@@ -111,8 +118,8 @@ $config{po_link_to}='negotiated';
$msgprefix="links (po_link_to=negotiated)";
refresh_n_scan('index.mdwn', 'translatable.mdwn', 'nontranslatable.mdwn');
is_deeply(\@{$links{'index'}}, ['translatable', 'nontranslatable'], "$msgprefix index");
-is_deeply(\@{$links{'index.es'}}, ['translatable.es', 'nontranslatable'], "$msgprefix index.es");
-is_deeply(\@{$links{'index.fr'}}, ['translatable.fr', 'nontranslatable'], "$msgprefix index.fr");
+is_deeply(\@{$links{'index.es'}}, ['translatable.es', 'nontranslatable', 'SandBox', 'ikiwiki'], "$msgprefix index.es");
+is_deeply(\@{$links{'index.fr'}}, ['translatable.fr', 'nontranslatable', 'SandBox', 'ikiwiki'], "$msgprefix index.fr");
is_deeply(\@{$links{'translatable'}}, ['nontranslatable'], "$msgprefix translatable");
is_deeply(\@{$links{'translatable.es'}}, ['nontranslatable'], "$msgprefix translatable.es");
is_deeply(\@{$links{'translatable.fr'}}, ['nontranslatable'], "$msgprefix translatable.fr");
@@ -122,8 +129,8 @@ $config{po_link_to}='current';
$msgprefix="links (po_link_to=current)";
refresh_n_scan('index.mdwn', 'translatable.mdwn', 'nontranslatable.mdwn');
is_deeply(\@{$links{'index'}}, ['translatable', 'nontranslatable'], "$msgprefix index");
-is_deeply(\@{$links{'index.es'}}, [ map bestlink('index.es', $_), ('translatable.es', 'nontranslatable')], "$msgprefix index.es");
-is_deeply(\@{$links{'index.fr'}}, [ map bestlink('index.fr', $_), ('translatable.fr', 'nontranslatable')], "$msgprefix index.fr");
+is_deeply(\@{$links{'index.es'}}, [ (map bestlink('index.es', $_), ('translatable.es', 'nontranslatable')), 'SandBox', 'ikiwiki'], "$msgprefix index.es");
+is_deeply(\@{$links{'index.fr'}}, [ (map bestlink('index.fr', $_), ('translatable.fr', 'nontranslatable')), 'SandBox', 'ikiwiki'], "$msgprefix index.fr");
is_deeply(\@{$links{'translatable'}}, [bestlink('translatable', 'nontranslatable')], "$msgprefix translatable");
is_deeply(\@{$links{'translatable.es'}}, ['nontranslatable'], "$msgprefix translatable.es");
is_deeply(\@{$links{'translatable.fr'}}, ['nontranslatable'], "$msgprefix translatable.fr");