aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2011-06-03 12:32:37 -0400
committerJoey Hess <joey@kitenet.net>2011-06-03 12:32:37 -0400
commit70e7bee1a0798ef162a36f13f389d7ad25b9df1a (patch)
tree2d7a2152c17d34b3fdd81463267f2264a1b12eff
parentb213759eda3021c63cdad18cf51bf63abbbab1b1 (diff)
parent3cd0c1f91a8e4b7accfe75d132066b79da4379fd (diff)
downloadikiwiki-70e7bee1a0798ef162a36f13f389d7ad25b9df1a.tar
ikiwiki-70e7bee1a0798ef162a36f13f389d7ad25b9df1a.tar.gz
Merge remote-tracking branch 'intrigeri/po-long-language-codes'
-rw-r--r--IkiWiki/Plugin/po.pm7
-rwxr-xr-xt/po.t9
2 files changed, 12 insertions, 4 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index 9ccc79268..d3a996a21 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -31,6 +31,7 @@ my @origneedsbuild;
my %origsubs;
my @slavelanguages; # language codes ordered as in config po_slave_languages
my %slavelanguages; # language code to name lookup
+my $language_code_pattern = '[a-zA-Z]+(?:_[a-zA-Z]+)?';
memoize("istranslatable");
memoize("_istranslation");
@@ -811,7 +812,7 @@ sub _istranslation ($) {
&& pagetype($file) eq 'po';
return 0 if $file =~ /\.pot$/;
- my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/);
+ my ($masterpage, $lang) = ($page =~ /(.*)[.]($language_code_pattern)$/);
return 0 unless defined $masterpage && defined $lang
&& length $masterpage && length $lang
&& defined $pagesources{$masterpage}
@@ -853,7 +854,7 @@ sub lang ($) {
sub islanguagecode ($) {
my $code=shift;
- return $code =~ /^[a-z]{2}$/;
+ return $code =~ /^$language_code_pattern$/;
}
sub otherlanguage_page ($$) {
@@ -1259,7 +1260,7 @@ sub po4a_options($) {
sub splitlangpair ($) {
my $pair=shift;
- my ($code, $name) = ( $pair =~ /^([a-z]{2})\|(.+)$/ );
+ my ($code, $name) = ( $pair =~ /^($language_code_pattern)\|(.+)$/ );
if (! defined $code || ! defined $name ||
! length $code || ! length $name) {
# not a fatal error to avoid breaking if used with web setup
diff --git a/t/po.t b/t/po.t
index da0bd68a7..5e251fce4 100755
--- a/t/po.t
+++ b/t/po.t
@@ -17,7 +17,7 @@ BEGIN {
}
}
-use Test::More tests => 109;
+use Test::More tests => 114;
BEGIN { use_ok("IkiWiki"); }
@@ -241,3 +241,10 @@ ok(! IkiWiki::Plugin::po::istranslatedto('nontranslatable', 'es'));
ok(! IkiWiki::Plugin::po::istranslatedto('nontranslatable', 'cz'));
ok(! IkiWiki::Plugin::po::istranslatedto('test1.es', 'fr'));
ok(! IkiWiki::Plugin::po::istranslatedto('test1.fr', 'es'));
+
+### islanguagecode
+ok(IkiWiki::Plugin::po::islanguagecode('en'));
+ok(IkiWiki::Plugin::po::islanguagecode('es'));
+ok(IkiWiki::Plugin::po::islanguagecode('arn'));
+ok(! IkiWiki::Plugin::po::islanguagecode('es_'));
+ok(! IkiWiki::Plugin::po::islanguagecode('_en'));