po: support language codes in the form of 'es_AR', and 'arn'.
... additionally to the previously supported two-letters codes.master
parent
a9a5c6eeb8
commit
3cd0c1f91a
|
@ -31,6 +31,7 @@ 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
|
my %slavelanguages; # language code to name lookup
|
||||||
|
my $language_code_pattern = '[a-zA-Z]+(?:_[a-zA-Z]+)?';
|
||||||
|
|
||||||
memoize("istranslatable");
|
memoize("istranslatable");
|
||||||
memoize("_istranslation");
|
memoize("_istranslation");
|
||||||
|
@ -811,7 +812,7 @@ sub _istranslation ($) {
|
||||||
&& pagetype($file) eq 'po';
|
&& pagetype($file) eq 'po';
|
||||||
return 0 if $file =~ /\.pot$/;
|
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
|
return 0 unless defined $masterpage && defined $lang
|
||||||
&& length $masterpage && length $lang
|
&& length $masterpage && length $lang
|
||||||
&& defined $pagesources{$masterpage}
|
&& defined $pagesources{$masterpage}
|
||||||
|
@ -853,7 +854,7 @@ sub lang ($) {
|
||||||
sub islanguagecode ($) {
|
sub islanguagecode ($) {
|
||||||
my $code=shift;
|
my $code=shift;
|
||||||
|
|
||||||
return $code =~ /^[a-z]{2}$/;
|
return $code =~ /^$language_code_pattern$/;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub otherlanguage_page ($$) {
|
sub otherlanguage_page ($$) {
|
||||||
|
@ -1259,7 +1260,7 @@ sub po4a_options($) {
|
||||||
sub splitlangpair ($) {
|
sub splitlangpair ($) {
|
||||||
my $pair=shift;
|
my $pair=shift;
|
||||||
|
|
||||||
my ($code, $name) = ( $pair =~ /^([a-z]{2})\|(.+)$/ );
|
my ($code, $name) = ( $pair =~ /^($language_code_pattern)\|(.+)$/ );
|
||||||
if (! defined $code || ! defined $name ||
|
if (! defined $code || ! defined $name ||
|
||||||
! length $code || ! length $name) {
|
! length $code || ! length $name) {
|
||||||
# not a fatal error to avoid breaking if used with web setup
|
# not a fatal error to avoid breaking if used with web setup
|
||||||
|
|
9
t/po.t
9
t/po.t
|
@ -17,7 +17,7 @@ BEGIN {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
use Test::More tests => 109;
|
use Test::More tests => 114;
|
||||||
|
|
||||||
BEGIN { use_ok("IkiWiki"); }
|
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('nontranslatable', 'cz'));
|
||||||
ok(! IkiWiki::Plugin::po::istranslatedto('test1.es', 'fr'));
|
ok(! IkiWiki::Plugin::po::istranslatedto('test1.es', 'fr'));
|
||||||
ok(! IkiWiki::Plugin::po::istranslatedto('test1.fr', 'es'));
|
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'));
|
||||||
|
|
Loading…
Reference in New Issue