Fix language handling (bug #4399)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5783 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.2-netsec
Mark Spencer 20 years ago
parent 4e329973eb
commit f4d629f4ca

@ -729,23 +729,31 @@ int ast_fileexists(const char *filename, const char *fmt, const char *preflang)
*c = '\0';
postfix = c+1;
prefix = tmp;
snprintf(filename2, sizeof(filename2), "%s/%s/%s", prefix, preflang, postfix);
} else {
postfix = tmp;
prefix="";
snprintf(filename2, sizeof(filename2), "%s/%s", preflang, postfix);
}
snprintf(filename2, sizeof(filename2), "%s/%s/%s", prefix, preflang, postfix);
res = ast_filehelper(filename2, NULL, fmt, ACTION_EXISTS);
if (res < 1) {
char *stringp=NULL;
strncpy(lang2, preflang, sizeof(lang2)-1);
stringp=lang2;
strsep(&stringp, "_");
/* If language is a specific locality of a language (like es_MX), strip the locality and try again */
if (strcmp(lang2, preflang)) {
snprintf(filename2, sizeof(filename2), "%s/%s/%s", prefix, lang2, postfix);
if (ast_strlen_zero(prefix)) {
snprintf(filename2, sizeof(filename2), "%s/%s", lang2, postfix);
} else {
snprintf(filename2, sizeof(filename2), "%s/%s/%s", prefix, lang2, postfix);
}
res = ast_filehelper(filename2, NULL, fmt, ACTION_EXISTS);
}
}
}
/* Fallback to no language (usually winds up being American English) */
if (res < 1) {
res = ast_filehelper(filename, NULL, fmt, ACTION_EXISTS);
}

Loading…
Cancel
Save