1 /*--------------------------------------------------------------------------*/
5 /*--------------------------------------------------------------------------*/
8 #include "localization.h"
9 #include "MALLOC.h" /* MALLOC */
10 /*--------------------------------------------------------------------------*/
11 static struct hashtable *Table_Scilab_Errors=NULL;
12 static struct hashtable *Table_Scilab_Messages=NULL;
13 static struct hashtable *Table_Scilab_Menus=NULL;
14 /*--------------------------------------------------------------------------*/
15 static char *QueryString(struct hashtable *Table,char *Tag);
16 /*--------------------------------------------------------------------------*/
17 BOOL AppendHashTableLocalization(struct hashtable *Table,char *Tag,char* MsgStr,char *Path)
20 struct key_string *k=NULL;
21 struct value_string *v=NULL;
24 char *Key_Path = NULL;
26 k=(struct key_string*)MALLOC(sizeof(struct key_string));
27 v=(struct value_string*)MALLOC(sizeof(struct value_string));
29 Key_Tag=(char*)MALLOC(sizeof(char)*(strlen(Tag)+1));
30 Key_Value=(char*)MALLOC(sizeof(char)*(strlen(MsgStr)+1));
31 Key_Path=(char*)MALLOC(sizeof(char)*(strlen(Path)+1));
33 if (k && v && Key_Tag && Key_Value && Key_Path)
36 strcpy(Key_Value,MsgStr);
37 strcpy(Key_Path,Path);
39 k->Key_String = Key_Tag;
40 v->Value_String = Key_Value;
41 v->Path_String = Key_Path;
43 if (InsertHashtable_string(Table,k, v)) bOK=TRUE;
49 /*--------------------------------------------------------------------------*/
50 struct hashtable *GetHashTableScilabErrors(void)
52 return Table_Scilab_Errors;
54 /*--------------------------------------------------------------------------*/
55 struct hashtable *GetHashTableScilabMessages(void)
57 return Table_Scilab_Messages;
59 /*--------------------------------------------------------------------------*/
60 struct hashtable *GetHashTableScilabMenus(void)
62 return Table_Scilab_Menus;
64 /*--------------------------------------------------------------------------*/
65 BOOL InitializeHashTableScilabErrors(void)
67 Table_Scilab_Errors=CreateHashtable_string();
68 if (Table_Scilab_Errors) return TRUE;
71 /*--------------------------------------------------------------------------*/
72 BOOL InitializeHashTableScilabMessages(void)
74 Table_Scilab_Messages=CreateHashtable_string();
75 if (Table_Scilab_Messages) return TRUE;
78 /*--------------------------------------------------------------------------*/
79 BOOL InitializeHashTableScilabMenus(void)
81 Table_Scilab_Menus=CreateHashtable_string();
82 if (Table_Scilab_Menus) return TRUE;
85 /*--------------------------------------------------------------------------*/
86 int DisposeHashTableScilabErrors(void)
88 if (Table_Scilab_Errors)
90 hashtable_destroy( Table_Scilab_Errors, 0 ) ;
91 Table_Scilab_Errors=NULL;
95 /*--------------------------------------------------------------------------*/
96 int DisposeHashTableScilabMessages(void)
98 if (Table_Scilab_Messages)
100 hashtable_destroy( Table_Scilab_Messages, 0 ) ;
101 Table_Scilab_Messages=NULL;
105 /*--------------------------------------------------------------------------*/
106 int DisposeHashTableScilabMenus(void)
108 if (Table_Scilab_Menus)
110 hashtable_destroy(Table_Scilab_Menus, 0 ) ;
111 Table_Scilab_Menus=NULL;
115 /*--------------------------------------------------------------------------*/
116 char *QueryStringError(char *Tag)
118 return QueryString(Table_Scilab_Errors,Tag);
120 /*--------------------------------------------------------------------------*/
121 char *QueryStringMessage(char *Tag)
123 return QueryString(Table_Scilab_Messages,Tag);
125 /*--------------------------------------------------------------------------*/
126 char *QueryStringMenu(char *Tag)
128 return QueryString(Table_Scilab_Menus,Tag);
130 /*--------------------------------------------------------------------------*/
131 static char *QueryString(struct hashtable *Table,char *Tag)
133 char *RetString=NULL;
136 printf("Internal error: localization table empty (looking for %s)!\nAre you sure that the localization files have been loaded ?\n",Tag);
139 RetString = SearchHashtable_string(Table,Tag);
142 /*--------------------------------------------------------------------------*/