diff --git a/retroarch.c b/retroarch.c index a4aa4ff136..e2e1bb7004 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3196,6 +3196,11 @@ static bool run_translation_service(void) strlcpy(new_ai_service_url, settings->arrays.ai_service_url, sizeof(new_ai_service_url)); + /* if query already exists in url, then use &'s instead */ + if (strrchr(new_ai_service_url, '?') != NULL) + separator = '&'; + + /* source lang */ if (settings->uints.ai_service_source_lang != TRANSLATION_LANG_DONT_CARE) { const char *lang_source = ai_service_get_str( @@ -3203,15 +3208,16 @@ static bool run_translation_service(void) if (!string_is_empty(lang_source)) { - snprintf(new_ai_service_url, - sizeof(new_ai_service_url), - "%csource_lang=", separator); + char temp_string[PATH_MAX_LENGTH]; + snprintf(temp_string, + sizeof(temp_string), + "%csource_lang=%s", separator, lang_source); separator = '&'; - strlcat(new_ai_service_url, lang_source, - sizeof(new_ai_service_url)); + strlcat(new_ai_service_url, temp_string, sizeof(new_ai_service_url)); } } + /* target lang */ if (settings->uints.ai_service_target_lang != TRANSLATION_LANG_DONT_CARE) { const char *lang_target = ai_service_get_str( @@ -3219,15 +3225,36 @@ static bool run_translation_service(void) if (!string_is_empty(lang_target)) { - snprintf(new_ai_service_url, - sizeof(new_ai_service_url), - "%ctarget_lang=", separator); + char temp_string[PATH_MAX_LENGTH]; + snprintf(temp_string, + sizeof(temp_string), + "%ctarget_lang=%s", separator, lang_target); separator = '&'; - strlcat(new_ai_service_url, lang_target, + + strlcat(new_ai_service_url, temp_string, sizeof(new_ai_service_url)); } } + /* mode */ + { + char temp_string[PATH_MAX_LENGTH]; + char* mode_chr = "image"; + + if (settings->uints.ai_service_mode == 1) + mode_chr = "sound"; + + snprintf(temp_string, + sizeof(temp_string), + "%coutput=%s", separator, mode_chr); + separator = '&'; + + strlcat(new_ai_service_url, temp_string, + sizeof(new_ai_service_url)); + } + + + RARCH_LOG("Server URL: %s\n", new_ai_service_url); task_push_http_post_transfer(new_ai_service_url, json_buffer, true, NULL, handle_translation_cb, NULL);