Custom ediv_strlwr replacing strlwr call on language.c

This commit is contained in:
Víctor Román Archidona 2018-09-22 13:26:53 +02:00
parent 71dd8b2a46
commit 3c592e1d1c

View file

@ -18,75 +18,83 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#ifdef _WIN32 #ifdef _WIN32
# include <windows.h> #include <windows.h>
#else #else
# include <stdlib.h> #include <stdlib.h>
# include <string.h> #include <string.h>
#endif #endif
#include "shared.h" #include "shared.h"
#include "language.h" #include "language.h"
#include "edivcfg/iniparser.h" #include "edivcfg/iniparser.h"
static char *ediv_strlwr(char *str);
int detecta_idioma_iso(char* lang) int detecta_idioma_iso(char *lang)
{ {
int i; int i;
static char getid[NUM_LANGUAGES][3] = { static char getid[NUM_LANGUAGES][3] = {
"es", /* español */ "es", /* español */
"it", /* italiano */ "it", /* italiano */
"pt", /* portugués */ "pt", /* portugués */
"en", /* inglés */ "en", /* inglés */
"ca", /* catalán */ "ca", /* catalán */
"eu" /* euskera */ "eu" /* euskera */
}; };
if(lang==NULL) return DEFAULT_LANGUAGE; if (lang == NULL)
if(strlen(lang)>2) lang[2]=0; return DEFAULT_LANGUAGE;
strlwr(lang); if (strlen(lang) > 2)
for(i=0;i<NUM_LANGUAGES;i++) lang[2] = 0;
if(lang[0]==getid[i][0]) ediv_strlwr(lang);
if(lang[1]==getid[i][1]) for (i = 0; i < NUM_LANGUAGES; i++)
if (lang[0] == getid[i][0])
if (lang[1] == getid[i][1])
break; break;
if(i==NUM_LANGUAGES) i=DEFAULT_LANGUAGE; if (i == NUM_LANGUAGES)
i = DEFAULT_LANGUAGE;
return i; return i;
} }
int detecta_idioma() int detecta_idioma()
{ {
char* langcfg=NULL; char *langcfg = NULL;
if (ini!=NULL) langcfg=iniparser_getstr(ini,"general:lang"); if (ini != NULL)
if(langcfg==NULL) { langcfg = iniparser_getstr(ini, "general:lang");
#ifdef _WIN32 if (langcfg == NULL)
int i; {
static int getid[NUM_LANGUAGES] = { #ifdef _WIN32
0x0a, /* español */ int i;
0x10, /* italiano */ static int getid[NUM_LANGUAGES] = {
0x16, /* portugués */ 0x0a, /* español */
0x09, /* inglés */ 0x10, /* italiano */
0x03, /* catalán */ 0x16, /* portugués */
0x2d /* euskera */ 0x09, /* inglés */
}; 0x03, /* catalán */
LANGID lang; 0x2d /* euskera */
};
LANGID lang;
lang=GetSystemDefaultLangID()&0xff; lang = GetSystemDefaultLangID() & 0xff;
for(i=0;i<NUM_LANGUAGES;i++) for (i = 0; i < NUM_LANGUAGES; i++)
if(lang==getid[i]) break; if (lang == getid[i])
if(i==NUM_LANGUAGES) i=DEFAULT_LANGUAGE; break;
return i; if (i == NUM_LANGUAGES)
#else i = DEFAULT_LANGUAGE;
langcfg=getenv("LANG"); return i;
if(langcfg==NULL) return DEFAULT_LANGUAGE; #else
else return detecta_idioma_iso(langcfg); langcfg = getenv("LANG");
#endif if (langcfg == NULL)
return DEFAULT_LANGUAGE;
else
return detecta_idioma_iso(langcfg);
#endif
} }
else return detecta_idioma_iso(langcfg); else
return detecta_idioma_iso(langcfg);
} }
char *translate_error(int num)
char* translate_error(int num)
{ {
static char *e[NUM_LANGUAGES][74] = { static char *e[NUM_LANGUAGES][74] = {
@ -99,7 +107,7 @@ char* translate_error(int num)
return e[idioma][num]; return e[idioma][num];
} }
char* translate_warning(int num) char *translate_warning(int num)
{ {
static char *e[NUM_LANGUAGES][3] = { static char *e[NUM_LANGUAGES][3] = {
@ -112,7 +120,7 @@ char* translate_warning(int num)
return e[idioma][num]; return e[idioma][num];
} }
char* translate_dll_error(int num) char *translate_dll_error(int num)
{ {
static char *e[NUM_LANGUAGES][10] = { static char *e[NUM_LANGUAGES][10] = {
@ -123,7 +131,7 @@ char* translate_dll_error(int num)
return e[idioma][num]; return e[idioma][num];
} }
char* translate_ltlex_error(int num) char *translate_ltlex_error(int num)
{ {
static char *e[NUM_LANGUAGES][5] = { static char *e[NUM_LANGUAGES][5] = {
@ -134,8 +142,7 @@ char* translate_ltlex_error(int num)
return e[idioma][num]; return e[idioma][num];
} }
char *translate(int num)
char* translate(int num)
{ {
static char *e[NUM_LANGUAGES][74] = { static char *e[NUM_LANGUAGES][74] = {
@ -145,3 +152,16 @@ char* translate(int num)
}; };
return e[idioma][num]; return e[idioma][num];
} }
static char *ediv_strlwr(char *str)
{
unsigned char *p = (unsigned char *)str;
while (*p)
{
*p = tolower((unsigned char)*p);
p++;
}
return str;
}