1
/* libxmms-flac - XMMS FLAC input plugin
2
* Copyright (C) 2002 Daisuke Shimamura
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>
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.
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.
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28
#include "plugin_common/charset.h"
29
#include "plugin_common/locale_hack.h"
31
#include "configure.h"
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" }
91
* From this point, character sets aren't supported by iconv
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" }
136
* Commons conversion functions
138
char *convert_from_file_to_user(const char *string)
140
return FLAC_plugin__charset_convert_string(string, flac_cfg.title.file_char_set, flac_cfg.title.user_char_set);
143
char *convert_from_user_to_file(const char *string)
145
return FLAC_plugin__charset_convert_string(string, flac_cfg.title.user_char_set, flac_cfg.title.file_char_set);
148
void convert_from_file_to_user_in_place(char **string)
153
tmp = convert_from_file_to_user(*string);
159
void convert_from_user_to_file_in_place(char **string)
164
tmp = convert_from_user_to_file(*string);
170
GList *Charset_Create_List (void)
175
for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
176
list = g_list_append(list,_(charset_trans_array[i].charset_title));
182
* Return charset_name from charset_title
184
gchar *Charset_Get_Name_From_Title (gchar *charset_title)
189
for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
190
if ( strcasecmp(_(charset_title),_(charset_trans_array[i].charset_title)) == 0 )
191
return charset_trans_array[i].charset_name;
197
* Return charset_title from charset_name
199
gchar *Charset_Get_Title_From_Name (gchar *charset_name)
204
for (i=0; i<CHARSET_TRANS_ARRAY_LEN; i++)
205
if ( strcasecmp(charset_name,charset_trans_array[i].charset_name) == 0 )
206
return _(charset_trans_array[i].charset_title);