Index: tools/checkwps/SOURCES =================================================================== --- tools/checkwps/SOURCES (revision 22826) +++ tools/checkwps/SOURCES (working copy) @@ -2,6 +2,7 @@ ../../apps/gui/skin_engine/skin_parser.c ../../apps/gui/skin_engine/skin_buffer.c ../../apps/misc.c +../../apps/language.c ../../firmware/common/strlcpy.c checkwps.c Index: apps/language.c =================================================================== --- apps/language.c (revision 22826) +++ apps/language.c (working copy) @@ -98,3 +98,16 @@ close(fd); return retcode; } + +int lang_english_to_id(const char* english) +{ + int i; + unsigned char *ptr = (unsigned char *) language_builtin; + + for (i = 0; i < LANG_LAST_INDEX_IN_ARRAY; i++) { + if (!strcmp(ptr, english)) + return i; + ptr += strlen((char *)ptr) + 1; /* advance pointer to next string */ + } + return -1; +} Index: apps/language.h =================================================================== --- apps/language.h (revision 22826) +++ apps/language.h (working copy) @@ -27,4 +27,7 @@ /* load a given language file */ int lang_load(const char *filename); +/* get the ID of an english string so it can be localised */ +int lang_english_to_id(const char* english); + #endif Index: apps/gui/skin_engine/wps_debug.c =================================================================== --- apps/gui/skin_engine/wps_debug.c (revision 22826) +++ apps/gui/skin_engine/wps_debug.c (working copy) @@ -76,6 +76,9 @@ snprintf(buf, bufsize, "String '%s'", (char*)token->value.data); break; + case WPS_TOKEN_TRANSLATEDSTRING: + snprintf(buf, bufsize, "String ID '%d'", token->value.i); + break; #ifdef HAVE_LCD_BITMAP case WPS_TOKEN_ALIGN_LEFT: Index: apps/gui/skin_engine/skin_parser.c =================================================================== --- apps/gui/skin_engine/skin_parser.c (revision 22826) +++ apps/gui/skin_engine/skin_parser.c (working copy) @@ -27,6 +27,7 @@ #include "misc.h" #include "plugin.h" #include "viewport.h" +#include "language.h" #ifdef __PCTOOL__ #ifdef WPSEDITOR @@ -132,7 +133,7 @@ struct wps_token *token, struct wps_data *wps_data); static int parse_dir_level(const char *wps_bufptr, struct wps_token *token, struct wps_data *wps_data); -static int parse_setting(const char *wps_bufptr, +static int parse_setting_and_lang(const char *wps_bufptr, struct wps_token *token, struct wps_data *wps_data); #ifdef HAVE_LCD_BITMAP @@ -349,8 +350,11 @@ #endif #endif - { WPS_TOKEN_SETTING, "St", WPS_REFRESH_DYNAMIC, parse_setting }, - + { WPS_TOKEN_SETTING, "St", WPS_REFRESH_DYNAMIC, + parse_setting_and_lang }, + { WPS_TOKEN_TRANSLATEDSTRING, "Sx", WPS_REFRESH_STATIC, + parse_setting_and_lang }, + { WPS_TOKEN_LASTTOUCH, "Tl", WPS_REFRESH_DYNAMIC, parse_timeout }, { WPS_NO_TOKEN, "T", 0, parse_touchregion }, @@ -746,14 +750,15 @@ #endif /* HAVE_LCD_BITMAP */ -static int parse_setting(const char *wps_bufptr, - struct wps_token *token, - struct wps_data *wps_data) +static int parse_setting_and_lang(const char *wps_bufptr, + struct wps_token *token, + struct wps_data *wps_data) { (void)wps_data; const char *ptr = wps_bufptr; const char *end; int i; + char temp[64]; /* Find the setting's cfg_name */ if (*ptr != '|') @@ -762,17 +767,26 @@ end = strchr(ptr,'|'); if (!end) return WPS_ERROR_INVALID_PARAM; - - /* Find the setting */ - for (i=0; itype == WPS_TOKEN_TRANSLATEDSTRING) + { + i = lang_english_to_id(temp); + if (i < 0) + return WPS_ERROR_INVALID_PARAM; + } + else + { + /* Find the setting */ + for (i=0; ivalue.i = i; Index: apps/gui/skin_engine/skin_tokens.c =================================================================== --- apps/gui/skin_engine/skin_tokens.c (revision 22826) +++ apps/gui/skin_engine/skin_tokens.c (working copy) @@ -170,6 +170,9 @@ case WPS_TOKEN_STRING: return (char*)token->value.data; + + case WPS_TOKEN_TRANSLATEDSTRING: + return (char*)P2STR(ID2P(token->value.i)); case WPS_TOKEN_TRACK_TIME_ELAPSED: format_time(buf, buf_size, Index: apps/gui/skin_engine/skin_tokens.h =================================================================== --- apps/gui/skin_engine/skin_tokens.h (revision 22826) +++ apps/gui/skin_engine/skin_tokens.h (working copy) @@ -32,6 +32,7 @@ /* Markers */ WPS_TOKEN_CHARACTER, WPS_TOKEN_STRING, + WPS_TOKEN_TRANSLATEDSTRING, /* Alignment */ WPS_TOKEN_ALIGN_LEFT,