static t_uchar *convert_arg(t_ullong arg) { t_uchar *wc; wc = convert_unicode((wint_t)arg); return (wc); }
void bing_translate_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message) { struct _TranslateStore *store = user_data; gchar *translated = NULL; gchar *temp; purple_debug_info("translate", "Got response: %s\n", url_text); temp = strchr(url_text, '"') + 1; temp = g_strndup(temp, len - (temp - url_text) - 1); translated = convert_unicode(temp); g_free(temp); store->callback(store->original_phrase, translated, store->detected_language, store->userdata); g_free(translated); g_free(store->detected_language); g_free(store->original_phrase); g_free(store); }
void google_translate_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message) { struct _TranslateStore *store = user_data; const gchar *trans_start = "\"translatedText\":\""; const gchar *lang_start = "\"detectedSourceLanguage\":\""; gchar *strstart = NULL; gchar *translated = NULL; gchar *lang = NULL; purple_debug_info("translate", "Got response: %s\n", url_text); strstart = g_strstr_len(url_text, len, trans_start); if (strstart) { strstart = strstart + strlen(trans_start); translated = g_strndup(strstart, strchr(strstart, '"') - strstart); strstart = convert_unicode(translated); g_free(translated); translated = strstart; } strstart = g_strstr_len(url_text, len, lang_start); if (strstart) { strstart = strstart + strlen(lang_start); lang = g_strndup(strstart, strchr(strstart, '"') - strstart); } store->callback(store->original_phrase, translated, lang, store->userdata); g_free(translated); g_free(lang); g_free(store->original_phrase); g_free(store); }