Update of /cvsroot/openinteract/OpenInteract2/lib/OpenInteract2/I18N
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28817/OpenInteract2/I18N
Modified Files:
Initializer.pm
Log Message:
OIN-105: check name of all message files in a package in 'check()'; move language extraction code to I18N initialization module
Index: Initializer.pm
===================================================================
RCS file: /cvsroot/openinteract/OpenInteract2/lib/OpenInteract2/I18N/Initializer.pm,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** Initializer.pm 24 Jan 2005 17:03:20 -0000 1.9
--- Initializer.pm 25 Jan 2005 04:03:20 -0000 1.10
***************
*** 22,25 ****
--- 22,38 ----
}
+ # This may be really naive...
+ # should match: en | en-US | en_US
+
+ sub is_valid_message_file {
+ my ( $class, $filename ) = @_;
+ $log ||= get_logger( LOG_OI );
+ my ( $lang ) = $filename =~ m/\b(\w\w|\w\w\-\w+|\w\w_\w+)\.\w+$/;
+ $log->is_debug &&
+ $log->debug( "Pulled language '$lang' from file '$filename'" );
+ return $lang;
+
+ }
+
sub add_message_files {
my ( $self, @files ) = @_;
***************
*** 59,73 ****
MSGFILE:
foreach my $msg_file ( @{ $self->{_files} } ) {
! $log->is_info &&
! $log->info( "Reading messages from file '$msg_file'" );
!
! # This may throw an exception, let it bubble up...
! my $messages = $self->_read_messages( $msg_file );
!
! # This may be really naive...
! # en | en-US | en_US
! my ( $lang ) = $msg_file =~ m/\b(\w\w|\w\w\-\w+|\w\w_\w+)\.\w+$/;
! $log->is_debug &&
! $log->debug( "Using language '$lang' for file '$msg_file'" );
unless ( $lang ) {
oi_error "Cannot identify language from message file ",
--- 72,76 ----
MSGFILE:
foreach my $msg_file ( @{ $self->{_files} } ) {
! my $lang = $self->is_valid_message_file( $msg_file );
unless ( $lang ) {
oi_error "Cannot identify language from message file ",
***************
*** 76,79 ****
--- 79,88 ----
"'myapp-en.msg', 'MyReallyBigApp-es-MX.dat'";
}
+ $log->is_info &&
+ $log->info( "Reading messages from file '$msg_file'" );
+
+ # This may throw an exception, let it bubble up...
+ my $messages = $self->_read_messages( $msg_file );
+
$lang_msg{ $lang } ||= {};
foreach my $msg_key ( keys %{ $messages } ) {
***************
*** 103,106 ****
--- 112,116 ----
}
+
########################################
# private methods below here
***************
*** 259,262 ****
--- 269,295 ----
Return a new object. Any parameters are ignored.
+ B<is_valid_message_file( $filename )>
+
+ If C<$filename> is a valid message file this returns the language from
+ the filename, otherwise it returns false.
+
+ The language must be the last distinct set of characters before the
+ file extension. (Distinct in the '\b' regex sense.) The following are
+ ok:
+
+ myapp-en.msg
+ myotherapp-en-MX.dat
+ messages_en-HK.msg
+
+ The following are not:
+
+ english-messages.msg
+ messages-en-part2.msg
+ messagesen.msg
+
+ Currently we assume the base language identifier is two characters
+ (e.g., 'en', 'jp', 'ru') and the extension (e.g., 'US', 'CA', 'MX')
+ can by any number of characters. This may be wildly naive.
+
=head1 OBJECT METHODS
***************
*** 323,339 ****
=item *
! Cannot discern a language from the given filename. The language must
! be the last distinct set of characters before the file extension. The
! following are ok:
!
! myapp-en.msg
! myotherapp-en-MX.dat
! messages_en-HK.msg
!
! The following are not:
!
! english-messages.msg
! messages-en-part2.msg
! messagesen.msg
=item *
--- 356,361 ----
=item *
! Cannot discern a language from the given filename. See
! C<is_valid_message_file()> for more.
=item *
|