comparison Lib/IMPL/Resources/Strings.pm @ 318:1838bdb4d238

corrected support of resources localization
author cin
date Tue, 14 May 2013 03:38:47 +0400
parents 6dc1c369eb71
children f4e14f32cf54
comparison
equal deleted inserted replaced
317:96a522aeb359 318:1838bdb4d238
1 package IMPL::Resources::Strings;
1 use strict; 2 use strict;
2 use warnings;
3
4 package IMPL::Resources::Strings;
5 3
6 use File::Spec; 4 use File::Spec;
7 use List::Util qw(first); 5 use List::Util qw(first);
8 use IMPL::Resources::Format qw(FormatMessage); 6 use IMPL::Resources::Format qw(FormatMessage);
7 use IMPL::require {
8 Resources => 'IMPL::Resources'
9 };
9 10
10 our $Locale ||= 'default';
11 our $Encoding ||= 'utf-8'; 11 our $Encoding ||= 'utf-8';
12 our @Locations; 12 our @Locations;
13 my %maps; 13 my %maps;
14 14
15 sub import { 15 sub import {
27 27
28 *{"${class}::$name"} = sub { 28 *{"${class}::$name"} = sub {
29 shift if $methods; 29 shift if $methods;
30 my $args = @_ == 1 ? shift : { @_ }; 30 my $args = @_ == 1 ? shift : { @_ };
31 31
32 return _FormatMapMessage($class,$name,$map,$Locale,$args); 32 return _FormatMapMessage($class,$name,$map,Resources->currentLocale,$args);
33 } 33 }
34 } 34 }
35 } 35 }
36 } 36 }
37 37
59 # 'Foo/Bar.pm' -> '/full/path/to/Foo/Bar.pm' 59 # 'Foo/Bar.pm' -> '/full/path/to/Foo/Bar.pm'
60 my $fullModulePath = first { -f } map( File::Spec->catfile($_,$classModuleName), @INC ); 60 my $fullModulePath = first { -f } map( File::Spec->catfile($_,$classModuleName), @INC );
61 61
62 my @ways = map { 62 my @ways = map {
63 my @path = ($_); 63 my @path = ($_);
64 push @path,$Locale; 64 push @path,Resources->currentLocale;
65 65
66 File::Spec->catfile($_,$Locale,@classNamespace,$classShortName); 66 File::Spec->catfile($_,Resources->currentLocale,@classNamespace,$classShortName);
67 } @Locations; 67 } @Locations;
68 68
69 69
70 if ($fullModulePath) { 70 if ($fullModulePath) {
71 71
72 # '/full/path/to/Foo/Bar.pm' -> '/full/path/to/Foo' 72 # '/full/path/to/Foo/Bar.pm' -> '/full/path/to/Foo'
73 my ($vol,$dir,$file) = File::Spec->splitpath($fullModulePath); 73 my ($vol,$dir,$file) = File::Spec->splitpath($fullModulePath);
74 my $baseDir = File::Spec->catpath($vol,$dir,''); 74 my $baseDir = File::Spec->catpath($vol,$dir,'');
75 75
76 # '/full/path/to/Foo' -> '/full/path/to/Foo/locale/En_US/Bar' 76 # '/full/path/to/Foo' -> '/full/path/to/Foo/locale/En_US/Bar'
77 push @ways, File::Spec->catfile($baseDir,'locale',$Locale,$classShortName); 77 push @ways, File::Spec->catfile($baseDir,'locale',Resources->currentLocale,$classShortName);
78 } 78 }
79 79
80 my $mapFile = first { -f } @ways; 80 my $mapFile = first { -f } @ways;
81 81
82 return unless $mapFile; 82 return unless $mapFile;