Microsoft Cognitive Services client. This code/package tries to cover the version 3 (V3) of the Translator Text API reference
. Basically, we can have 2,000,000 character translated per month using that API. Also, it provides some feature that other API are not (like what was translated by what within the translate service).
This library/Nuget package targets the NetStandard 2.0, so you can use it within .Net Core 2.0.
- Language API
- 100% implemented.
- Does not require a Cognitive Services API Key
- Require some tests.
- Cache is not implemented perfectly (not yet using the ETag nor invalidating before a next restart).
- Translate API
- 100% implemented.
- Demo available at cstranslatordemo.azurewebsites.net
- Todo: Automated integration tests would be a nice to have in order to detect API changes.
- Transliterate API
- Not yet available
- Detect API
- Not yet available
- Break sentence API
- Not yet available
- Dictionary Lookup API
- Not yet available
- Dictionary Example API
- Not yet available
Simply install using the Nuget package manager on your project and search for the CognitiveServices.Translator.Client
package.
Install-Package CognitiveServices.Translator.Client -Version 1.0.0
A few choices exists, I will be presenting the most common scenario with the DI (Dependency Injection).
In the settings, add the following:
"CognitiveServices": {
"Name": "Doc_Transl_demo",
"SubscriptionKey": "[Insert Key here]",
"SubscriptionKeyAlternate": "Second key here",
"SubscriptionRegion": "[Region here, optional]"
}
// During the service registration
services.AddCognitiveServicesTranslator(configuration); // where configuration is IConfiguration
services.AddScoped<ITranslate, SampleClassWithInjection>(); // Where ITranslate is your own interface, not something required.
public class SampleClassWithInjection: ITranslate {
private readonly ITranslateClient _translateClient;
private readonly ILogger<SampleClassWithInjection> _logger;
public SampleClassWithInjection(ITranslateClient translateClient, ILogger<SampleClassWithInjection> logger) {
_translateClient = translateClient;
_logger = logger;
}
public IList<ResponseBody> TranslateSomething(string text) {
var response = _translateClient.Translate(
new RequestContent(text),
new RequestParameter
{
From = "ja", // Optional, will be auto-discovered
To = new[] { "en" }, // You can translate to multiple language at once.
IncludeAlignment = true, // Return what was translated by what. (see documentation)
});
// response = array of sentences + array of target language
_logger.LogDebug(response.First().Translations.First().Text);
return response;
}
}
By example: If I send Aさん
, I wil receive Mr.A.
. (Better example to come)
- @Nordes (me)
- @dmitriybobrovskiy
- @Phrohdoh
MIT