diff options
author | plegall <plg@piwigo.org> | 2010-09-28 00:18:39 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2010-09-28 00:18:39 +0000 |
commit | 601f855ef5525111188518d189b95ce75a6056bc (patch) | |
tree | da8cb2f6628876b1c38d24a42944688d6f4021fb /tools/replace_language_keys.pl | |
parent | c6a5f13d2307757a0328f9c8fac340938a17f90d (diff) |
feature 1616: add a tool to replace language keys from a mapping file + replace values from a template file
git-svn-id: http://piwigo.org/svn/trunk@7026 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to '')
-rw-r--r-- | tools/replace_language_keys.pl | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tools/replace_language_keys.pl b/tools/replace_language_keys.pl new file mode 100644 index 000000000..822b3e1cc --- /dev/null +++ b/tools/replace_language_keys.pl @@ -0,0 +1,60 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +my $replacement_file = $ARGV[0]; +my $language_dir = $ARGV[1]; + +# load the replacements +my %replace_by = (); +open(my $ifh_rep, '<'.$replacement_file); +while (<$ifh_rep>) { + if (m/^\$lang\['(.*)'\] \s* = \s* (['"])(.*)\2;/x) { + if ($1 ne $3 and length($1) > 0) { + $replace_by{$1} = $3; + } + } +} +# use Data::Dumper; print Dumper(\%replace_by); exit(); + +my $append_to_common = ''; + +foreach my $file_code (qw/upgrade install admin common plugin/) { + my $filename = $language_dir.'/'.$file_code.'.lang.php'; + # print $filename; + if (not -f $filename) { + # print ' is missing', "\n"; + next; + } + print $filename.' is under process', "\n"; + + my $file_content = ''; + + open(my $ifh, '<'.$filename); + while (my $line = <$ifh>) { + if ($line =~ m/^\$lang\['(.*)'\] \s* =/x) { + if (defined $replace_by{$1}) { + my $search = quotemeta($1); + my $replace = $replace_by{$1}; + + $line =~ s{$search}{$replace}; + $file_content.= $line; + } + else { + $file_content.= $line; + } + } + elsif ($line =~ m/^?>/) { + $file_content.= $line; + } + else { + $file_content.= $line; + } + } + close($ifh); + + open(my $ofh, '>'.$filename); + print {$ofh} $file_content; + close($ofh); +} |