Mercurial > audlegacy-plugins
comparison src/flac112/charset.c @ 104:4b31176c198a trunk
[svn] - 1.1.2 compatible plugin (I HATE YOU FLAC PEOPLE)
author | nenolod |
---|---|
date | Mon, 23 Oct 2006 19:55:09 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
103:117bc56d906b | 104:4b31176c198a |
---|---|
1 /* libxmms-flac - XMMS FLAC input plugin | |
2 * Copyright (C) 2002,2003,2004,2005 Daisuke Shimamura | |
3 * | |
4 * Almost from charset.c | |
5 * EasyTAG - Tag editor for MP3 and OGG files | |
6 * Copyright (C) 1999-2001 Håvard Kvålen <havardk@xmms.org> | |
7 * | |
8 * This program is free software; you can redistribute it and/or | |
9 * modify it under the terms of the GNU General Public License | |
10 * as published by the Free Software Foundation; either version 2 | |
11 * of the License, or (at your option) any later version. | |
12 * | |
13 * This program is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License | |
19 * along with this program; if not, write to the Free Software | |
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
21 */ | |
22 | |
23 #include <stdlib.h> | |
24 #include <glib.h> | |
25 #include <string.h> | |
26 #include <errno.h> | |
27 | |
28 #include "plugin_common/charset.h" | |
29 #include "plugin_common/locale_hack.h" | |
30 #include "charset.h" | |
31 #include "configure.h" | |
32 | |
33 | |
34 /**************** | |
35 * Declarations * | |
36 ****************/ | |
37 | |
38 #define CHARSET_TRANS_ARRAY_LEN ( sizeof(charset_trans_array) / sizeof((charset_trans_array)[0]) ) | |
39 const CharsetInfo charset_trans_array[] = { | |
40 {N_("Arabic (IBM-864)"), "IBM864" }, | |
41 {N_("Arabic (ISO-8859-6)"), "ISO-8859-6" }, | |
42 {N_("Arabic (Windows-1256)"), "windows-1256" }, | |
43 {N_("Baltic (ISO-8859-13)"), "ISO-8859-13" }, | |
44 {N_("Baltic (ISO-8859-4)"), "ISO-8859-4" }, | |
45 {N_("Baltic (Windows-1257)"), "windows-1257" }, | |
46 {N_("Celtic (ISO-8859-14)"), "ISO-8859-14" }, | |
47 {N_("Central European (IBM-852)"), "IBM852" }, | |
48 {N_("Central European (ISO-8859-2)"), "ISO-8859-2" }, | |
49 {N_("Central European (Windows-1250)"), "windows-1250" }, | |
50 {N_("Chinese Simplified (GB18030)"), "gb18030" }, | |
51 {N_("Chinese Simplified (GB2312)"), "GB2312" }, | |
52 {N_("Chinese Traditional (Big5)"), "Big5" }, | |
53 {N_("Chinese Traditional (Big5-HKSCS)"), "Big5-HKSCS" }, | |
54 {N_("Cyrillic (IBM-855)"), "IBM855" }, | |
55 {N_("Cyrillic (ISO-8859-5)"), "ISO-8859-5" }, | |
56 {N_("Cyrillic (ISO-IR-111)"), "ISO-IR-111" }, | |
57 {N_("Cyrillic (KOI8-R)"), "KOI8-R" }, | |
58 {N_("Cyrillic (Windows-1251)"), "windows-1251" }, | |
59 {N_("Cyrillic/Russian (CP-866)"), "IBM866" }, | |
60 {N_("Cyrillic/Ukrainian (KOI8-U)"), "KOI8-U" }, | |
61 {N_("English (US-ASCII)"), "us-ascii" }, | |
62 {N_("Greek (ISO-8859-7)"), "ISO-8859-7" }, | |
63 {N_("Greek (Windows-1253)"), "windows-1253" }, | |
64 {N_("Hebrew (IBM-862)"), "IBM862" }, | |
65 {N_("Hebrew (Windows-1255)"), "windows-1255" }, | |
66 {N_("Japanese (EUC-JP)"), "EUC-JP" }, | |
67 {N_("Japanese (ISO-2022-JP)"), "ISO-2022-JP" }, | |
68 {N_("Japanese (Shift_JIS)"), "Shift_JIS" }, | |
69 {N_("Korean (EUC-KR)"), "EUC-KR" }, | |
70 {N_("Nordic (ISO-8859-10)"), "ISO-8859-10" }, | |
71 {N_("South European (ISO-8859-3)"), "ISO-8859-3" }, | |
72 {N_("Thai (TIS-620)"), "TIS-620" }, | |
73 {N_("Turkish (IBM-857)"), "IBM857" }, | |
74 {N_("Turkish (ISO-8859-9)"), "ISO-8859-9" }, | |
75 {N_("Turkish (Windows-1254)"), "windows-1254" }, | |
76 {N_("Unicode (UTF-7)"), "UTF-7" }, | |
77 {N_("Unicode (UTF-8)"), "UTF-8" }, | |
78 {N_("Unicode (UTF-16BE)"), "UTF-16BE" }, | |
79 {N_("Unicode (UTF-16LE)"), "UTF-16LE" }, | |
80 {N_("Unicode (UTF-32BE)"), "UTF-32BE" }, | |
81 {N_("Unicode (UTF-32LE)"), "UTF-32LE" }, | |
82 {N_("Vietnamese (VISCII)"), "VISCII" }, | |
83 {N_("Vietnamese (Windows-1258)"), "windows-1258" }, | |
84 {N_("Visual Hebrew (ISO-8859-8)"), "ISO-8859-8" }, | |
85 {N_("Western (IBM-850)"), "IBM850" }, | |
86 {N_("Western (ISO-8859-1)"), "ISO-8859-1" }, | |
87 {N_("Western (ISO-8859-15)"), "ISO-8859-15" }, | |
88 {N_("Western (Windows-1252)"), "windows-1252" } | |
89 | |
90 /* | |
91 * From this point, character sets aren't supported by iconv | |
92 */ | |
93 #if 0 | |
94 {N_("Arabic (IBM-864-I)"), "IBM864i" }, | |
95 {N_("Arabic (ISO-8859-6-E)"), "ISO-8859-6-E" }, | |
96 {N_("Arabic (ISO-8859-6-I)"), "ISO-8859-6-I" }, | |
97 {N_("Arabic (MacArabic)"), "x-mac-arabic" }, | |
98 {N_("Armenian (ARMSCII-8)"), "armscii-8" }, | |
99 {N_("Central European (MacCE)"), "x-mac-ce" }, | |
100 {N_("Chinese Simplified (GBK)"), "x-gbk" }, | |
101 {N_("Chinese Simplified (HZ)"), "HZ-GB-2312" }, | |
102 {N_("Chinese Traditional (EUC-TW)"), "x-euc-tw" }, | |
103 {N_("Croatian (MacCroatian)"), "x-mac-croatian" }, | |
104 {N_("Cyrillic (MacCyrillic)"), "x-mac-cyrillic" }, | |
105 {N_("Cyrillic/Ukrainian (MacUkrainian)"), "x-mac-ukrainian" }, | |
106 {N_("Farsi (MacFarsi)"), "x-mac-farsi"}, | |
107 {N_("Greek (MacGreek)"), "x-mac-greek" }, | |
108 {N_("Gujarati (MacGujarati)"), "x-mac-gujarati" }, | |
109 {N_("Gurmukhi (MacGurmukhi)"), "x-mac-gurmukhi" }, | |
110 {N_("Hebrew (ISO-8859-8-E)"), "ISO-8859-8-E" }, | |
111 {N_("Hebrew (ISO-8859-8-I)"), "ISO-8859-8-I" }, | |
112 {N_("Hebrew (MacHebrew)"), "x-mac-hebrew" }, | |
113 {N_("Hindi (MacDevanagari)"), "x-mac-devanagari" }, | |
114 {N_("Icelandic (MacIcelandic)"), "x-mac-icelandic" }, | |
115 {N_("Korean (JOHAB)"), "x-johab" }, | |
116 {N_("Korean (UHC)"), "x-windows-949" }, | |
117 {N_("Romanian (MacRomanian)"), "x-mac-romanian" }, | |
118 {N_("Turkish (MacTurkish)"), "x-mac-turkish" }, | |
119 {N_("User Defined"), "x-user-defined" }, | |
120 {N_("Vietnamese (TCVN)"), "x-viet-tcvn5712" }, | |
121 {N_("Vietnamese (VPS)"), "x-viet-vps" }, | |
122 {N_("Western (MacRoman)"), "x-mac-roman" }, | |
123 /* charsets whithout posibly translatable names */ | |
124 {"T61.8bit", "T61.8bit" }, | |
125 {"x-imap4-modified-utf7", "x-imap4-modified-utf7"}, | |
126 {"x-u-escaped", "x-u-escaped" }, | |
127 {"windows-936", "windows-936" } | |
128 #endif | |
129 }; | |
130 | |
131 /************* | |
132 * Functions * | |
133 *************/ | |
134 | |
135 /* | |
136 * Commons conversion functions | |
137 */ | |
138 char *convert_from_utf8_to_user(const char *string) | |
139 { | |
140 return FLAC_plugin__charset_convert_string(string, "UTF-8", flac_cfg.title.user_char_set); | |
141 } | |
142 | |
143 char *convert_from_user_to_utf8(const char *string) | |
144 { | |
145 return FLAC_plugin__charset_convert_string(string, flac_cfg.title.user_char_set, "UTF-8"); | |
146 } | |
147 | |
148 GList *Charset_Create_List (void) | |
149 { | |
150 GList *list = NULL; | |
151 guint i; | |
152 | |
153 for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++) | |
154 list = g_list_append(list,_(charset_trans_array[i].charset_title)); | |
155 return list; | |
156 } | |
157 | |
158 GList *Charset_Create_List_UTF8_Only (void) | |
159 { | |
160 GList *list = NULL; | |
161 | |
162 list = g_list_append(list,_(Charset_Get_Title_From_Name("UTF-8"))); | |
163 return list; | |
164 } | |
165 | |
166 | |
167 /* | |
168 * Return charset_name from charset_title | |
169 */ | |
170 gchar *Charset_Get_Name_From_Title (const gchar *charset_title) | |
171 { | |
172 guint i; | |
173 | |
174 if (charset_title) | |
175 for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++) | |
176 if ( strcasecmp(_(charset_title),_(charset_trans_array[i].charset_title)) == 0 ) | |
177 return charset_trans_array[i].charset_name; | |
178 return ""; | |
179 } | |
180 | |
181 | |
182 /* | |
183 * Return charset_title from charset_name | |
184 */ | |
185 gchar *Charset_Get_Title_From_Name (const gchar *charset_name) | |
186 { | |
187 guint i; | |
188 | |
189 if (charset_name) | |
190 for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++) | |
191 if ( strcasecmp(charset_name,charset_trans_array[i].charset_name) == 0 ) | |
192 return _(charset_trans_array[i].charset_title); | |
193 return ""; | |
194 } |