What part of working on it are you not getting? or is there another problem you're not saying?
To solve the Timezone issue: In Admin/Settings_Main.pm find
load_language('Countries');
my @mycntry =
sort { $countrytime_txt{$a} cmp $countrytime_txt{$b} }
keys %countrytime_txt;
foreach my $i (@mycntry) {
$tz_select .=
qq~<option value="$i" ${isselected($i eq $mytz)}>$countrytime_txt{$i}</option>~;
}
replace with
my @mycntry = DateTime::TimeZone->all_names();
foreach my $i (@mycntry) {
my $counttime = $i;
$counttime =~ s/_/ /gxsm;
$tz_select .=
qq~<option value="$i"${isselected($i eq $mytz)}>$counttime</option>\n~;
}
In Sources/Profiles.pm find
load_language('Countries');
my $mytz = ${ $uid . $user }{'user_tz'} || $default_tz;
my @mycntry =
sort { $countrytime_txt{$a} cmp $countrytime_txt{$b} }
keys %countrytime_txt;
$user_tz_select = q~<br /><select name="user_tz" id="user_tz">~;
$user_tz_select .=
qq~<option value="UTC"${isselected($mytz eq 'UTC')}>UTC</option>~;
foreach my $i (@mycntry) {
$user_tz_select .=
qq~<option value="$i"${isselected($mytz eq $i)}>$countrytime_txt{$i}</option>~;
}
replace with
my $mytz = ${ $uid . $user }{'user_tz'} || $default_tz;
my @mycntry = DateTime::TimeZone->all_names();
$user_tz_select = q~<br /><select name="user_tz" id="user_tz">~;
foreach my $i (@mycntry) {
my $counttime = $i;
$counttime =~ s/_/ /gxsm;
$user_tz_select .=
qq~<option value="$i"${isselected($mytz eq $i)}>$counttime</option>~;
}
This completely negates the need for the Countries.lng file. The available time zones are in English only and are fully dependent on the Perl DateTime::TimeZones module.