source: trunk/gsdl/perllib/lang.pm@ 59

Last change on this file since 59 was 4, checked in by sjboddie, 26 years ago

Initial revision

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 KB
Line 
1# this module translates language descriptions to and from
2# the ISO 639 standard
3
4package lang;
5
6@trans = (["ab", "Abkhazian"], ["om", "Afan Oromo"],
7 ["om", "Oromo"], ["aa", "Afar"],
8 ["af", "Afrikaans"], ["sq", "Albanian"],
9 ["am", "Amharic"], ["ar", "Arabic"],
10 ["hy", "Armenian"], ["as", "Assamese"],
11 ["ay", "Aymara"], ["az", "Azerbaijani"],
12
13 ["ba", "Bashkir"], ["eu", "Basque"],
14 ["bn", "Bengali"], ["bn", "Bangla"],
15 ["dz", "Bhutani"], ["bh", "Bihari"],
16 ["bi", "Bislama"], ["br", "Breton"],
17 ["bg", "Bulgarian"], ["my", "Burmese"],
18 ["be", "Byelorussian"],
19
20 ["km", "Cambodian"], ["ca", "Catalan"],
21 ["zh", "Chinese"], ["co", "Corsican"],
22 ["hr", "Croatian"], ["cs", "Czech"],
23
24 ["da", "Danish"], ["nl", "Dutch"],
25
26 ["en", "English"], ["eo", "Esperanto"],
27 ["et", "Estonian"], ["fo", "Faroese"],
28 ["fj", "Fijian"], ["fi", "Finnish"],
29 ["fr", "French"], ["fy", "Frisian"],
30
31 ["gl", "Galician"], ["ka", "Georgian"],
32 ["de", "German"], ["el", "Greek"],
33 ["kl", "Greenlandic"], ["gn", "Guarani"],
34 ["gu", "Gujarati"],
35
36 ["ha", "Hausa"], ["iw", "Hebrew"],
37 ["hi", "Hindi"], ["hu", "Hungarian"],
38
39 ["is", "Icelandic"], ["in", "Indonesian"],
40 ["ia", "Interlingua"], ["ie", "Interlingue"],
41 ["ik", "Inupiak"], ["ga", "Irish"],
42 ["it", "Italian"],
43
44 ["ja", "Japanese"], ["jv", "Javanese"],
45
46 ["kn", "Kannada"], ["ks", "Kashmiri"],
47 ["kk", "Kazakh"], ["rw", "Kinyarwanda"],
48 ["ky", "Kirghiz"], ["rn", "Kirundi"],
49 ["ko", "Korean"], ["ku", "Kurdish"],
50
51 ["lo", "Laothian"], ["la", "Latin"],
52 ["lv", "Latvian"], ["lv", "Lettish"],
53 ["ln", "Lingala"], ["lt", "Lithuanian"],
54
55 ["mk", "Macedonian"], ["mg", "Malagasy"],
56 ["ms", "Malay"], ["ml", "Malayalam"],
57 ["mt", "Maltese"], ["mi", "Maori"],
58 ["mr", "Marathi"], ["mo", "Moldavian"],
59 ["mn", "Mongolian"],
60
61 ["na", "Nauru"], ["ne", "Nepali"],
62 ["no", "Norwegian"],
63
64 ["oc", "Occitan"], ["or", "Oriya"],
65
66 ["ps", "Pashto"], ["ps", "Pushto"],
67 ["fa", "Persian"], ["pl", "Polish"],
68 ["pt", "Portuguese"], ["pa", "Punjabi"],
69
70 ["qu", "Quechua"],
71
72 ["rm", "Rhaeto-Romance"], ["ro", "Romanian"],
73 ["ru", "Russian"],
74
75 ["sm", "Samoan"], ["sg", "Sangho"],
76 ["sa", "Sanskrit"], ["gd", "Scots Gaelic"],
77 ["sr", "Serbian"], ["sh", "Serbo-Croatian"],
78 ["st", "Sesotho"], ["tn", "Setswana"],
79 ["sn", "Shona"], ["sd", "Sindhi"],
80 ["si", "Singhalese"], ["ss", "Siswati"],
81 ["sk", "Slovak"], ["sl", "Slovenian"],
82 ["so", "Somali"], ["es", "Spanish"],
83 ["su", "Sundanese"], ["sw", "Swahili"],
84 ["sv", "Swedish"],
85
86 ["tl", "Tagalog"], ["tg", "Tajik"],
87 ["ta", "Tamil"], ["tt", "Tatar"],
88 ["te", "Telugu"], ["th", "Thai"],
89 ["bo", "Tibetan"], ["ti", "Tigrinya"],
90 ["to", "Tonga"], ["ts", "Tsonga"],
91 ["tr", "Turkish"], ["tk", "Turkmen"],
92 ["tw", "Twi"],
93
94 ["uk", "Ukrainian"], ["ur", "Urdu"],
95 ["uz", "Uzbek"],
96
97 ["vi", "Vietnamese"], ["vo", "Volapuk"],
98
99 ["cy", "Welsh"], ["wo", "Wolof"],
100
101 ["xh", "Xhosa"],
102
103 ["ji", "Yiddish"], ["yo", "Yoruba"],
104
105 ["zu", "Zulu"]);
106
107
108sub one_english_to_iso639 {
109 my ($english) = @_;
110 my $iso639 = "";
111
112 foreach $lang (@trans) {
113 my $code = $lang->[0];
114 my $enname = $lang->[1];
115 if ($english =~ /\s*($code|$enname)\s*$/i) {
116 # found the language
117 $iso639 = $code;
118 last;
119
120 }
121 }
122
123 return $iso639;
124}
125
126
127sub english_to_iso639 {
128 my ($englishlist) = @_;
129 my ($english);
130
131 my @englishlist = split (",", $englishlist);
132 my @iso639list = ();
133
134 foreach $english (@englishlist) {
135 push (@iso639list, &one_english_to_iso639($english));
136 }
137
138 return join (",", @iso639list);
139}
140
141
142sub one_iso639_to_english {
143 my ($iso639) = @_;
144 my $english = "";
145
146 foreach $lang (@trans) {
147 my $code = $lang->[0];
148 my $enname = $lang->[1];
149 if ($iso639 =~ /\s*($code|$enname)\s*$/i) {
150 # found the language
151 $english = $enname;
152 last;
153
154 }
155 }
156
157 return $enname;
158}
159
160
161sub iso639_to_english {
162 my ($iso639list) = @_;
163 my ($iso639);
164
165 my @iso639list = split (",", $iso639list);
166 my @englishlist = ();
167
168 foreach $iso639 (@iso639list) {
169 push (@englishlist, &one_iso639_to_english($iso639));
170 }
171
172 return join (",", @englishlist);
173}
174
175
1761;
Note: See TracBrowser for help on using the repository browser.