Exemplo n.º 1
0
void
translate_receiving_chat_msg_cb(const gchar *original_phrase, const gchar *translated_phrase, const gchar *detected_language, gpointer userdata)
{
	struct TranslateConvMessage *convmsg = userdata;
	PurpleChat *chat;
	gchar *html_text;
	const gchar *stored_lang = "";
	const gchar *language_name = NULL;
	gchar *message;
	
	if (detected_language)
	{
		chat = purple_blist_find_chat(convmsg->account, convmsg->conv->name);
		stored_lang = purple_blist_node_get_string((PurpleBlistNode *)chat, DEST_LANG_SETTING);
		purple_blist_node_set_string((PurpleBlistNode *)chat, DEST_LANG_SETTING, detected_language);
		
		language_name = get_language_name(detected_language);
		
		if (language_name != NULL)
		{
			message = g_strdup_printf("Now translating to %s (auto-detected)", language_name);
			purple_conversation_write(convmsg->conv, NULL, message, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
			g_free(message);
		}
	}
	
	html_text = purple_strdup_withhtml(translated_phrase);
	
	purple_conversation_write(convmsg->conv, convmsg->sender, html_text, convmsg->flags, time(NULL));
	
	g_free(html_text);
	g_free(convmsg->sender);
	g_free(convmsg);
}
Exemplo n.º 2
0
static void
translate_conversation_created(PurpleConversation *conv)
{
	PurpleBlistNode *node = NULL;
	gchar *message;
	const gchar *language_key;
	const gchar *language_name;
	
	if (conv->type == PURPLE_CONV_TYPE_IM)
		node = (PurpleBlistNode *) purple_find_buddy(conv->account, conv->name);
	else if (conv->type == PURPLE_CONV_TYPE_CHAT)
		node = (PurpleBlistNode *) purple_blist_find_chat(conv->account, conv->name);
	
	if (node != NULL)
	{
		language_key = purple_blist_node_get_string(node, DEST_LANG_SETTING);
		
		if (language_key != NULL)
		{
			language_name = get_language_name(language_key);
		
			message = g_strdup_printf(_("Now translating to %s"), language_name);
			purple_conversation_write(conv, NULL, message, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
			g_free(message);
		}
	}
}
Exemplo n.º 3
0
const char *
get_language_name_for_tag (guint32 tag)
{
  hb_language_t lang;
  const char *s;

  lang = hb_ot_tag_to_language (tag);
  s = hb_language_to_string (lang);

  return get_language_name (pango_language_from_string (s));
}
Exemplo n.º 4
0
// FIG 0/5 Service component language
// ETSI EN 300 401 8.1.2
bool fig0_5(fig0_common_t& fig0, int indent)
{
    uint16_t SCId;
    uint8_t i = 1, SubChId, FIDCId, Language, Rfa;
    char tmpbuf[256];
    char desc[256];
    bool LS_flag, MSC_FIC_flag;
    bool complete = false;

    uint8_t* f = fig0.f;

    while (i < (fig0.figlen - 1)) {
        // iterate over service component language
        LS_flag = f[i] >> 7;
        if (LS_flag == 0) {
            // Short form (L/S = 0)
            MSC_FIC_flag = (f[i] >> 6) & 0x01;
            Language = f[i+1];
            if (MSC_FIC_flag == 0) {
                // 0: MSC in Stream mode and SubChId identifies the sub-channel
                SubChId = f[i] & 0x3F;
                sprintf(desc, "L/S flag=%d short form, MSC/FIC flag=%d MSC, SubChId=0x%X, Language=0x%X %s",
                        LS_flag, MSC_FIC_flag, SubChId, Language,
                        get_language_name(Language));
            }
            else {
                // 1: FIC and FIDCId identifies the component
                FIDCId = f[i] & 0x3F;
                sprintf(desc, "L/S flag=%d short form, MSC/FIC flag=%d FIC, FIDCId=0x%X, Language=0x%X %s",
                        LS_flag, MSC_FIC_flag, FIDCId, Language,
                        get_language_name(Language));
            }

            int key = (MSC_FIC_flag << 7) | (f[i] % 0x3F);
            complete |= fig0_5_is_complete(key);
            printbuf(desc, indent+1, NULL, 0);
            i += 2;
        }
        else {
            // Long form (L/S = 1)
            if (i < (fig0.figlen - 2)) {