From d4f868377ebf6e6eb1a087c2c3f3e0f2eef59e1a Mon Sep 17 00:00:00 2001 From: raylu Date: Thu, 7 Apr 2011 19:46:20 -0400 Subject: [PATCH] Fix Google transliteration duplication silliness --- cmd-google.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cmd-google.go b/cmd-google.go index 7904bdb..1f66cf1 100644 --- a/cmd-google.go +++ b/cmd-google.go @@ -101,7 +101,7 @@ func roman(conn *irc.Conn, nick *irc.Nick, args, target string) { if targetlang == "" { targetlang = "ja" } - url := fmt.Sprintf("http://translate.google.com/translate_a/t?client=t&hl=%s&sl=%s&tl=en-U&text=%s", + url := fmt.Sprintf("http://translate.google.com/translate_a/t?client=t&hl=%s&sl=%s&tl=en-US&text=%s", targetlang, sourcelang, http.URLEscape(args)) b, err := send(url) @@ -114,7 +114,16 @@ func roman(conn *irc.Conn, nick *irc.Nick, args, target string) { say(conn, target, "%s: Error while parsing romanization", nick.Nick); return } - say(conn, target, "%s: %s", result[1], result[5]) + source := result[1] + romanized := result[5] + if (sourcelang == "en" && !strings.Contains(args, " ") && + source[:len(source)/2] == source[len(source)/2:] && + strings.ToLower(romanized[:len(romanized)/2]) == strings.ToLower(romanized[len(romanized)/2+1:])) { + // Google duplicates when there is only one source word + say(conn, target, "%s: %s", source[:len(source)/2], romanized[:len(romanized)/2]) + } else { + say(conn, target, "%s: %s", source, romanized) + } } func calc(conn *irc.Conn, nick *irc.Nick, args, target string) {