This source file includes following definitions.
- mbfl_name2language
- mbfl_no2language
- mbfl_name2no_language
- mbfl_no_language2name
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
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
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