summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrantišek Dvořák <valtri@users.sourceforge.net>2004-07-14 18:51:29 +0000
committerFrantišek Dvořák <valtri@users.sourceforge.net>2004-07-14 18:51:29 +0000
commit3203837244ab96fe3c251a383e5fe4d352e8b3cc (patch)
tree36c905466ef5e2365b668ca083d0f564939f1f3b
parent29014de12ca600c80a43d835a3e74d099f746acf (diff)
downloadxine-lib-3203837244ab96fe3c251a383e5fe4d352e8b3cc.tar.gz
xine-lib-3203837244ab96fe3c251a383e5fe4d352e8b3cc.tar.bz2
- Use Windows encoding for the external subtitles, guessed according to current locale.
- Add "-" into encoding names. - Fix a typo. CVS patchset: 6793 CVS date: 2004/07/14 18:51:29
-rw-r--r--ChangeLog1
-rw-r--r--src/libsputext/xine_decoder.c6
-rw-r--r--src/xine-utils/utils.c381
-rw-r--r--src/xine-utils/xineutils.h7
4 files changed, 217 insertions, 178 deletions
diff --git a/ChangeLog b/ChangeLog
index 84a57cb90..09e0aa889 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,7 @@ xine-lib (1-rc6)
* make sure the streams are played till their very end
* support for Annodex files
* VobSub-in-Matroska support
+ * guess and use Windows encoding as default for external subtitles
xine-lib (1-rc5)
* add support for ejecting removable media on Solaris
diff --git a/src/libsputext/xine_decoder.c b/src/libsputext/xine_decoder.c
index 15846f870..94e0c4fcc 100644
--- a/src/libsputext/xine_decoder.c
+++ b/src/libsputext/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.83 2004/06/13 21:28:57 miguelfreitas Exp $
+ * $Id: xine_decoder.c,v 1.84 2004/07/14 18:51:29 valtri Exp $
*
*/
@@ -849,11 +849,11 @@ static void *init_spu_decoder_plugin (xine_t *xine, void *data) {
10, update_osd_font, this));
this->src_encoding = xine->config->register_string(xine->config,
"misc.spu_src_encoding",
- "iso-8859-1",
+ xine_guess_spu_encoding(),
_("encoding of the subtitles"),
_("The encoding of the subtitle text in the stream. This setting "
"is used to render non-ASCII characters correctly. If non-ASCII "
- "charachters are not displayed as you expect, ask the "
+ "characters are not displayed as you expect, ask the "
"creator of the subtitles what encoding was used."),
10, update_src_encoding, this);
this->use_unscaled = xine->config->register_bool(xine->config,
diff --git a/src/xine-utils/utils.c b/src/xine-utils/utils.c
index 9d2c02f4f..80f7a9336 100644
--- a/src/xine-utils/utils.c
+++ b/src/xine-utils/utils.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: utils.c,v 1.27 2004/05/09 17:42:24 valtri Exp $
+ * $Id: utils.c,v 1.28 2004/07/14 18:51:29 valtri Exp $
*
*/
#define _POSIX_PTHREAD_SEMANTICS 1 /* for 5-arg getpwuid_r on solaris */
@@ -51,179 +51,183 @@
typedef struct {
- char *language;
- char *encoding;
+ char *language; /* name of the locale */
+ char *encoding; /* typical encoding */
+ char *spu_encoding; /* default spu encoding */
char *modifier;
} lang_locale_t;
+/*
+ * information about locales used in xine
+ */
static lang_locale_t lang_locales[] = {
- { "af_ZA", "iso88591", NULL },
- { "ar_AE", "iso88596", NULL },
- { "ar_BH", "iso88596", NULL },
- { "ar_DZ", "iso88596", NULL },
- { "ar_EG", "iso88596", NULL },
- { "ar_IN", "utf8", NULL },
- { "ar_IQ", "iso88596", NULL },
- { "ar_JO", "iso88596", NULL },
- { "ar_KW", "iso88596", NULL },
- { "ar_LB", "iso88596", NULL },
- { "ar_LY", "iso88596", NULL },
- { "ar_MA", "iso88596", NULL },
- { "ar_OM", "iso88596", NULL },
- { "ar_QA", "iso88596", NULL },
- { "ar_SA", "iso88596", NULL },
- { "ar_SD", "iso88596", NULL },
- { "ar_SY", "iso88596", NULL },
- { "ar_TN", "iso88596", NULL },
- { "ar_YE", "iso88596", NULL },
- { "be_BY", "cp1251", NULL },
- { "bg_BG", "cp1251", NULL },
- { "br_FR", "iso88591", NULL },
- { "bs_BA", "iso88592", NULL },
- { "ca_ES", "iso88591", NULL },
- { "ca_ES", "iso885915", "euro" },
- { "cs_CZ", "iso88592", NULL },
- { "cy_GB", "iso885914", NULL },
- { "da_DK", "iso88591", NULL },
- { "de_AT", "iso88591", NULL },
- { "de_AT", "iso885915", "euro" },
- { "de_BE", "iso88591", NULL },
- { "de_BE", "iso885915", "euro" },
- { "de_CH", "iso88591", NULL },
- { "de_DE", "iso88591", NULL },
- { "de_DE", "iso885915", "euro" },
- { "de_LU", "iso88591", NULL },
- { "de_LU", "iso885915", "euro" },
- { "el_GR", "iso88597", NULL },
- { "en_AU", "iso88591", NULL },
- { "en_BW", "iso88591", NULL },
- { "en_CA", "iso88591", NULL },
- { "en_DK", "iso88591", NULL },
- { "en_GB", "iso88591", NULL },
- { "en_HK", "iso88591", NULL },
- { "en_IE", "iso88591", NULL },
- { "en_IE", "iso885915", "euro" },
- { "en_IN", "utf8", NULL },
- { "en_NZ", "iso88591", NULL },
- { "en_PH", "iso88591", NULL },
- { "en_SG", "iso88591", NULL },
- { "en_US", "iso88591", NULL },
- { "en_ZA", "iso88591", NULL },
- { "en_ZW", "iso88591", NULL },
- { "es_AR", "iso88591", NULL },
- { "es_BO", "iso88591", NULL },
- { "es_CL", "iso88591", NULL },
- { "es_CO", "iso88591", NULL },
- { "es_CR", "iso88591", NULL },
- { "es_DO", "iso88591", NULL },
- { "es_EC", "iso88591", NULL },
- { "es_ES", "iso88591", NULL },
- { "es_ES", "iso885915", "euro" },
- { "es_GT", "iso88591", NULL },
- { "es_HN", "iso88591", NULL },
- { "es_MX", "iso88591", NULL },
- { "es_NI", "iso88591", NULL },
- { "es_PA", "iso88591", NULL },
- { "es_PE", "iso88591", NULL },
- { "es_PR", "iso88591", NULL },
- { "es_PY", "iso88591", NULL },
- { "es_SV", "iso88591", NULL },
- { "es_US", "iso88591", NULL },
- { "es_UY", "iso88591", NULL },
- { "es_VE", "iso88591", NULL },
- { "et_EE", "iso88591", NULL },
- { "eu_ES", "iso88591", NULL },
- { "eu_ES", "iso885915", "euro" },
- { "fa_IR", "utf8", NULL },
- { "fi_FI", "iso88591", NULL },
- { "fi_FI", "iso885915", "euro" },
- { "fo_FO", "iso88591", NULL },
- { "fr_BE", "iso88591", NULL },
- { "fr_BE", "iso885915", "euro" },
- { "fr_CA", "iso88591", NULL },
- { "fr_CH", "iso88591", NULL },
- { "fr_FR", "iso88591", NULL },
- { "fr_FR", "iso885915", "euro" },
- { "fr_LU", "iso88591", NULL },
- { "fr_LU", "iso885915", "euro" },
- { "ga_IE", "iso88591", NULL },
- { "ga_IE", "iso885915", "euro" },
- { "gl_ES", "iso88591", NULL },
- { "gl_ES", "iso885915", "euro" },
- { "gv_GB", "iso88591", NULL },
- { "he_IL", "iso88598", NULL },
- { "hi_IN", "utf8", NULL },
- { "hr_HR", "iso88592", NULL },
- { "hu_HU", "iso88592", NULL },
- { "id_ID", "iso88591", NULL },
- { "is_IS", "iso88591", NULL },
- { "it_CH", "iso88591", NULL },
- { "it_IT", "iso88591", NULL },
- { "it_IT", "iso885915", "euro" },
- { "iw_IL", "iso88598", NULL },
- { "ja_JP", "eucjp", NULL },
- { "ja_JP", "ujis", NULL },
- { "japanese", "euc", NULL },
- { "ka_GE", "georgianps", NULL },
- { "kl_GL", "iso88591", NULL },
- { "ko_KR", "euckr", NULL },
- { "ko_KR", "utf8", NULL },
- { "korean", "euc", NULL },
- { "kw_GB", "iso88591", NULL },
- { "lt_LT", "iso885913", NULL },
- { "lv_LV", "iso885913", NULL },
- { "mi_NZ", "iso885913", NULL },
- { "mk_MK", "iso88595", NULL },
- { "mr_IN", "utf8", NULL },
- { "ms_MY", "iso88591", NULL },
- { "mt_MT", "iso88593", NULL },
- { "nb_NO", "ISO-8859-1", NULL },
- { "nl_BE", "iso88591", NULL },
- { "nl_BE", "iso885915", "euro" },
- { "nl_NL", "iso88591", NULL },
- { "nl_NL", "iso885915", "euro" },
- { "nn_NO", "iso88591", NULL },
- { "no_NO", "iso88591", NULL },
- { "oc_FR", "iso88591", NULL },
- { "pl_PL", "iso88592", NULL },
- { "pt_BR", "iso88591", NULL },
- { "pt_PT", "iso88591", NULL },
- { "pt_PT", "iso885915", "euro" },
- { "ro_RO", "iso88592", NULL },
- { "ru_RU", "iso88595", NULL },
- { "ru_RU", "koi8r", NULL },
- { "ru_UA", "koi8u", NULL },
- { "se_NO", "utf8", NULL },
- { "sk_SK", "iso88592", NULL },
- { "sl_SI", "iso88592", NULL },
- { "sq_AL", "iso88591", NULL },
- { "sr_YU", "iso88592", NULL },
- { "sr_YU", "iso88595", "cyrillic" },
- { "sv_FI", "iso88591", NULL },
- { "sv_FI", "iso885915", "euro" },
- { "sv_SE", "iso88591", NULL },
- { "ta_IN", "utf8", NULL },
- { "te_IN", "utf8", NULL },
- { "tg_TJ", "koi8t", NULL },
- { "th_TH", "tis620", NULL },
- { "tl_PH", "iso88591", NULL },
- { "tr_TR", "iso88599", NULL },
- { "uk_UA", "koi8u", NULL },
- { "ur_PK", "utf8", NULL },
- { "uz_UZ", "iso88591", NULL },
- { "vi_VN", "tcvn", NULL },
- { "vi_VN", "utf8", NULL },
- { "wa_BE", "iso88591", NULL },
- { "wa_BE", "iso885915", "euro" },
- { "yi_US", "cp1255", NULL },
- { "zh_CN", "gb18030", NULL },
- { "zh_CN", "gb2312", NULL },
- { "zh_CN", "gbk", NULL },
- { "zh_HK", "big5hkscs", NULL },
- { "zh_TW", "big5", NULL },
- { "zh_TW", "euctw", NULL },
- { NULL, NULL, NULL }
+ { "af_ZA", "iso-8859-1", "iso-8859-1", NULL },
+ { "ar_AE", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_BH", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_DZ", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_EG", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_IN", "utf-8", "utf-8", NULL },
+ { "ar_IQ", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_JO", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_KW", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_LB", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_LY", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_MA", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_OM", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_QA", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_SA", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_SD", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_SY", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_TN", "iso-8859-6", "iso-8859-6", NULL },
+ { "ar_YE", "iso-8859-6", "iso-8859-6", NULL },
+ { "be_BY", "cp1251", "cp1251", NULL },
+ { "bg_BG", "cp1251", "cp1251", NULL },
+ { "br_FR", "iso-8859-1", "iso-88591", NULL },
+ { "bs_BA", "iso-8859-2", "cp1250", NULL },
+ { "ca_ES", "iso-8859-1", "iso-88591", NULL },
+ { "ca_ES", "iso-8859-15", "iso-8859-15", "euro" },
+ { "cs_CZ", "iso-8859-2", "cp1250", NULL },
+ { "cy_GB", "iso-8859-14", "iso-8859-14", NULL },
+ { "da_DK", "iso-8859-1", "iso-8859-1", NULL },
+ { "de_AT", "iso-8859-1", "iso-8859-1", NULL },
+ { "de_AT", "iso-8859-15", "iso-8859-15", "euro" },
+ { "de_BE", "iso-8859-1", "iso-8859-1", NULL },
+ { "de_BE", "iso-8859-15", "iso-8859-15", "euro" },
+ { "de_CH", "iso-8859-1", "iso-8859-1", NULL },
+ { "de_DE", "iso-8859-1", "iso-8859-1", NULL },
+ { "de_DE", "iso-8859-15", "iso-8859-15", "euro" },
+ { "de_LU", "iso-8859-1", "iso-8859-1", NULL },
+ { "de_LU", "iso-8859-15", "iso-8859-15", "euro" },
+ { "el_GR", "iso-8859-7", "iso-8859-7", NULL },
+ { "en_AU", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_BW", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_CA", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_DK", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_GB", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_HK", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_IE", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_IE", "iso-8859-15", "iso-8859-15", "euro" },
+ { "en_IN", "utf-8", "utf-8", NULL },
+ { "en_NZ", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_PH", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_SG", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_US", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_ZA", "iso-8859-1", "iso-8859-1", NULL },
+ { "en_ZW", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_AR", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_BO", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_CL", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_CO", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_CR", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_DO", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_EC", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_ES", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_ES", "iso-8859-15", "iso-8859-15", "euro" },
+ { "es_GT", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_HN", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_MX", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_NI", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_PA", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_PE", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_PR", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_PY", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_SV", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_US", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_UY", "iso-8859-1", "iso-8859-1", NULL },
+ { "es_VE", "iso-8859-1", "iso-8859-1", NULL },
+ { "et_EE", "iso-8859-1", "iso-8859-1", NULL },
+ { "eu_ES", "iso-8859-1", "iso-8859-1", NULL },
+ { "eu_ES", "iso-8859-15", "iso-8859-15", "euro" },
+ { "fa_IR", "utf-8", "utf-8", NULL },
+ { "fi_FI", "iso-8859-1", "iso-8859-1", NULL },
+ { "fi_FI", "iso-8859-15", "iso-8859-15", "euro" },
+ { "fo_FO", "iso-8859-1", "iso-8859-1", NULL },
+ { "fr_BE", "iso-8859-1", "iso-8859-1", NULL },
+ { "fr_BE", "iso-8859-15", "iso-8859-15", "euro" },
+ { "fr_CA", "iso-8859-1", "iso-8859-1", NULL },
+ { "fr_CH", "iso-8859-1", "iso-8859-1", NULL },
+ { "fr_FR", "iso-8859-1", "iso-8859-1", NULL },
+ { "fr_FR", "iso-8859-15", "iso-8859-15", "euro" },
+ { "fr_LU", "iso-8859-1", "iso-8859-1", NULL },
+ { "fr_LU", "iso-8859-15", "iso-8859-15", "euro" },
+ { "ga_IE", "iso-8859-1", "iso-8859-1", NULL },
+ { "ga_IE", "iso-8859-15", "iso-8859-15", "euro" },
+ { "gl_ES", "iso-8859-1", "iso-8859-1", NULL },
+ { "gl_ES", "iso-8859-15", "iso-8859-15", "euro" },
+ { "gv_GB", "iso-8859-1", "iso-8859-1", NULL },
+ { "he_IL", "iso-8859-8", "iso-8859-8", NULL },
+ { "hi_IN", "utf-8", "utf-8", NULL },
+ { "hr_HR", "iso-8859-2", "cp1250", NULL },
+ { "hu_HU", "iso-8859-2", "cp1250", NULL },
+ { "id_ID", "iso-8859-1", "iso-8859-1", NULL },
+ { "is_IS", "iso-8859-1", "iso-8859-1", NULL },
+ { "it_CH", "iso-8859-1", "iso-8859-1", NULL },
+ { "it_IT", "iso-8859-1", "iso-8859-1", NULL },
+ { "it_IT", "iso-8859-15", "iso-8859-15", "euro" },
+ { "iw_IL", "iso-8859-8", "iso-8859-8", NULL },
+ { "ja_JP", "euc-jp", "euc-jp", NULL },
+ { "ja_JP", "ujis", "ujis", NULL },
+ { "japanese", "euc", "euc", NULL },
+ { "ka_GE", "georgian-ps", "georgian-ps", NULL },
+ { "kl_GL", "iso-8859-1", "iso-8859-1", NULL },
+ { "ko_KR", "euc-kr", "euc-kr", NULL },
+ { "ko_KR", "utf-8", "utf-8", NULL },
+ { "korean", "euc", "euc", NULL },
+ { "kw_GB", "iso-8859-1", "iso-8859-1", NULL },
+ { "lt_LT", "iso-8859-13", "iso-8859-13", NULL },
+ { "lv_LV", "iso-8859-13", "iso-8859-13", NULL },
+ { "mi_NZ", "iso-8859-13", "iso-8859-13", NULL },
+ { "mk_MK", "iso-8859-5", "cp1251", NULL },
+ { "mr_IN", "utf-8", "utf-8", NULL },
+ { "ms_MY", "iso-8859-1", "iso-8859-1", NULL },
+ { "mt_MT", "iso-8859-3", "iso-8859-3", NULL },
+ { "nb_NO", "ISO-8859-1", "ISO-8859-1", NULL },
+ { "nl_BE", "iso-8859-1", "iso-8859-1", NULL },
+ { "nl_BE", "iso-8859-15", "iso-8859-15", "euro" },
+ { "nl_NL", "iso-8859-1", "iso-8859-1", NULL },
+ { "nl_NL", "iso-8859-15", "iso-8859-15", "euro" },
+ { "nn_NO", "iso-8859-1", "iso-8859-1", NULL },
+ { "no_NO", "iso-8859-1", "iso-8859-1", NULL },
+ { "oc_FR", "iso-8859-1", "iso-8859-1", NULL },
+ { "pl_PL", "iso-8859-2", "cp1250", NULL },
+ { "pt_BR", "iso-8859-1", "iso-8859-1", NULL },
+ { "pt_PT", "iso-8859-1", "iso-8859-1", NULL },
+ { "pt_PT", "iso-8859-15", "iso-8859-15", "euro" },
+ { "ro_RO", "iso-8859-2", "cp1250", NULL },
+ { "ru_RU", "iso-8859-5", "cp1251", NULL },
+ { "ru_RU", "koi8-r", "cp1251", NULL },
+ { "ru_UA", "koi8-u", "cp1251", NULL },
+ { "se_NO", "utf-8", "utf-8", NULL },
+ { "sk_SK", "iso-8859-2", "cp1250", NULL },
+ { "sl_SI", "iso-8859-2", "cp1250", NULL },
+ { "sq_AL", "iso-8859-1", "iso-8859-1", NULL },
+ { "sr_YU", "iso-8859-2", "cp1250", NULL },
+ { "sr_YU", "iso-8859-5", "cp1251", "cyrillic" },
+ { "sv_FI", "iso-8859-1", "iso-8859-1", NULL },
+ { "sv_FI", "iso-8859-15", "iso-8859-15", "euro" },
+ { "sv_SE", "iso-8859-1", "iso-8859-1", NULL },
+ { "ta_IN", "utf-8", "utf-8", NULL },
+ { "te_IN", "utf-8", "utf-8", NULL },
+ { "tg_TJ", "koi8-t", "cp1251", NULL },
+ { "th_TH", "tis-620", "tis-620", NULL },
+ { "tl_PH", "iso-8859-1", "iso-8859-1", NULL },
+ { "tr_TR", "iso-8859-9", "iso-8859-9", NULL },
+ { "uk_UA", "koi8-u", "cp1251", NULL },
+ { "ur_PK", "utf-8", "utf-8", NULL },
+ { "uz_UZ", "iso-8859-1", "iso-8859-1", NULL },
+ { "vi_VN", "tcvn", "tcvn", NULL },
+ { "vi_VN", "utf-8", "utf-8", NULL },
+ { "wa_BE", "iso-8859-1", "iso-8859-1", NULL },
+ { "wa_BE", "iso-8859-15", "iso-8859-15", "euro" },
+ { "yi_US", "cp1255", "cp1255", NULL },
+ { "zh_CN", "gb18030", "gb18030", NULL },
+ { "zh_CN", "gb2312", "gb2312", NULL },
+ { "zh_CN", "gbk", "gbk", NULL },
+ { "zh_HK", "big5-hkscs", "big5-hkscs", NULL },
+ { "zh_TW", "big-5", "big-5", NULL },
+ { "zh_TW", "euc-tw", "euc-tw", NULL },
+ { NULL, NULL, NULL, NULL }
};
@@ -465,6 +469,17 @@ static const lang_locale_t *_get_first_lang_locale(char *lcal) {
}
+static char *_get_lang(void) {
+ char *lang;
+
+ if(!(lang = getenv("LC_ALL")))
+ if(!(lang = getenv("LC_MESSAGES")))
+ lang = getenv("LANG");
+
+ return lang;
+}
+
+
/*
* get encoding of current locale
*/
@@ -479,11 +494,7 @@ char *xine_get_system_encoding(void) {
* when nl_langinfo(CODESET) isn't available or workig
*/
if (!codeset || strstr(codeset, "ANSI") != 0) {
- char *lang;
-
- if(!(lang = getenv("LC_ALL")))
- if(!(lang = getenv("LC_MESSAGES")))
- lang = getenv("LANG");
+ char *lang = _get_lang();
codeset = NULL;
@@ -516,6 +527,28 @@ char *xine_get_system_encoding(void) {
}
+/*
+ * guess default encoding of subtitles
+ */
+const char *xine_guess_spu_encoding(void) {
+ char *lang = _get_lang();
+
+ if (lang) {
+ const lang_locale_t *llocale;
+ char *lg, *enc;
+
+ lg = strdup(lang);
+
+ if ((enc = strchr(lg, '.'))) *enc = '\0';
+ llocale = _get_first_lang_locale(lg);
+ free(lg);
+ if (llocale && llocale->spu_encoding) return llocale->spu_encoding;
+ }
+
+ return "iso-8859-1";
+}
+
+
#ifndef HAVE_BASENAME
#define FILESYSTEM_PREFIX_LEN(filename) 0
#define ISSLASH(C) ((C) == '/')
diff --git a/src/xine-utils/xineutils.h b/src/xine-utils/xineutils.h
index 76180a8f4..91d02d480 100644
--- a/src/xine-utils/xineutils.h
+++ b/src/xine-utils/xineutils.h
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xineutils.h,v 1.88 2004/06/14 16:36:40 mroi Exp $
+ * $Id: xineutils.h,v 1.89 2004/07/14 18:51:29 valtri Exp $
*
*/
#ifndef XINEUTILS_H
@@ -1094,6 +1094,11 @@ void xine_list_delete_current (xine_list_t *l);
*/
char *xine_get_system_encoding(void);
+/*
+ * guess default encoding for the subtitles
+ */
+const char *xine_guess_spu_encoding(void);
+
/**
* get base name
*/