diff --git a/.vs/LibreTranslate.Net/DesignTimeBuild/.dtbcache.v2 b/.vs/LibreTranslate.Net/DesignTimeBuild/.dtbcache.v2 index a9bfabf..1480765 100644 Binary files a/.vs/LibreTranslate.Net/DesignTimeBuild/.dtbcache.v2 and b/.vs/LibreTranslate.Net/DesignTimeBuild/.dtbcache.v2 differ diff --git a/LibreTranslate.Net.Cmd/Program.cs b/LibreTranslate.Net.Cmd/Program.cs index 4214b4f..d49543d 100644 --- a/LibreTranslate.Net.Cmd/Program.cs +++ b/LibreTranslate.Net.Cmd/Program.cs @@ -7,16 +7,17 @@ class Program static void Main(string[] args) { var libreTranslate = new LibreTranslate(); - var englishText = "Hello World!"; + var englishText = "

Hello world!

"; var getSupportedLanguagesAsyncTask = libreTranslate.GetSupportedLanguagesAsync(); System.Threading.Tasks.Task.Run(() => getSupportedLanguagesAsyncTask).Wait(); var supportedLanguages = getSupportedLanguagesAsyncTask.Result; Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(supportedLanguages, Newtonsoft.Json.Formatting.Indented)); var TranslateAsyncTask = libreTranslate.TranslateAsync(new Translate() { - ApiKey = "MySecretApiKey", + ApiKey = "YourSecretKey", Source = LanguageCode.English, Target = LanguageCode.Spanish, + Format = Format.HTML, //Format is optional with 'Format.Text' as default value. Text = englishText }); System.Threading.Tasks.Task.Run(() => TranslateAsyncTask).Wait(); diff --git a/LibreTranslate.Net/Constants/Format.cs b/LibreTranslate.Net/Constants/Format.cs new file mode 100644 index 0000000..f7e667c --- /dev/null +++ b/LibreTranslate.Net/Constants/Format.cs @@ -0,0 +1,40 @@ +using Newtonsoft.Json.Serialization; +using System; +using System.Collections.Generic; +using System.Text; + +namespace LibreTranslate.Net +{ + public class Format + { + private static readonly Dictionary Instance = new Dictionary(); + private readonly string Name; + private Format(string name) + { + Name = name; + Instance[Name] = this; + } + public static implicit operator Format(string str) + { + return $"{FromString(str)}"; + } + public static Format FromString(string str) + { + if(Instance.TryGetValue(str, out Format format)) + { + return format; + } + else + { + throw new ArgumentException($"{nameof(Net.Format)} must be 'text' or 'html'"); + } + } + public override string ToString() + { + return $"{Name}"; + } + + public static readonly Format HTML = new Format("html"); + public static readonly Format Text = new Format("text"); + } +} diff --git a/LibreTranslate.Net/Constants/LanguageCode.cs b/LibreTranslate.Net/Constants/LanguageCode.cs index d2a6fbd..5fade19 100644 --- a/LibreTranslate.Net/Constants/LanguageCode.cs +++ b/LibreTranslate.Net/Constants/LanguageCode.cs @@ -35,17 +35,34 @@ public override string ToString() } public static readonly LanguageCode English = new LanguageCode("en"); public static readonly LanguageCode Arabic = new LanguageCode("ar"); + public static readonly LanguageCode Azerbaijani = new LanguageCode("az"); + public static readonly LanguageCode Catalan = new LanguageCode("ca"); public static readonly LanguageCode Chinese = new LanguageCode("zh"); + public static readonly LanguageCode Czech = new LanguageCode("cs"); + public static readonly LanguageCode Danish = new LanguageCode("da"); + public static readonly LanguageCode Dutch = new LanguageCode("nl"); + public static readonly LanguageCode Esperanto = new LanguageCode("eo"); + public static readonly LanguageCode Finnish = new LanguageCode("fi"); public static readonly LanguageCode French = new LanguageCode("fr"); public static readonly LanguageCode German = new LanguageCode("de"); + public static readonly LanguageCode Greek = new LanguageCode("el"); + public static readonly LanguageCode Hebrew = new LanguageCode("he"); public static readonly LanguageCode Hindi = new LanguageCode("hi"); + public static readonly LanguageCode Hungarian = new LanguageCode("hu"); + public static readonly LanguageCode Indonesian = new LanguageCode("id"); public static readonly LanguageCode Irish = new LanguageCode("ga"); public static readonly LanguageCode Italian = new LanguageCode("it"); public static readonly LanguageCode Japanese = new LanguageCode("ja"); public static readonly LanguageCode Korean = new LanguageCode("ko"); + public static readonly LanguageCode Persian = new LanguageCode("fa"); + public static readonly LanguageCode Polish = new LanguageCode("pl"); public static readonly LanguageCode Portuguese = new LanguageCode("pt"); public static readonly LanguageCode Russian = new LanguageCode("ru"); + public static readonly LanguageCode Slovak = new LanguageCode("sk"); public static readonly LanguageCode Spanish = new LanguageCode("es"); + public static readonly LanguageCode Swedish = new LanguageCode("sv"); + public static readonly LanguageCode Turkish = new LanguageCode("tr"); + public static readonly LanguageCode Ukranian = new LanguageCode("uk"); public static readonly LanguageCode AutoDetect = new LanguageCode("auto"); } } diff --git a/LibreTranslate.Net/LibreTranslate.cs b/LibreTranslate.Net/LibreTranslate.cs index 91fd108..6194c49 100644 --- a/LibreTranslate.Net/LibreTranslate.cs +++ b/LibreTranslate.Net/LibreTranslate.cs @@ -54,7 +54,8 @@ public async Task TranslateAsync(Translate translate) { "q", translate.Text }, { "source", translate.Source.ToString() }, { "target", translate.Target.ToString() }, - { "api_key", translate.ApiKey } + { "format", translate.Format?.ToString() ?? Format.Text.ToString() }, + { "api_key", translate.ApiKey }, }); var response = await HttpClient.SendAsync(new HttpRequestMessage(HttpMethod.Post, "/translate") { diff --git a/LibreTranslate.Net/Models/Translate.cs b/LibreTranslate.Net/Models/Translate.cs index ceaa4db..e344dce 100644 --- a/LibreTranslate.Net/Models/Translate.cs +++ b/LibreTranslate.Net/Models/Translate.cs @@ -22,6 +22,12 @@ public class Translate [JsonProperty("target")] public LanguageCode Target { get; set; } /// + /// [optional] + /// The current format of the text to be translated + /// + [JsonProperty("format")] + public Format Format { get; set; } + /// /// The libre translate api key /// [JsonProperty("api_key")] diff --git a/README.md b/README.md index 21ed1ab..9d4e291 100644 --- a/README.md +++ b/README.md @@ -14,22 +14,38 @@ using LibreTranslate.Net; ``` ### Usage ```csharp -var LibreTranslate = new LibreTranslate(); -System.Collections.Generic.IEnumerable SupportedLanguages = await LibreTranslate.GetSupportedLanguagesAsync(); +var libreTranslate = new LibreTranslate(); + +//Get supported languages +System.Collections.Generic.IEnumerable SupportedLanguages = await libreTranslate.GetSupportedLanguagesAsync(); System.Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(supportedLanguages, Newtonsoft.Json.Formatting.Indented)); + +//text translation var englishText = "Hello World!"; -string spanishText = await LibreTranslate.TranslateAsync(new Translate() { +string spanishText = await libreTranslate.TranslateAsync(new Translate() { ApiKey = "MySecretApiKey", Source = LanguageCode.English, Target = LanguageCode.Spanish, Text = englishText }); System.Console.WriteLine(spanishText); + +//html translation +var englishHtml = "

Hello World!

"; +string spanishHtml = await libreTranslate.TranslateAsync(new Translate() { + ApiKey = "MySecretApiKey", + Source = LanguageCode.English, + Target = LanguageCode.Spanish, + Format = Format.HTML, + Text = englishHtml +}); +System.Console.WriteLine(spanishHtml); ``` ### Output: ``` Hello World! ¡Hola Mundo! +

¡Hola Mundo!

``` ### Custom LibreTranslate URL (style: `http[s]://url` with no trailing `/`): ```csharp @@ -45,15 +61,32 @@ Language|Code -|- English|`LanguageCode.English` Arabic|`LanguageCode.Arabic` +Azerbaijani|`LanguageCode.Azerbaijani` +Catalan|`LanguageCode.Catalan` Chinese|`LanguageCode.Chinese` +Czech|`LanguageCode.Czech` +Danish|`LanguageCode.Danish` +Dutch|`LanguageCode.Dutch` +Esperanto|`LanguageCode.Esperanto` +Finnish|`LanguageCode.Finnish` French|`LanguageCode.French` German|`LanguageCode.German` +Greek|`LanguageCode.Greek` +Hebrew|`LanguageCode.Hebrew` Hindi|`LanguageCode.Hindi` +Hungarian|`LanguageCode.Hungarian` +Indonesian|`LanguageCode.Indonesian` Irish|`LanguageCode.Irish` Italian|`LanguageCode.Italian` Japanese|`LanguageCode.Japanese` Korean|`LanguageCode.Korean` +Persian|`LanguageCode.Persian` +Polish|`LanguageCode.Polish` Portuguese|`LanguageCode.Portuguese` Russian|`LanguageCode.Russian` +Slovak|`LanguageCode.Slovak` Spanish|`LanguageCode.Spanish` +Swedish|`LanguageCode.Swedish` +Turkish|`LanguageCode.Turkish` +Ukranian|`LanguageCode.Ukranian` AutoDetect|`LanguageCode.AutoDetect //This feature is experimental`