to build scilab on Windows (temp.)
[scilab.git] / scilab / modules / localization / src / c / InitializeLocalization.c
1 /** 
2 * INRIA 2007 
3 * Rewrite using gettext by Sylvestre Ledru <sylvestre.ledru@inria.fr>
4 */
5 #include <string.h>
6 #include <stdlib.h>
7 #include "MALLOC.h"
8 #include "InitializeLocalization.h"
9 #include "localization.h"
10 #include "setgetSCIpath.h"
11 #include "inisci-c.h"
12 #include "machine.h"
13 #include "scilabDefaults.h"
14 #ifdef _MSC_VER
15 #define _putenv putenv
16 #endif
17 /*-----------------------------------------------------------------------------------*/ 
18
19 /**
20  * Export the variable LC_ALL to the system
21  *
22  * @param locale the locale (ex : fr_FR or en_US)
23  */
24 static void putEnvLC_ALL(char *locale){
25
26         char *localeDeclared=NULL;      
27
28         localeDeclared=(char*)MALLOC(sizeof(char)*strlen(EXPORTENVLOCALE)+ strlen("=")+ strlen(locale)+1);
29         strcat(localeDeclared,EXPORTENVLOCALE);
30         strcat(localeDeclared,"=");
31         strcat(localeDeclared,locale);
32         /* It will put in the env something like LC_ALL=fr_FR */
33
34         if (putenv (localeDeclared)){
35                 fprintf(stderr,"Failed to declare the system variable LC_ALL\n");
36         }
37         FREE(localeDeclared);
38 }
39
40
41 BOOL InitializeLocalization(void)
42 {
43 #ifdef HAVE_LIBINTL_H
44
45         char *pathLocales=getSCIpath();
46
47         char *ret=NULL;
48         ret=setlocale(LC_ALL,"");
49     if (ret==NULL){
50                 fprintf(stderr, "I18N: Doesn't support your locale.\n" );
51                 return FALSE;
52         }
53         putEnvLC_ALL(ret);
54
55         strcat(pathLocales, PATHLOCALIZATIONFILE);
56
57         if (bindtextdomain(NAMELOCALIZATIONDOMAIN,pathLocales)==NULL){
58                 fprintf(stderr, "Error while binding the domain\n");
59                 return FALSE;
60         }
61
62         if (textdomain(NAMELOCALIZATIONDOMAIN)==NULL){
63                 fprintf(stderr, "Error while declaring the text domain\n");
64                 return FALSE;
65         }
66
67         return TRUE;
68 #else
69         fprintf(stderr, "setlocale didn't exist on the computer used to compile Scilab ! This is abnormal ! No localization will be working for this distribution of Scilab.\n");
70         return FALSE;
71 #endif
72 }
73 /*-----------------------------------------------------------------------------------*/ 
74