]> git.mxchange.org Git - friendica.git/blob - library/langdet/Text/LanguageDetect/ISO639.php
Merge branch 'vagrant2' of https://github.com/silke/friendica into develop
[friendica.git] / library / langdet / Text / LanguageDetect / ISO639.php
1 <?php
2 /**
3  * Part of Text_LanguageDetect
4  *
5  * PHP version 5
6  *
7  * @category  Text
8  * @package   Text_LanguageDetect
9  * @author    Christian Weiske <cweiske@php.net>
10  * @copyright 2011 Christian Weiske <cweiske@php.net>
11  * @license   http://www.debian.org/misc/bsd.license BSD
12  * @link      http://pear.php.net/package/Text_LanguageDetect/
13  */
14
15 /**
16  * Provides a mapping between the languages from lang.dat and the
17  * ISO 639-1 and ISO-639-2 codes.
18  *
19  * Note that this class contains only languages that exist in lang.dat.
20  *
21  * @category  Text
22  * @package   Text_LanguageDetect
23  * @author    Christian Weiske <cweiske@php.net>
24  * @copyright 2011 Christian Weiske <cweiske@php.net>
25  * @license   BSD http://www.opensource.org/licenses/bsd-license.php
26  * @link      http://www.loc.gov/standards/iso639-2/php/code_list.php
27  */
28 class Text_LanguageDetect_ISO639
29 {
30     /**
31      * Maps all language names from the language database to the
32      * ISO 639-1 2-letter language code.
33      *
34      * NULL indicates that there is no 2-letter code.
35      *
36      * @var array
37      */
38     public static $nameToCode2 = array(
39         'albanian'   => 'sq',
40         'arabic'     => 'ar',
41         'azeri'      => 'az',
42         'bengali'    => 'bn',
43         'bulgarian'  => 'bg',
44         'cebuano'    => null,
45         'croatian'   => 'hr',
46         'czech'      => 'cs',
47         'danish'     => 'da',
48         'dutch'      => 'nl',
49         'english'    => 'en',
50         'estonian'   => 'et',
51         'farsi'      => 'fa',
52         'finnish'    => 'fi',
53         'french'     => 'fr',
54         'german'     => 'de',
55         'hausa'      => 'ha',
56         'hawaiian'   => null,
57         'hindi'      => 'hi',
58         'hungarian'  => 'hu',
59         'icelandic'  => 'is',
60         'indonesian' => 'id',
61         'italian'    => 'it',
62         'kazakh'     => 'kk',
63         'kyrgyz'     => 'ky',
64         'latin'      => 'la',
65         'latvian'    => 'lv',
66         'lithuanian' => 'lt',
67         'macedonian' => 'mk',
68         'mongolian'  => 'mn',
69         'nepali'     => 'ne',
70         'norwegian'  => 'no',
71         'pashto'     => 'ps',
72         'pidgin'     => null,
73         'polish'     => 'pl',
74         'portuguese' => 'pt',
75         'romanian'   => 'ro',
76         'russian'    => 'ru',
77         'serbian'    => 'sr',
78         'slovak'     => 'sk',
79         'slovene'    => 'sl',
80         'somali'     => 'so',
81         'spanish'    => 'es',
82         'swahili'    => 'sw',
83         'swedish'    => 'sv',
84         'tagalog'    => 'tl',
85         'turkish'    => 'tr',
86         'ukrainian'  => 'uk',
87         'urdu'       => 'ur',
88         'uzbek'      => 'uz',
89         'vietnamese' => 'vi',
90         'welsh'      => 'cy',
91     );
92
93     /**
94      * Maps all language names from the language database to the
95      * ISO 639-2 3-letter language code.
96      *
97      * @var array
98      */
99     public static $nameToCode3 = array(
100         'albanian'   => 'sqi',
101         'arabic'     => 'ara',
102         'azeri'      => 'aze',
103         'bengali'    => 'ben',
104         'bulgarian'  => 'bul',
105         'cebuano'    => 'ceb',
106         'croatian'   => 'hrv',
107         'czech'      => 'ces',
108         'danish'     => 'dan',
109         'dutch'      => 'nld',
110         'english'    => 'eng',
111         'estonian'   => 'est',
112         'farsi'      => 'fas',
113         'finnish'    => 'fin',
114         'french'     => 'fra',
115         'german'     => 'deu',
116         'hausa'      => 'hau',
117         'hawaiian'   => 'haw',
118         'hindi'      => 'hin',
119         'hungarian'  => 'hun',
120         'icelandic'  => 'isl',
121         'indonesian' => 'ind',
122         'italian'    => 'ita',
123         'kazakh'     => 'kaz',
124         'kyrgyz'     => 'kir',
125         'latin'      => 'lat',
126         'latvian'    => 'lav',
127         'lithuanian' => 'lit',
128         'macedonian' => 'mkd',
129         'mongolian'  => 'mon',
130         'nepali'     => 'nep',
131         'norwegian'  => 'nor',
132         'pashto'     => 'pus',
133         'pidgin'     => 'crp',
134         'polish'     => 'pol',
135         'portuguese' => 'por',
136         'romanian'   => 'ron',
137         'russian'    => 'rus',
138         'serbian'    => 'srp',
139         'slovak'     => 'slk',
140         'slovene'    => 'slv',
141         'somali'     => 'som',
142         'spanish'    => 'spa',
143         'swahili'    => 'swa',
144         'swedish'    => 'swe',
145         'tagalog'    => 'tgl',
146         'turkish'    => 'tur',
147         'ukrainian'  => 'ukr',
148         'urdu'       => 'urd',
149         'uzbek'      => 'uzb',
150         'vietnamese' => 'vie',
151         'welsh'      => 'cym',
152     );
153
154     /**
155      * Maps ISO 639-1 2-letter language codes to the language names
156      * in the language database
157      *
158      * Not all languages have a 2 letter code, so some are missing
159      *
160      * @var array
161      */
162     public static $code2ToName = array(
163         'ar' => 'arabic',
164         'az' => 'azeri',
165         'bg' => 'bulgarian',
166         'bn' => 'bengali',
167         'cs' => 'czech',
168         'cy' => 'welsh',
169         'da' => 'danish',
170         'de' => 'german',
171         'en' => 'english',
172         'es' => 'spanish',
173         'et' => 'estonian',
174         'fa' => 'farsi',
175         'fi' => 'finnish',
176         'fr' => 'french',
177         'ha' => 'hausa',
178         'hi' => 'hindi',
179         'hr' => 'croatian',
180         'hu' => 'hungarian',
181         'id' => 'indonesian',
182         'is' => 'icelandic',
183         'it' => 'italian',
184         'kk' => 'kazakh',
185         'ky' => 'kyrgyz',
186         'la' => 'latin',
187         'lt' => 'lithuanian',
188         'lv' => 'latvian',
189         'mk' => 'macedonian',
190         'mn' => 'mongolian',
191         'ne' => 'nepali',
192         'nl' => 'dutch',
193         'no' => 'norwegian',
194         'pl' => 'polish',
195         'ps' => 'pashto',
196         'pt' => 'portuguese',
197         'ro' => 'romanian',
198         'ru' => 'russian',
199         'sk' => 'slovak',
200         'sl' => 'slovene',
201         'so' => 'somali',
202         'sq' => 'albanian',
203         'sr' => 'serbian',
204         'sv' => 'swedish',
205         'sw' => 'swahili',
206         'tl' => 'tagalog',
207         'tr' => 'turkish',
208         'uk' => 'ukrainian',
209         'ur' => 'urdu',
210         'uz' => 'uzbek',
211         'vi' => 'vietnamese',
212     );
213
214     /**
215      * Maps ISO 639-2 3-letter language codes to the language names
216      * in the language database.
217      *
218      * @var array
219      */
220     public static $code3ToName = array(
221         'ara' => 'arabic',
222         'aze' => 'azeri',
223         'ben' => 'bengali',
224         'bul' => 'bulgarian',
225         'ceb' => 'cebuano',
226         'ces' => 'czech',
227         'crp' => 'pidgin',
228         'cym' => 'welsh',
229         'dan' => 'danish',
230         'deu' => 'german',
231         'eng' => 'english',
232         'est' => 'estonian',
233         'fas' => 'farsi',
234         'fin' => 'finnish',
235         'fra' => 'french',
236         'hau' => 'hausa',
237         'haw' => 'hawaiian',
238         'hin' => 'hindi',
239         'hrv' => 'croatian',
240         'hun' => 'hungarian',
241         'ind' => 'indonesian',
242         'isl' => 'icelandic',
243         'ita' => 'italian',
244         'kaz' => 'kazakh',
245         'kir' => 'kyrgyz',
246         'lat' => 'latin',
247         'lav' => 'latvian',
248         'lit' => 'lithuanian',
249         'mkd' => 'macedonian',
250         'mon' => 'mongolian',
251         'nep' => 'nepali',
252         'nld' => 'dutch',
253         'nor' => 'norwegian',
254         'pol' => 'polish',
255         'por' => 'portuguese',
256         'pus' => 'pashto',
257         'rom' => 'romanian',
258         'rus' => 'russian',
259         'slk' => 'slovak',
260         'slv' => 'slovene',
261         'som' => 'somali',
262         'spa' => 'spanish',
263         'sqi' => 'albanian',
264         'srp' => 'serbian',
265         'swa' => 'swahili',
266         'swe' => 'swedish',
267         'tgl' => 'tagalog',
268         'tur' => 'turkish',
269         'ukr' => 'ukrainian',
270         'urd' => 'urdu',
271         'uzb' => 'uzbek',
272         'vie' => 'vietnamese',
273     );
274
275     /**
276      * Returns the 2-letter ISO 639-1 code for the given language name.
277      *
278      * @param string $lang English language name like "swedish"
279      *
280      * @return string Two-letter language code (e.g. "sv") or NULL if not found
281      */
282     public static function nameToCode2($lang)
283     {
284         $lang = strtolower($lang);
285         if (!isset(self::$nameToCode2[$lang])) {
286             return null;
287         }
288         return self::$nameToCode2[$lang];
289     }
290
291     /**
292      * Returns the 3-letter ISO 639-2 code for the given language name.
293      *
294      * @param string $lang English language name like "swedish"
295      *
296      * @return string Three-letter language code (e.g. "swe") or NULL if not found
297      */
298     public static function nameToCode3($lang)
299     {
300         $lang = strtolower($lang);
301         if (!isset(self::$nameToCode3[$lang])) {
302             return null;
303         }
304         return self::$nameToCode3[$lang];
305     }
306
307     /**
308      * Returns the language name for the given 2-letter ISO 639-1 code.
309      *
310      * @param string $code Two-letter language code (e.g. "sv")
311      *
312      * @return string English language name like "swedish"
313      */
314     public static function code2ToName($code)
315     {
316         $lang = strtolower($code);
317         if (!isset(self::$code2ToName[$code])) {
318             return null;
319         }
320         return self::$code2ToName[$code];
321     }
322
323     /**
324      * Returns the language name for the given 3-letter ISO 639-2 code.
325      *
326      * @param string $code Three-letter language code (e.g. "swe")
327      *
328      * @return string English language name like "swedish"
329      */
330     public static function code3ToName($code)
331     {
332         $lang = strtolower($code);
333         if (!isset(self::$code3ToName[$code])) {
334             return null;
335         }
336         return self::$code3ToName[$code];
337     }
338 }
339
340 ?>