i18n-update.pl 802 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/perl
  2. @ARGV >= 1 || die "Usage: $0 <po directory> [<file pattern>]\n";
  3. my $source = shift @ARGV;
  4. my $pattern = shift @ARGV || '*.po';
  5. sub fixup_header_order
  6. {
  7. my $file = shift || return;
  8. local $/;
  9. open P, "< $file" || die "open(): $!";
  10. my $data = readline P;
  11. close P;
  12. $data =~ s/("Language-Team: .*?\\n"\n)(.+?)("Language: .*?\\n"\n)/$1$3$2/s;
  13. open P, "> $file" || die "open(): $!";
  14. print P $data;
  15. close P;
  16. }
  17. if( open F, "find $source -type f -name '$pattern' |" )
  18. {
  19. while( chomp( my $file = readline F ) )
  20. {
  21. my ( $basename ) = $file =~ m{.+/([^/]+)\.po$};
  22. if( -f "$source/templates/$basename.pot" )
  23. {
  24. printf "Updating %-40s", $file;
  25. system("msgmerge", "-U", "-N", $file, "$source/templates/$basename.pot");
  26. fixup_header_order($file);
  27. }
  28. }
  29. close F;
  30. }