8c372fc9995ea963584b5cc8cee3f9cf406ee6f8
[platform/core/multimedia/libmm-fileinfo.git] / utils / mm_file_util_locale.c
1 /*
2  * libmm-fileinfo
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Haejeong Kim <backto.kim@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 #include <stdlib.h>
23 #include <string.h>
24 #include <vconf.h>
25
26 #include "mm_file_debug.h"
27 #include "mm_file_utils.h"
28
29 typedef enum {
30         MMFILE_LANGUAGE_ENGLISH = 0x00, /**<Language - English*/
31         MMFILE_LANGUAGE_GERMAN,                 /**<Language - German*/
32         MMFILE_LANGUAGE_FRENCH,                 /**<Language - French*/
33         MMFILE_LANGUAGE_ITALIAN,                        /**<Language - Italian*/
34         MMFILE_LANGUAGE_DUTCH,                  /**<Language - Dutch*/
35         MMFILE_LANGUAGE_SPANISH,                        /**<Language - Spanish*/
36         MMFILE_LANGUAGE_GREEK,                  /**<Language - Greek*/
37         MMFILE_LANGUAGE_PORTUGUESE,             /**<Language - Portuguese*/
38         MMFILE_LANGUAGE_TURKISH,                        /**<Language - Turkish*/
39         MMFILE_LANGUAGE_JAPAN_CP932,            /**<Language - Japanease for CP932*/
40         MMFILE_LANGUAGE_SIM_CHINA,              /**<Language - Simplified Chinese*/
41         MMFILE_LANGUAGE_TRA_CHINA,              /**<Language - Traditional Chinese*/
42         MMFILE_LANGUAGE_JAPAN,                  /**<Language - Japanease*/
43 #if 0
44         MMFILE_LANGUAGE_BULGARIAN,              /**<Language - Bulgarian*/
45         MMFILE_LANGUAGE_ARABIC,                 /**<Language - Arabic*/
46 #endif
47         MMFILE_LANGUAGE_MAX
48 } eMMFileSettingPhoneLanguage;
49
50 typedef struct {
51         int lang_type;
52         const char *char_set;
53         const char *lang_prefix;
54 } mmf_locale_info_s;
55
56 static mmf_locale_info_s g_locale_map[MMFILE_LANGUAGE_MAX] = {
57                 {MMFILE_LANGUAGE_ENGLISH,               "EUC-KR",       "en"},
58                 {MMFILE_LANGUAGE_GERMAN,                "ISO8859-1",    "de"},
59                 {MMFILE_LANGUAGE_FRENCH,                "ISO8859-1",    "fr"},
60                 {MMFILE_LANGUAGE_ITALIAN,               "ISO8859-1",    "it"},
61                 {MMFILE_LANGUAGE_DUTCH,         "ISO8859-1",    "nl"},
62                 {MMFILE_LANGUAGE_SPANISH,               "ISO8859-1",    "es"},
63                 {MMFILE_LANGUAGE_GREEK,         "ISO8859-7",    "el"},
64                 {MMFILE_LANGUAGE_PORTUGUESE,    "ISO8859-1",    "pt"},
65                 {MMFILE_LANGUAGE_TURKISH,               "ISO8859-3",    "tr"},
66                 {MMFILE_LANGUAGE_JAPAN_CP932,   "CP932",                NULL},
67                 {MMFILE_LANGUAGE_SIM_CHINA,     "GBK",          "zh_CN"},
68                 {MMFILE_LANGUAGE_TRA_CHINA,     "BIG5",         "zh"},
69                 {MMFILE_LANGUAGE_JAPAN,         "SHIFT_JIS",    "ja_JP"},
70 #if 0
71                 {MMFILE_LANGUAGE_BULGARIAN, NULL, NULL},
72                 {MMFILE_LANGUAGE_ARABIC, NULL, NULL},
73 #endif
74 };
75
76
77 char *MMFileUtilGetLocale(void)
78 {
79         char *lang = NULL;
80         int idx = 0;
81
82         lang = vconf_get_str(VCONFKEY_LANGSET);
83
84         if (lang != NULL) {
85                 for (idx = 0; idx < MMFILE_LANGUAGE_MAX; idx++) {
86                         if (g_locale_map[idx].lang_prefix != NULL) {
87                                 if (strncmp(lang, g_locale_map[idx].lang_prefix, strlen(g_locale_map[idx].lang_prefix)) == 0) {
88                                         debug_msg(DEBUG, "[%s]find character set [%d]", lang, idx);
89                                         break;
90                                 }
91                         }
92                 }
93         } else {
94                 debug_error(DEBUG, "language value is NULL, use default character set");
95                 idx = 0;
96         }
97
98         if (idx >= MMFILE_LANGUAGE_MAX) {
99                 debug_msg(DEBUG, "[%s]Cannot find character set. Use default one", lang);
100                 idx = 0;
101         }
102
103         if (lang) {
104                 free(lang);
105                 lang = NULL;
106         }
107
108         return (char *)g_locale_map[idx].char_set;
109 }