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 @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
|
||||
|
|
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"); }
|
||||
|
||||
|
@ -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'));
|
||||
|
|
Loading…
Reference in New Issue