diff options
-rw-r--r-- | !NetSurf/Resources/LangNames | 47 | ||||
-rw-r--r-- | !NetSurf/Resources/en/Templates,fec | bin | 5103 -> 5443 bytes | |||
-rw-r--r-- | !NetSurf/Resources/fr/Templates,fec | bin | 5231 -> 5556 bytes | |||
-rw-r--r-- | content/fetch.c | 7 | ||||
-rw-r--r-- | desktop/options.c | 3 | ||||
-rw-r--r-- | desktop/options.h | 1 | ||||
-rw-r--r-- | riscos/dialog.c | 22 | ||||
-rw-r--r-- | riscos/gui.c | 24 | ||||
-rw-r--r-- | riscos/gui.h | 4 |
9 files changed, 101 insertions, 7 deletions
diff --git a/!NetSurf/Resources/LangNames b/!NetSurf/Resources/LangNames new file mode 100644 index 000000000..d4791fa4f --- /dev/null +++ b/!NetSurf/Resources/LangNames @@ -0,0 +1,47 @@ +lang_af:Afrikaans +lang_bm:Bamanankan +lang_ca:Català +lang_cs:Cestina +lang_cy:Cymraeg +lang_da:Dansk +lang_de:Deutsch +lang_en:English +lang_es:Español +lang_et:Eesti +lang_eu:euskera +lang_ff:Fulfulde +lang_fi:suomi +lang_fr:français +lang_ga:Gaeilge +lang_gl:Galego +lang_ha:Hausa +lang_hr:Hrvatski +lang_hu:Magyar +lang_id:Bahasa indonesia +lang_is:Íslenska +lang_it:italiano +lang_lt:Lietuviskai +lang_lv:Latviesu +lang_ms:Bahasa melayu +lang_mt:Malti +lang_nl:Nederlands +lang_no:Norsk +lang_pl:Polski +lang_pt:português +lang_rn:Kirundi +lang_ro:Româna +lang_rw:Kinyarwanda +lang_sk:Slovencina +lang_sl:Slovenscina +lang_so:Somali +lang_sq:shqip +lang_sr:Srpski +lang_sv:svenska +lang_sw:Kiswahili +lang_tr:Türkçe +lang_uz:o'zbek +lang_vi:Tiêng Viêêt +lang_wo:Wolof +lang_xs:isiXhosa +lang_yo:Yorùbá +lang_zu:isiZulu diff --git a/!NetSurf/Resources/en/Templates,fec b/!NetSurf/Resources/en/Templates,fec Binary files differindex fa853b5de..fbc0c62fd 100644 --- a/!NetSurf/Resources/en/Templates,fec +++ b/!NetSurf/Resources/en/Templates,fec diff --git a/!NetSurf/Resources/fr/Templates,fec b/!NetSurf/Resources/fr/Templates,fec Binary files differindex 375f65326..6ac4d6099 100644 --- a/!NetSurf/Resources/fr/Templates,fec +++ b/!NetSurf/Resources/fr/Templates,fec diff --git a/content/fetch.c b/content/fetch.c index 6d35cb29c..22609a05b 100644 --- a/content/fetch.c +++ b/content/fetch.c @@ -276,6 +276,13 @@ struct fetch * fetch_start(char *url, char *referer, /* remove curl default headers */ fetch->headers = curl_slist_append(fetch->headers, "Accept:"); fetch->headers = curl_slist_append(fetch->headers, "Pragma:"); + if (option_accept_language) { + char s[80]; + snprintf(s, sizeof s, "Accept-Language: %s, *;q=0.1", + option_accept_language); + s[sizeof s - 1] = 0; + fetch->headers = curl_slist_append(fetch->headers, s); + } code = curl_easy_setopt(fetch->curl_handle, CURLOPT_HTTPHEADER, fetch->headers); assert(code == CURLE_OK); diff --git a/desktop/options.c b/desktop/options.c index ca9cc9cde..45bfa50b0 100644 --- a/desktop/options.c +++ b/desktop/options.c @@ -39,6 +39,8 @@ int option_http_proxy_port = 8080; int option_font_size = 100; /** Minimum font size. */ int option_font_min_size = 70; +/** Accept-Language header. */ +char *option_accept_language = 0; EXTRA_OPTION_DEFINE @@ -53,6 +55,7 @@ struct { { "http_proxy_port", OPTION_INTEGER, &option_http_proxy_port }, { "font_size", OPTION_INTEGER, &option_font_size }, { "font_min_size", OPTION_INTEGER, &option_font_min_size }, + { "accept_language", OPTION_STRING, &option_accept_language }, EXTRA_OPTION_TABLE }; diff --git a/desktop/options.h b/desktop/options.h index 4f8653554..e903c31c3 100644 --- a/desktop/options.h +++ b/desktop/options.h @@ -29,6 +29,7 @@ extern char *option_http_proxy_host; extern int option_http_proxy_port; extern int option_font_size; extern int option_font_min_size; +extern char *option_accept_language; void options_read(const char *path); void options_write(const char *path); diff --git a/riscos/dialog.c b/riscos/dialog.c index 6f47f2dea..ba369aa1f 100644 --- a/riscos/dialog.c +++ b/riscos/dialog.c @@ -56,6 +56,7 @@ static int file_exists(const char* base, const char* dir, const char* leaf, bits static void set_icon_state(wimp_w w, wimp_i i, int state); static int get_icon_state(wimp_w w, wimp_i i); static void set_icon_string_i(wimp_w w, wimp_i i, int num); +static const char *language_name(const char *code); /** @@ -406,6 +407,12 @@ void set_browser_choices(void) font_size = option_font_size; font_min_size = option_font_min_size; ro_gui_dialog_update_config_br(); + ro_gui_set_icon_string(dialog_config_br, ICON_CONFIG_BR_LANG, + language_name(option_language ? + option_language : "en")); + ro_gui_set_icon_string(dialog_config_br, ICON_CONFIG_BR_ALANG, + language_name(option_accept_language ? + option_accept_language : "en")); } @@ -741,3 +748,18 @@ void set_icon_string_i(wimp_w w, wimp_i i, int num) ro_gui_set_icon_string(w, i, buffer); } + +/** + * Convert a 2-letter ISO language code to the language name. + * + * \param code 2-letter ISO language code + * \return language name, or code if unknown + */ + +const char *language_name(const char *code) +{ + char key[] = "lang_xx"; + key[5] = code[0]; + key[6] = code[1]; + return messages_get(key); +} diff --git a/riscos/gui.c b/riscos/gui.c index 18ddfbb5e..49bf78daf 100644 --- a/riscos/gui.c +++ b/riscos/gui.c @@ -132,25 +132,30 @@ void gui_init(int argc, char** argv) char theme_fname[256]; os_error *error; - LOG(("starting hourglass")); xhourglass_start(1); - LOG(("reading choices")); + LOG(("reading choices")); options_read("Choices:WWW.NetSurf.Choices"); - LOG(("choosing language")); + LOG(("choosing language")); ro_gui_choose_language(); - LOG(("grabbing NetSurf$Dir from the environment")); NETSURF_DIR = getenv("NetSurf$Dir"); sprintf(path, "<NetSurf$Dir>.Resources.%s.Messages", option_language); LOG(("Loading messages from '%s'", path)); messages_load(path); + messages_load("<NetSurf$Dir>.Resources.LangNames"); LOG(("done")); - task_handle = wimp_initialise(wimp_VERSION_RO38, "NetSurf", - (wimp_message_list*) &task_messages, 0); + error = xwimp_initialise(wimp_VERSION_RO38, "NetSurf", + (wimp_message_list*) &task_messages, 0, + &task_handle); + if (error) { + LOG(("xwimp_initialise failed: 0x%x: %s", + error->errnum, error->errmess)); + exit(EXIT_FAILURE); + } /* Issue a *Desktop to poke AcornURI into life */ if (getenv("NetSurf$Start_URI_Handler")) @@ -209,8 +214,11 @@ void ro_gui_choose_language(void) if (2 < strlen(option_language)) option_language[2] = 0; sprintf(path, "<NetSurf$Dir>.Resources.%s", option_language); - if (is_dir(path)) + if (is_dir(path)) { + if (!option_accept_language) + option_accept_language = strdup(option_language); return; + } free(option_language); option_language = 0; } @@ -237,6 +245,8 @@ void ro_gui_choose_language(void) else option_language = strdup("en"); assert(option_language); + if (!option_accept_language) + option_accept_language = strdup(option_language); } diff --git a/riscos/gui.h b/riscos/gui.h index 12cab480e..5ff526460 100644 --- a/riscos/gui.h +++ b/riscos/gui.h @@ -191,6 +191,10 @@ void ro_gui_save_datasave_ack(wimp_message *message); #define ICON_CONFIG_BR_MINSIZE 11 #define ICON_CONFIG_BR_MINSIZE_DEC 12 #define ICON_CONFIG_BR_MINSIZE_INC 13 +#define ICON_CONFIG_BR_LANG 15 +#define ICON_CONFIG_BR_LANG_PICK 16 +#define ICON_CONFIG_BR_ALANG 19 +#define ICON_CONFIG_BR_ALANG_PICK 20 #define ICON_CONFIG_PROX_OK 0 #define ICON_CONFIG_PROX_CANCEL 1 |