regenerate_documentlanguages.pl 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #! /usr/bin/perl -w
  2. use strict;
  3. system ("wget -N http://www.iana.org/assignments/language-subtag-registry");
  4. open (TXT,"language-subtag-registry") or die "Open language-subtag-registry: $!\n";
  5. my $entry;
  6. my @entries;
  7. while (<TXT>)
  8. {
  9. if (/^%%/)
  10. {
  11. push @entries, $entry if (defined($entry));
  12. $entry = undef;
  13. }
  14. else
  15. {
  16. if (/^(\w+): (.*)/)
  17. {
  18. $entry->{$1} = $2;
  19. }
  20. }
  21. }
  22. open (OUT, ">documentlanguages.pl") or die "Open documentlanguages.pl: $!\n";
  23. print OUT '%language_codes = ('."\n";
  24. foreach my $entry (@entries)
  25. {
  26. # Scope collection macrolanguage are used
  27. if ($entry->{'Type'} eq 'language' and !defined($entry->{'Preferred-Value'})
  28. and !defined($entry->{'Macrolanguage'}) and
  29. (!defined($entry->{'Scope'}) or ($entry->{'Scope'} ne 'special' and
  30. $entry->{'Scope'} ne 'private-use')))
  31. {
  32. print OUT "'$entry->{'Subtag'}' => 1,\n";
  33. print STDERR "$entry->{'Subtag'} Scope $entry->{'Scope'}\n" if defined($entry->{'Scope'});
  34. }
  35. }
  36. print OUT ");\n\n";
  37. print OUT '%region_codes = ('."\n";
  38. foreach my $entry (@entries)
  39. {
  40. if ($entry->{'Type'} eq 'region' and !defined($entry->{'Preferred-Value'})
  41. and $entry->{'Description'} ne 'Private use' and $entry->{'Subtag'} !~ /^\d{3}$/)
  42. {
  43. print OUT "'$entry->{'Subtag'}' => 1,\n";
  44. }
  45. }
  46. print OUT ");\n\n";