summaryrefslogtreecommitdiffstats
path: root/lib/Locale/Po4a/Ini.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Locale/Po4a/Ini.pm')
-rw-r--r--lib/Locale/Po4a/Ini.pm120
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