Translate Chatter Feed | Text Translation API

Arun Kumar explains the use of Yandex Translate Text API for translating text content in different languages. This free API blends neural network and statistical approaches for machine translation. The post gives details about the API Request syntax, the query parameters, and showcases example code for translating 'chatter feed'.

banner_1

Text translation API can dynamically translate the different languages:

In this post, I am going to use Yandex Translate Text API to translate chatter feed(text). It uses a hybrid model of machine translation that includes both neural network (deep learning) and statistical approaches.

Yandex Translate Text API is a free API that we can use for translation. You just need to signup to get APIKEY.

API Request syntax:

https://translate.yandex.net/api/v1.5/tr.json/translate
? key=<API key>
& text=<text to translate>
& lang=<translation direction>
& [format=<text format>]
& [options=<translation options>]
& [callback=<name of the callback function>]

Query Parameters Description
key APIKEY: It is issued free of charge.
text The text to translate. You can use multiple text parameters in a request. The source text must be URL-encoded.
lang The translation direction. You can set it in either of the following ways: As a pair of language codes separated by a hyphen (“from”-“to”). For example, en-hi indicates translating from English to Hindi.
format Text format. plain – Text without markup (default value). html – Text in HTML format.
options The only option available at this time is whether the response should include the automatically detected language of the text being translated. This corresponds to the value 1 for this parameter.
callback The name of the callback function. Use for getting a JSONP response.

Chatter feed translation example code: 

Trigger on FeedItem sObject: 

trigger FeedTranslateTrigger on FeedItem (after insert) {
Map<String,String> feedMap = new Map<String,String>();
if(Trigger.isAfter){
if(Trigger.isInsert){
for(FeedItem fi: Trigger.new){
feedMap.put(fi.Id, fi.Body);
}
if(ChatterFeedTranslateCntrl.isFirstTime){
ChatterFeedTranslateCntrl.isFirstTime = false;
ChatterFeedTranslateCntrl.translateFeed(feedMap);
}
}
}
}

ChatterFeedTranslateCntrl

public class ChatterFeedTranslateCntrl {
public static Boolean isFirstTime = true;
@Future(callout=true)
public static void translateFeed(Map<String,String> feedMap) {
String feedBody = feedMap.values()[0].replaceAll('<[/a-zAZ0-9]*>','');
feedBody = feedBody.replace(' ','%20');
system.debug('feedBody = '+feedBody);
Set<String> feedItemIds = feedMap.keySet();
List<FeedItem> fItemList = [select Id,Body from FeedItem where id IN:feedItemIds];
system.debug('fItemList: ' +fItemList);
HttpRequest reqest = new HttpRequest();
String APIKey = 'trnsl.1.1.20191130T125129Z.74852570ba317630.62b74fb91590782bc383c79786987364XXXXXXXXXX'; //APIKey
String langTranslation = 'en-hi';//english into Hindi
String endPointURL = 'https://translate.yandex.net/api/v1.5/tr.json/translate?key='+APIKey+'&text='+feedBody+'&lang='+langTranslation+'&%5Bformat=plain&#39;;
reqest.setEndpoint(endPointURL);
reqest.setMethod('GET');
reqest.setHeader('Accept','application/json');
Http h = new Http();
HTTPResponse response = h.send(reqest);
system.debug('response: '+response.getBody());
string jsonResponse = response.getBody().replace('[','');
jsonResponse = jsonResponse.replace(']','');
system.debug('jsonResponse; '+jsonResponse);
// Parse JSON response to get all the totalPrice field values.
JSONParser parser = JSON.createParser(jsonResponse);
String feedBodyStr = '';
while (parser.nextToken() != null) {
if ((parser.getCurrentToken() == JSONToken.FIELD_NAME) &&
(parser.getText() == 'text')) {
// Get the value.
parser.nextToken();
// Compute the grand total price for all invoices.
feedBodyStr = parser.getText();
}
}
system.debug('feedBodyStr=' + feedBodyStr);
fItemList[0].Body = feedBodyStr;
update fItemList;
}
}

 

Thanks

Arun Kumar

 

Arun Kumar
Arun Kumar

Arun Kumar is a Salesforce Certified Platform Developer I with over 7+ years of experience working on the Salesforce platform. He specializes in developing custom applications, integrations, and reports to help customers streamline their business processes. Arun is passionate about helping businesses leverage the power of Salesforce to achieve their goals.

Articles: 162

Leave a Reply

Discover more from SFDC Lessons

Subscribe now to keep reading and get access to the full archive.

Continue reading

Discover more from SFDC Lessons

Subscribe now to keep reading and get access to the full archive.

Continue reading