Annotation of embedaddon/php/ext/mbstring/libmbfl/mbfl/mbfl_language.c, revision 1.1.1.1
1.1 misho 1: /*
2: * "streamable kanji code filter and converter"
3: * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
4: *
5: * LICENSE NOTICES
6: *
7: * This file is part of "streamable kanji code filter and converter",
8: * which is distributed under the terms of GNU Lesser General Public
9: * License (version 2) as published by the Free Software Foundation.
10: *
11: * This software is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: * GNU Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with "streamable kanji code filter and converter";
18: * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
19: * Suite 330, Boston, MA 02111-1307 USA
20: *
21: * The author of this file:
22: *
23: */
24: /*
25: * The source code included in this files was separated from mbfilter.c
26: * by Moriyoshi Koizumi <moriyoshi@php.net> on 20 Dec 2002. The file
27: * mbfilter.c is included in this package .
28: *
29: */
30:
31: #ifdef HAVE_CONFIG_H
32: #include "config.h"
33: #endif
34:
35: #ifdef HAVE_STDDEF_H
36: #include <stddef.h>
37: #endif
38:
39: #ifdef HAVE_STDDEF_H
40: #include <stddef.h>
41: #endif
42:
43: #ifdef HAVE_STRING_H
44: #include <string.h>
45: #endif
46:
47: #ifdef HAVE_STRINGS_H
48: #include <strings.h>
49: #endif
50:
51: #include "mbfl_encoding.h"
52: #include "mbfl_language.h"
53:
54: #include "nls/nls_ja.h"
55: #include "nls/nls_kr.h"
56: #include "nls/nls_zh.h"
57: #include "nls/nls_uni.h"
58: #include "nls/nls_de.h"
59: #include "nls/nls_ru.h"
60: #include "nls/nls_ua.h"
61: #include "nls/nls_en.h"
62: #include "nls/nls_hy.h"
63: #include "nls/nls_tr.h"
64: #include "nls/nls_neutral.h"
65:
66: #ifndef HAVE_STRCASECMP
67: #ifdef HAVE_STRICMP
68: #define strcasecmp stricmp
69: #endif
70: #endif
71:
72: static const mbfl_language *mbfl_language_ptr_table[] = {
73: &mbfl_language_uni,
74: &mbfl_language_japanese,
75: &mbfl_language_korean,
76: &mbfl_language_simplified_chinese,
77: &mbfl_language_traditional_chinese,
78: &mbfl_language_english,
79: &mbfl_language_german,
80: &mbfl_language_russian,
81: &mbfl_language_ukrainian,
82: &mbfl_language_armenian,
83: &mbfl_language_turkish,
84: &mbfl_language_neutral,
85: NULL
86: };
87:
88: /* language resolver */
89: const mbfl_language *
90: mbfl_name2language(const char *name)
91: {
92: const mbfl_language *language;
93: int i, j;
94:
95: if (name == NULL) {
96: return NULL;
97: }
98:
99: i = 0;
100: while ((language = mbfl_language_ptr_table[i++]) != NULL){
101: if (strcasecmp(language->name, name) == 0) {
102: return language;
103: }
104: }
105:
106: i = 0;
107: while ((language = mbfl_language_ptr_table[i++]) != NULL){
108: if (strcasecmp(language->short_name, name) == 0) {
109: return language;
110: }
111: }
112:
113: /* serch aliases */
114: i = 0;
115: while ((language = mbfl_language_ptr_table[i++]) != NULL) {
116: if (language->aliases != NULL) {
117: j = 0;
118: while ((*language->aliases)[j] != NULL) {
119: if (strcasecmp((*language->aliases)[j], name) == 0) {
120: return language;
121: }
122: j++;
123: }
124: }
125: }
126:
127: return NULL;
128: }
129:
130: const mbfl_language *
131: mbfl_no2language(enum mbfl_no_language no_language)
132: {
133: const mbfl_language *language;
134: int i;
135:
136: i = 0;
137: while ((language = mbfl_language_ptr_table[i++]) != NULL){
138: if (language->no_language == no_language) {
139: return language;
140: }
141: }
142:
143: return NULL;
144: }
145:
146: enum mbfl_no_language
147: mbfl_name2no_language(const char *name)
148: {
149: const mbfl_language *language;
150:
151: language = mbfl_name2language(name);
152: if (language == NULL) {
153: return mbfl_no_language_invalid;
154: } else {
155: return language->no_language;
156: }
157: }
158:
159: const char *
160: mbfl_no_language2name(enum mbfl_no_language no_language)
161: {
162: const mbfl_language *language;
163:
164: language = mbfl_no2language(no_language);
165: if (language == NULL) {
166: return "";
167: } else {
168: return language->name;
169: }
170: }
171:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>