Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
WEBUI: Add default web language selection to global config, fixes #3097
  • Loading branch information
perexg committed Sep 27, 2015
1 parent 70c088d commit 28f7a34
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 17 deletions.
2 changes: 1 addition & 1 deletion src/access.c
Expand Up @@ -1311,7 +1311,7 @@ access_entry_conn_limit_type_enum ( void *p, const char *lang )
return strtab2htsmsg(conn_limit_type_tab, 1, lang);
}

static htsmsg_t *
htsmsg_t *
language_get_list ( void *obj, const char *lang )
{
htsmsg_t *m = htsmsg_create_map();
Expand Down
5 changes: 5 additions & 0 deletions src/access.h
Expand Up @@ -298,4 +298,9 @@ ipblock_entry_save(ipblock_entry_t *pw);
void access_init(int createdefault, int noacl);
void access_done(void);

/**
*
*/
htsmsg_t *language_get_list ( void *obj, const char *lang );

#endif /* ACCESS_H_ */
18 changes: 17 additions & 1 deletion src/config.c
Expand Up @@ -1904,13 +1904,21 @@ const idclass_t config_class = {
.type = PT_STR,
.islist = 1,
.id = "info_area",
.name = N_("Information Area"),
.name = N_("Information area"),
.set = config_class_info_area_set,
.get = config_class_info_area_get,
.list = config_class_info_area_list,
.opts = PO_LORDER,
.group = 3
},
{
.type = PT_STR,
.id = "ulanguage",
.name = N_("User language"),
.list = language_get_list,
.off = offsetof(config_t, ulanguage),
.group = 3
},
{
.type = PT_STR,
.id = "muxconfpath",
Expand Down Expand Up @@ -1987,3 +1995,11 @@ const char *config_get_language ( void )
return "eng";
return s;
}

const char *config_get_ulanguage ( void )
{
const char *s = config.ulanguage;
if (s == NULL || *s == '\0')
return NULL;
return s;
}
2 changes: 2 additions & 0 deletions src/config.h
Expand Up @@ -34,6 +34,7 @@ typedef struct config {
char *server_name;
char *language;
char *info_area;
char *ulanguage;
char *muxconf_path;
int prefer_picon;
char *chicon_path;
Expand All @@ -57,5 +58,6 @@ void config_save ( void );

const char *config_get_server_name ( void );
const char *config_get_language ( void );
const char *config_get_ulanguage ( void );

#endif /* __TVH_CONFIG__H__ */
37 changes: 22 additions & 15 deletions src/lang_codes.c
Expand Up @@ -698,26 +698,33 @@ const char *lang_code_preferred( void )

char *lang_code_user( const char *ucode )
{
const char *codes = config_get_language(), *s;
const char *pucode = config_get_ulanguage(), *s;
const char *codes = config_get_language();
char *ret;

if (!codes)
if (!pucode && !codes)
return ucode ? strdup(ucode) : NULL;
if (!ucode)
return codes ? strdup(codes) : NULL;
ret = malloc(strlen(codes) + strlen(ucode ?: "") + 1);
ret = malloc(strlen(pucode ?: "") + strlen(codes ?: "") +
strlen(ucode ?: "") + 3);
strcpy(ret, ucode);
while (codes && *codes) {
s = codes;
while (*s && *s != ',')
s++;
if (strncmp(codes, ucode ?: "", s - codes)) {
strcat(ret, ",");
strncat(ret, codes, s - codes);
if (pucode && strcmp(ret, pucode)) {
strcat(ret, ",");
strcat(ret, pucode);
}
if (codes) {
while (codes && *codes) {
s = codes;
while (*s && *s != ',')
s++;
if (strncmp(codes, ucode ?: "", s - codes) &&
strncmp(codes, pucode ?: "", s - codes)) {
strcat(ret, ",");
strncat(ret, codes, s - codes);
}
if (*s && *s == ',')
s++;
codes = s;
}
if (*s && *s == ',')
s++;
codes = s;
}
return ret;
}
Expand Down

0 comments on commit 28f7a34

Please sign in to comment.