diff options
Diffstat (limited to 'lib/Locale/Po4a/Ini.pm')
-rw-r--r-- | lib/Locale/Po4a/Ini.pm | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/lib/Locale/Po4a/Ini.pm b/lib/Locale/Po4a/Ini.pm new file mode 100644 index 0000000..f29cd11 --- /dev/null +++ b/lib/Locale/Po4a/Ini.pm @@ -0,0 +1,120 @@ +# Locale::Po4a::Ini -- Convert ini files to PO file, for translation. +# +# This program is free software; you may redistribute it and/or modify it +# under the terms of GPL v2.0 or later (see COPYING). +# + +############################################################################ +# Modules and declarations +############################################################################ + +use Locale::Po4a::TransTractor qw(process new); +use Locale::Po4a::Common; + +package Locale::Po4a::Ini; + +use 5.16.0; +use strict; +use warnings; + +require Exporter; + +use vars qw(@ISA @EXPORT $AUTOLOAD); +@ISA = qw(Locale::Po4a::TransTractor); +@EXPORT = qw(); + +my $debug = 0; + +sub initialize { } + +sub parse { + my $self = shift; + my ( $line, $ref ); + my $par; + + LINE: + ( $line, $ref ) = $self->shiftline(); + + while ( defined($line) ) { + chomp($line); + print STDERR "begin\n" if $debug; + + if ( $line =~ /\"/ ) { + print STDERR "Start of line containing \".\n" if $debug; + + # Text before the first quote + $line =~ m/(^[^"\r\n]*)"/; + my $pre_text = $1; + print STDERR " PreText=" . $pre_text . "\n" if $debug; + + # The text for translation + $line =~ m/"([^\r\n]*)"/; + my $quoted_text = $1; + print STDERR " QuotedText=" . $quoted_text . "\n" if $debug; + + # Text after last quote + $line =~ m/"([^"\n]*$)/; + my $post_text = $1; + print STDERR " PostText=" . $post_text . "\n" if $debug; + + # Translate the string it + $par = $self->translate( $quoted_text, $ref, $pre_text ); + + # Escape the \n characters + $par =~ s/\n/\\n/g; + + # Now push the result + $self->pushline( $pre_text . '"' . $par . '"' . $post_text . "\n" ); + print STDERR "End of line containing \".\n" if $debug; + } else { + print STDERR "Other stuff\n" if $debug; + $self->pushline("$line\n"); + } + + # Reinit the loop + ( $line, $ref ) = $self->shiftline(); + } +} + +############################################################################## +# Module return value and documentation +############################################################################## + +1; +__END__ + +=encoding UTF-8 + +=head1 NAME + +Locale::Po4a::Ini - convert INI files from/to PO files + +=head1 DESCRIPTION + +Locale::Po4a::Ini is a module to help the translation of INI files into other +[human] languages. + +The module searches for lines of the following format and extracts the quoted +text: + +identificator="text than can be translated" + +NOTE: If the text is not quoted, it will be ignored. + +=head1 SEE ALSO + +L<Locale::Po4a::TransTractor(3pm)>, L<po4a(7)|po4a.7> + +=head1 AUTHORS + + Razvan Rusu <rrusu@bitdefender.com> + Costin Stroie <cstroie@bitdefender.com> + +=head1 COPYRIGHT AND LICENSE + +Copyright © 2006 BitDefender + +This program is free software; you may redistribute it and/or modify it +under the terms of GPL v2.0 or later (see the COPYING file). + +=cut |