46
|
1 use strict;
|
|
2 use warnings;
|
|
3
|
|
4 package IMPL::Resources::Strings::Storage;
|
|
5 package IMPL::Resources::Strings;
|
|
6 use File::Spec;
|
|
7
|
|
8 our $Locale ||= 'default';
|
|
9 our $Base ||='locale';
|
|
10 our $Encoding ||= 'utf-8';
|
|
11 our @Locations;
|
|
12
|
|
13 @Locations = ('.') unless @Locations;
|
|
14
|
|
15 sub import {
|
|
16 my ($self,$refStrings,%options) = @_;
|
|
17
|
|
18 my ($class,$pathModule) = caller;
|
|
19
|
|
20 my ($vol,$dir,$file) = File::Spec->splitpath($pathModule);
|
|
21 my $baseDir = File::Spec->catpath($vol,$dir,'');
|
|
22
|
|
23 my @pathClass = split /::/,$class;
|
|
24 my $fileClass = pop @pathClass;
|
|
25
|
|
26 my @ways = map {
|
|
27 my @path = ($_);
|
|
28 push @path,$Base;
|
|
29 push @path,$Locale;
|
|
30
|
|
31 File::Spec->catfile(@path,@pathClass,$fileClass);
|
|
32 } @Locations;
|
|
33
|
|
34 push @ways, File::Spec->catfile($baseDir,'locale',$Locale,$fileClass);
|
|
35
|
|
36
|
|
37
|
|
38 my $stringsStorage = findResource(@Locations,$Base,$Locale,)
|
|
39
|
|
40 }
|
|
41
|
|
42 sub findResource {
|
|
43 my (@locations,$file,%options) = @_;
|
|
44
|
|
45
|
|
46 }
|
|
47
|
|
48
|
|
49
|
|
50 sub parseResource {
|
|
51 my ($fname) = @_;
|
|
52
|
|
53 open my $hRes, "<:encoding($Encoding)", findFile($fname) or die "Failed to open file $fname: $!";
|
|
54
|
|
55 my %Map;
|
|
56 my $line = 1;
|
|
57 while (<$hRes>) {
|
|
58 chomp;
|
|
59 $line ++ and next if /^\s*$/;
|
|
60
|
|
61 if (/^(\w+)\s*=\s*(.*)$/) {
|
|
62 $Map{$1} = $2;
|
|
63 } else {
|
|
64 die "Invalid resource format in $fname at $line";
|
|
65 }
|
|
66 $line ++;
|
|
67 }
|
|
68
|
|
69 return \%Map;
|
|
70 }
|
|
71
|
|
72 package IMPL::Resources::Strings::Storage;
|
|
73 use base qw(IMPL::Object);
|
|
74
|
|
75 sub get {
|
|
76 my ($this,$msg_name) = @_;
|
|
77 }
|
|
78 1;
|
|
79
|
|
80 __END__
|
|
81
|
|
82 =pod
|
|
83
|
|
84 =head1 SYNOPSIS
|
|
85
|
|
86 package Foo;
|
|
87
|
|
88 use IMPL::Resources::Strings {
|
|
89 msg_say_hello => "Hello, %name!",
|
|
90 msg_module_name => "Simple Foo class"
|
|
91 }, auto => 1, locale => 'en-us';
|
|
92
|
|
93 sub InviteUser {
|
|
94 my ($this,$uname) = @_;
|
|
95
|
|
96 print msg_say_hello(name => $uname);
|
|
97
|
|
98 }
|
|
99
|
|
100 =cut |