home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-2 / Inter.Net 55-2.iso / Mandrake / mdkinst / usr / bin / perl-install / timezone.pm < prev    next >
Encoding:
Perl POD Document  |  2000-01-12  |  3.0 KB  |  107 lines

  1. package timezone;
  2.  
  3.  
  4.  
  5.  
  6. use common qw(:common :system);
  7. use commands;
  8. use log;
  9.  
  10.  
  11. sub getTimeZones {
  12.     my ($prefix) = @_;
  13.     local *F;
  14.     open F, "cd $prefix/usr/share/zoneinfo && find [A-Z]* -type f |";
  15.     my @l = sort map { chop; $_ } <F>;
  16.     close F or die "cannot list the available zoneinfos";
  17.     @l;
  18. }
  19.  
  20. sub read ($) {
  21.     my ($f) = @_;
  22.     my %t = getVarsFromSh($f) or die "cannot open file $f: $!";
  23.  
  24.     ("timezone", $t{ZONE}, "UTC", text2bool($t{UTC}));
  25. }
  26.  
  27. sub write($$$) {
  28.     my ($prefix, $t, $f) = @_;
  29.  
  30.     eval { commands::cp("-f", "$prefix/usr/share/zoneinfo/$t->{timezone}", "$prefix/etc/localtime") };
  31.     $@ and log::l("installing /etc/localtime failed");
  32.     setVarsInSh($f, {
  33.     ZONE => $t->{timezone},
  34.     UTC  => bool2text($t->{UTC}),
  35.     ARC  => "false",
  36.     });
  37. }
  38.  
  39. my %l2t = (
  40. 'Brezhoneg (Brittany)' => 'Europe/Paris',
  41. 'Chinese (China)' => 'Asia/Shanghai',
  42. 'Danish (Denmark)' => 'Europe/Copenhagen',
  43. 'Dutch (Netherlands)' => 'Europe/Amsterdam',
  44. 'English (USA)' => 'America/New_York',
  45. 'English (UK)' => 'Europe/London',
  46. 'Esperanto' => 'Europe/Warsaw',
  47. 'Estonian (Estonia)' => 'Europe/Tallinn',
  48. 'Finnish (Finland)' => 'Europe/Helsinki',
  49. 'French (France)' => 'Europe/Paris',
  50. 'French (Belgium)' => 'Europe/Brussels',
  51. 'French (Canada)' => 'Canada/Atlantic', # or Newfoundland ? or Eastern ?
  52. 'Gaeilge (Ireland)' => 'Europe/Dublin',
  53. 'German (Germany)' => 'Europe/Berlin',
  54. 'Greek (Greece)' => 'Europe/Athens',
  55. 'Hungarian (Hungary)' => 'Europe/Budapest',
  56. 'Icelandic (Iceland)' => 'Atlantic/Reykjavik',
  57. 'Indonesian (Indonesia)' => 'Asia/Jakarta',
  58. 'Italian (Italy)' => 'Europe/Rome',
  59. 'Italian (San Marino)' => 'Europe/San_Marino',
  60. 'Italian (Vatican)' => 'Europe/Vatican',
  61. 'Italian (Switzerland)' => 'Europe/Zurich',
  62. 'Japanese (Japon)' => 'Asia/Tokyo',
  63. 'Korean (Korea)' => 'Asia/Seoul',
  64. 'Latvian (Latvia)' => 'Europe/Riga',
  65. 'Lithuanian (Lithuania)' => 'Europe/Vilnius',
  66. 'Norwegian (Bokmaal)' => 'Europe/Oslo',
  67. 'Norwegian (Nynorsk)' => 'Europe/Oslo',
  68. 'Polish (Poland)' => 'Europe/Warsaw',
  69. 'Portuguese (Brazil)' => 'Brazil/East', # most people live on the east coast
  70. 'Portuguese (Portugal)' => 'Europe/Lisbon',
  71. 'Romanian (Rumania)' => 'Europe/Bucharest',
  72. 'Russian (Russia)' => 'Europe/Moscow',
  73. 'Serbian (Serbia)' => 'Europe/Belgrade',
  74. 'Slovak (Slovakia)' => 'Europe/Bratislava',
  75. 'Spanish (Spain)' => 'Europe/Madrid',
  76. 'Swedish (Finland)' => 'Europe/Helsinki',
  77. 'Swedish (Sweden)' => 'Europe/Stockholm',
  78. 'Thai (Thailand)' => 'Asia/Bangkok',
  79. 'Turkish (Turkey)' => 'Europe/Istanbul',
  80. 'Ukrainian (Ukraine)' => 'Europe/Kiev',
  81. 'Walon (Belgium)' => 'Europe/Brussels',
  82. );
  83.  
  84. sub bestTimezone {
  85.     my ($langtext) = @_;
  86.     $l2t{common::bestMatchSentence($langtext, keys %l2t)};
  87. }
  88.  
  89. my %sex = (
  90. fr_FR => { '[iln]a$' => 1, '[cdilnst]e$' => 1, 'e$' => .8, 'n$' => .1, 'd$' => .05, 't$' => 0 },
  91. en => { 'a$' => 1, 'o$' => 0, '[ln]$' => .3, '[rs]$' => .2 },
  92. );
  93.  
  94.  
  95. sub sexProb($) {
  96.     local ($_) = @_;
  97.     my $l = $sex{$ENV{LC_ALL}} or return 0.5;
  98.  
  99.     my ($prob, $nb) = (0, 0);
  100.     foreach my $k (keys %$l) {
  101.     /$k/ and $prob += $l->{$k}, $nb++;
  102.     }
  103.     $nb ? $prob / $nb : 0.5;
  104. }
  105.  
  106. 1;
  107.