From: Chris W. <la...@us...> - 2005-01-25 04:14:44
|
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 * |