getting language stuff more self-contained

This commit is contained in:
Albert Cahalan 2004-12-28 04:02:20 +00:00
parent 93907b308a
commit d6275ecb61

View file

@ -504,7 +504,7 @@ static void debug(const char * const str)
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
// Language stuff // Language stuff
static int language; static int language_enum;
/* Possible languages: */ /* Possible languages: */
@ -561,6 +561,8 @@ enum {
NUM_LANGS NUM_LANGS
}; };
static const char * lang_prefix;
static const char * lang_prefixes[NUM_LANGS] = { static const char * lang_prefixes[NUM_LANGS] = {
"af", "af",
"be", "be",
@ -674,7 +676,7 @@ static int need_right_to_left(int l)
/* Determine the current language/locale, and set the language string: */ /* Determine the current language/locale, and set the language string: */
static int current_language(void) static void set_current_language(void)
{ {
char * loc; char * loc;
#ifdef WIN32 #ifdef WIN32
@ -732,8 +734,14 @@ static int current_language(void)
sleep(10); sleep(10);
#endif #endif
language_enum = lang;
lang_prefix = lang_prefixes[lang];
#ifdef DEBUG
printf("DEBUG: Language is %s (%d)\n", lang_prefix, language_enum);
#endif
return lang;
} }
@ -6027,13 +6035,7 @@ static void setup(int argc, char * argv[])
textdomain("tuxpaint"); textdomain("tuxpaint");
language = current_language(); set_current_language();
#ifdef DEBUG
printf("DEBUG: Language is %s (%d)\n", lang_prefixes[language], language);
#endif
#ifndef WIN32 #ifndef WIN32
putenv((char *) "SDL_VIDEO_X11_WMCLASS=TuxPaint.TuxPaint"); putenv((char *) "SDL_VIDEO_X11_WMCLASS=TuxPaint.TuxPaint");
#endif #endif
@ -6541,16 +6543,16 @@ static void setup(int argc, char * argv[])
} }
if (need_own_font(language)) if (need_own_font(language_enum))
{ {
snprintf(str, sizeof(str), "%sfonts/locale/%s.ttf", snprintf(str, sizeof(str), "%sfonts/locale/%s.ttf",
DATA_PREFIX, lang_prefixes[language]); DATA_PREFIX, lang_prefix);
locale_font = TTF_OpenFont(str, 18); locale_font = TTF_OpenFont(str, 18);
if (locale_font == NULL) if (locale_font == NULL)
{ {
locale_font = try_alternate_font(language); locale_font = try_alternate_font(language_enum);
if (locale_font == NULL) if (locale_font == NULL)
{ {
fprintf(stderr, fprintf(stderr,
@ -6570,7 +6572,7 @@ static void setup(int argc, char * argv[])
bindtextdomain("tuxpaint", LOCALEDIR); bindtextdomain("tuxpaint", LOCALEDIR);
textdomain("tuxpaint"); textdomain("tuxpaint");
language = current_language(); set_current_language();
} }
} }
} }
@ -6797,7 +6799,7 @@ static void setup(int argc, char * argv[])
{ {
if (strlen(title_names[i]) > 0) if (strlen(title_names[i]) > 0)
{ {
if (need_own_font(language) && locale_font != NULL && if (need_own_font(language_enum) && locale_font != NULL &&
strcmp(gettext(title_names[i]), title_names[i]) != 0) strcmp(gettext(title_names[i]), title_names[i]) != 0)
{ {
tmp_surf = TTF_RenderUTF8_Blended(locale_font, tmp_surf = TTF_RenderUTF8_Blended(locale_font,
@ -6969,7 +6971,7 @@ static SDL_Surface * do_render_button_label(const char * const label)
SDL_Surface * tmp_surf, * surf; SDL_Surface * tmp_surf, * surf;
SDL_Color black = {0, 0, 0, 0}; SDL_Color black = {0, 0, 0, 0};
if (need_own_font(language) && locale_font != NULL && if (need_own_font(language_enum) && locale_font != NULL &&
strcmp(gettext(label), label) != 0) strcmp(gettext(label), label) != 0)
{ {
tmp_surf = TTF_RenderUTF8_Blended(locale_font, textdir(gettext(label)), black); tmp_surf = TTF_RenderUTF8_Blended(locale_font, textdir(gettext(label)), black);
@ -9147,7 +9149,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
if (x > left) if (x > left)
{ {
if (need_right_to_left(language) && want_right_to_left) if (need_right_to_left(language_enum) && want_right_to_left)
anti_carriage_return(left, right, top, top + text->h, y + text->h, anti_carriage_return(left, right, top, top + text->h, y + text->h,
x - left); x - left);
@ -9206,7 +9208,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
{ {
if (x + text->w > right) if (x + text->w > right)
{ {
if (need_right_to_left(language) && want_right_to_left) if (need_right_to_left(language_enum) && want_right_to_left)
anti_carriage_return(left, right, top, top + text->h, anti_carriage_return(left, right, top, top + text->h,
y + text->h, x - left); y + text->h, x - left);
@ -9216,7 +9218,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
dest.x = x; dest.x = x;
if (need_right_to_left(language) && want_right_to_left) if (need_right_to_left(language_enum) && want_right_to_left)
dest.y = top; dest.y = top;
else else
dest.y = y; dest.y = y;
@ -9240,7 +9242,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
{ {
/* This word needs to move down? */ /* This word needs to move down? */
if (need_right_to_left(language) && want_right_to_left) if (need_right_to_left(language_enum) && want_right_to_left)
anti_carriage_return(left, right, top, top + text->h, y + text->h, anti_carriage_return(left, right, top, top + text->h, y + text->h,
x - left); x - left);
@ -9250,7 +9252,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
dest.x = x; dest.x = x;
if (need_right_to_left(language) && want_right_to_left) if (need_right_to_left(language_enum) && want_right_to_left)
dest.y = top; dest.y = top;
else else
dest.y = y; dest.y = y;
@ -9336,7 +9338,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
if (x + text->w > right) /* Correct? */ if (x + text->w > right) /* Correct? */
{ {
if (need_right_to_left(language) && want_right_to_left) if (need_right_to_left(language_enum) && want_right_to_left)
anti_carriage_return(left, right, top, top + text->h, y + text->h, anti_carriage_return(left, right, top, top + text->h, y + text->h,
x - left); x - left);
@ -9349,7 +9351,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
dest.x = x; dest.x = x;
if (need_right_to_left(language) && want_right_to_left) if (need_right_to_left(language_enum) && want_right_to_left)
dest.y = top; dest.y = top;
else else
dest.y = y; dest.y = y;
@ -9379,7 +9381,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
/* Right-justify the final line of text, in right-to-left mode: */ /* Right-justify the final line of text, in right-to-left mode: */
if (need_right_to_left(language) && want_right_to_left && last_text_height > 0) if (need_right_to_left(language_enum) && want_right_to_left && last_text_height > 0)
{ {
src.x = left; src.x = left;
src.y = top; src.y = top;
@ -9417,10 +9419,10 @@ static Mix_Chunk * loadsound(const char * const fname)
/* First, check for localized version of sound: */ /* First, check for localized version of sound: */
snd_fname = malloc(strlen(fname) + strlen(lang_prefixes[language]) + 2); snd_fname = malloc(strlen(fname) + strlen(lang_prefix) + 2);
strcpy(snd_fname, fname); strcpy(snd_fname, fname);
snprintf(tmp_str, sizeof(tmp_str), "_%s.wav", lang_prefixes[language]); snprintf(tmp_str, sizeof(tmp_str), "_%s.wav", lang_prefix);
if (strstr(snd_fname, ".png") != NULL) if (strstr(snd_fname, ".png") != NULL)
@ -9546,12 +9548,12 @@ static char * loaddesc(const char * const fname)
/* See if it's the one for this locale... */ /* See if it's the one for this locale... */
if (strstr(buf, lang_prefixes[language]) == buf) if (strstr(buf, lang_prefix) == buf)
{ {
debug(buf + strlen(lang_prefixes[language])); debug(buf + strlen(lang_prefix));
if (strstr(buf + strlen(lang_prefixes[language]), ".utf8=") == if (strstr(buf + strlen(lang_prefix), ".utf8=") ==
buf + strlen(lang_prefixes[language])) buf + strlen(lang_prefix))
{ {
found = 1; found = 1;
@ -9569,7 +9571,7 @@ static char * loaddesc(const char * const fname)
if (found) if (found)
{ {
return(strdup(buf + (strlen(lang_prefixes[language])) + 6)); return(strdup(buf + (strlen(lang_prefix)) + 6));
} }
else else
{ {
@ -13727,7 +13729,7 @@ static unsigned char * textdir(const unsigned char * const str)
dstr = (unsigned char *) malloc((strlen(str) + 5) * sizeof(unsigned char)); dstr = (unsigned char *) malloc((strlen(str) + 5) * sizeof(unsigned char));
if (need_right_to_left(language)) if (need_right_to_left(language_enum))
{ {
dstr[strlen(str)] = '\0'; dstr[strlen(str)] = '\0';