Blob Blame History Raw
#!/usr/bin/perl -w

# This will create the YAML portion of the translation file from
# two sources:
#    the locale files
#    a google translation
#
# To do this, first translate the file 'dm_translate.html' at
#    http://translate.google.com/
# and paste the results into the file:
#    /tmp/translate
#
# Next set the locale in the following line, and then run the
# program.

$locale = 'tr';

##########################################################################

use DateTime::Locale;
use Encode;

my $obj = DateTime::Locale->load($locale);
my $tim = $obj->time_format_medium();

my @trans = `cat /tmp/translate`;
chomp(@trans);

while (! $trans[0]) {
   shift(@trans);
}

##########################################################################

my($hm,$ms);
if ($tim =~ /hh(.)mm/i) {
   $hm = '"[' . $1 . ']"';
}
if ($tim =~ /mm(.)ss/i) {
   $ms = '"[' . $1 . ']"';
}
print_list(1,"ampm",     $obj->am_pm_abbreviated());

###

@list = translate(\@trans);
print_list(0,"at",\@list);

###

print_list(1,"day_abb",  $obj->day_format_abbreviated(),   $obj->day_stand_alone_abbreviated());
print_list(1,"day_char", $obj->day_format_narrow(),        $obj->day_stand_alone_narrow());
print_list(1,"day_name", $obj->day_format_wide(),          $obj->day_stand_alone_wide());

###

@list = translate(\@trans);
print_list(0,"each",\@list);

@list = translate(\@trans);
print_list(0,"fields",\@list);

@list = translate(\@trans);
print_list(0,"last",\@list);

@list = translate(\@trans);
print_list(0,"mode",\@list);

###

print_list(1,"month_abb", $obj->month_format_abbreviated(), $obj->month_stand_alone_abbreviated());
print_list(1,"month_name",$obj->month_format_wide(),        $obj->month_stand_alone_wide());

###

@list = translate(\@trans);
print_list(0,"nextprev",\@list);

###

@list = translate(\@trans);
print "nth:\n";
foreach my $line (@list) {
   $line =~ s/^ \S+ ,\s* \S+ ,\s* \S+ \s+//x;
   if ($line =~ / (.*?) ,\s* (.*?) ,\s* (.*) $/x) {
      ($nth,$num,$numth) = ($1,$2,$3);
      print "  -\n";
      print "    - $nth\n";
      print "    - ''\n";
      print "    - $num\n";
      print "    - $numth\n"  if ($num ne $numth);
   } else {
      print "  -\n";
      print "    - $line\n";
   }
}

###

@list = translate(\@trans);
print_list(0,"of",\@list);

@list = translate(\@trans);
print_list(0,"offset_date",\@list);

@list = translate(\@trans);
print_list(0,"offset_time",\@list);

@list = translate(\@trans);
print_list(0,"on",\@list);

###

print_val ("sephm",$hm);
print_val ("sepms",$ms);

###

@list = translate(\@trans);
print_list(0,"times",\@list);

@list = translate(\@trans);
print_list(0,"when",\@list);

##########################################################################

sub translate {
   my($trans) = @_;

   while (! $$trans[0]) {
      shift(@$trans);
   }

   my @ret;
   while ($$trans[0]) {
      push(@ret,shift(@$trans));
   }

   return @ret;
}

sub print_val {
   my($label,$val) = @_;
   return  if (! $val);

   print "$label:\n";
   print "  - $val\n";
}

sub print_list {
   my($utf,$label,$vals,$vals2) = @_;
   my @vals;
   if (ref($vals)) {
      @vals = @$vals
   } elsif ($vals) {
      @vals = ($vals);
   }

   my @vals2;
   if (ref($vals2)) {
      @vals2 = @$vals2;
   } elsif ($vals2) {
      @vals2 = ($vals2);
   }

   print "$label:\n";

   if (@vals) {
      foreach my $val (@vals) {
         $val = encode_utf8(lc($val))  if ($utf);
         print "  -\n";

         if ($utf) {
            my $ascii = decode_utf8($val);
            $ascii    = encode("ascii",$ascii);
            if ($ascii ne $val) {
               print "    - $ascii\n";
            }
         }

         print "    - $val\n";
         if (@vals2) {
            $val2 = encode_utf8(lc(shift(@vals2)));
            if ($val2 ne $val) {
               print "    - $val2\n";
            }
         }
      }

   } else {
      print "  TRANSLATE\n";
   }
}

# Local Variables:
# mode: cperl
# indent-tabs-mode: nil
# cperl-indent-level: 3
# cperl-continued-statement-offset: 2
# cperl-continued-brace-offset: 0
# cperl-brace-offset: 0
# cperl-brace-imaginary-offset: 0
# cperl-label-offset: 0
# End: