Add script to update config/languages.yml from translatewiki language list.
This commit is contained in:
parent
d13c0e5bb8
commit
69b586a8f4
1 changed files with 52 additions and 0 deletions
52
script/locale/update-languages
Executable file
52
script/locale/update-languages
Executable file
|
@ -0,0 +1,52 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Encode;
|
||||
use HTML::TreeBuilder;
|
||||
use LWP::UserAgent;
|
||||
use YAML::Syck;
|
||||
|
||||
$YAML::Syck::Headless = 1;
|
||||
$YAML::Syck::ImplicitUnicode = 1;
|
||||
$YAML::Syck::SortKeys = 1;
|
||||
|
||||
my $languages = LoadFile("config/languages.yml");
|
||||
|
||||
my $ua = LWP::UserAgent->new(env_proxy => 1);
|
||||
my $response = $ua->get("http://translatewiki.net/wiki/User:Siebrand/langs?uselang=en");
|
||||
|
||||
die $response->message unless $response->is_success;
|
||||
|
||||
my $root = HTML::TreeBuilder->new_from_content($response->decoded_content);
|
||||
my $content = $root->look_down("_tag" => "div", "id" => "mw_contentholder");
|
||||
my $list = $content->look_down("_tag" => "ul");
|
||||
|
||||
for my $item ($list->look_down("_tag" => "li"))
|
||||
{
|
||||
my $language = $item->as_trimmed_text;
|
||||
|
||||
if ($language =~ /^([a-z]+(?:-[a-z]+)*) +- +(.*) +- +(.*)$/i)
|
||||
{
|
||||
my $code = $1;
|
||||
my $english_name = decode_utf8($2);
|
||||
my $native_name = decode_utf8($3);
|
||||
|
||||
next if $english_name =~ /\(deprecated:[a-z]+(?:-[a-z]+)*\)$/;
|
||||
|
||||
if (length($code) == 2 || -f "config/locales/${code}.yml")
|
||||
{
|
||||
$languages->{$code}->{english} = $english_name;
|
||||
$languages->{$code}->{native} = $native_name;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Can't parse: $language";
|
||||
}
|
||||
}
|
||||
|
||||
DumpFile("config/languages.yml", $languages);
|
||||
|
||||
exit 0;
|
Loading…
Add table
Add a link
Reference in a new issue