Google AppEngine translate bot
Posted: May 13th, 2011 | Author: bart | Filed under: Java, Web Development | Tags: appengine, google, java, translate | 1 Comment »Google provided a few translation bots recently.
Since I do a lot of Dutch -> French translation, I quicly whipped up my own and deployed it to Google AppEngine:
For translating I used the unofficial google-api-translate-java jar file.
Here’s what you need to do:
Place the jar in war\WEB-INF\lib
war\WEB-INF\web.xml
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>Translate_Bot</servlet-name> <servlet-class>be.bartv.translatebot.Translate_BotServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Translate_Bot</servlet-name> <url-pattern>/translate_bot</url-pattern> </servlet-mapping> <servlet> <servlet-name>xmppreceiver</servlet-name> <servlet-class>be.bartv.translatebot.XMPPReceiverServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>xmppreceiver</servlet-name> <url-pattern>/_ah/xmpp/message/chat/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
war\WEB-INF\appengine-web.xml
<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>translate-bot</application> <version>1</version> <!-- Configure java.util.logging --> <system-properties> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> </system-properties> <inbound-services> <service>xmpp_message</service> </inbound-services> </appengine-web-app>
src\be.bartv.translatebot.XMPPReceiverServlet.java
package be.bartv.translatebot; import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.api.GoogleAPI; import com.google.api.translate.Language; import com.google.api.translate.Translate; import com.google.appengine.api.xmpp.JID; import com.google.appengine.api.xmpp.Message; import com.google.appengine.api.xmpp.MessageBuilder; import com.google.appengine.api.xmpp.XMPPService; import com.google.appengine.api.xmpp.XMPPServiceFactory; public class XMPPReceiverServlet extends HttpServlet{ private static final long serialVersionUID = 2212159648921332999L; public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { XMPPService service = XMPPServiceFactory.getXMPPService(); Message message = service.parseMessage(req); JID jid = message.getFromJid(); String content = message.getBody(); String reply = "Hmmz. I Should return a translation now"; try { GoogleAPI.setHttpReferrer("http://notes.bartv.be/"); reply = Translate.execute(content, Language.DUTCH, Language.FRENCH); } catch (Exception e) { reply = "Error occurred: "+e.getMessage(); e.printStackTrace(); } service.sendMessage(new MessageBuilder().withBody(reply).withRecipientJids(jid).build()); } }
Sometimes, I do get a error saying I violate Google’s Terms and conditions. No idea why tho …
