Skip to content

Commit

Permalink
Fix json serialization and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
sigaloid committed Mar 3, 2021
1 parent 8756704 commit a8b670c
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 34 deletions.
9 changes: 4 additions & 5 deletions LibreTranslate.Net.Tests/LibreTranslate.Net.Test1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,8 @@ public void Test1()
var translate = new Translate();
string english = "Hello World!";
string spanish = translate.TranslateText(Language.En, Language.Es, english);
Assert.Equals(spanish, "¡Hola Mundo!");
}
public void Test2()
{
var translate = new Translate();
Assert.AreEqual(spanish, "¡Hola Mundo!");

Assert.True(translate.SupportedLanguages().Contains(Language.En));
Assert.True(translate.SupportedLanguages().Contains(Language.Ar));
Assert.True(translate.SupportedLanguages().Contains(Language.Zh));
Expand All @@ -31,6 +28,8 @@ public void Test2()
Assert.True(translate.SupportedLanguages().Contains(Language.Ru));
Assert.True(translate.SupportedLanguages().Contains(Language.Es));
//assumes server has all languages available!

}

}
}
7 changes: 6 additions & 1 deletion LibreTranslate.Net.sln.DotSettings.user
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=0C8182A9_002DC9CA_002D4E30_002D9854_002D5CAA3F6591AF_002Ff_003ALibreTranslate_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=0C8182A9_002DC9CA_002D4E30_002D9854_002D5CAA3F6591AF_002Ff_003ALibreTranslate_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=6b8e9580_002D42bb_002D4680_002Dbd58_002Df5f2914e44c9/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="Tests" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;
&lt;TestAncestor&gt;
&lt;TestId&gt;NUnit3x::46A5A915-B44B-4076-AC77-8593AE727D45::net5.0::LibreTranslate.Net.Tests.Tests&lt;/TestId&gt;
&lt;/TestAncestor&gt;
&lt;/SessionState&gt;</s:String></wpf:ResourceDictionary>
54 changes: 26 additions & 28 deletions LibreTranslate.Net/LibreTranslate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,40 +25,37 @@ public class Translate
public Translate()
{
wc = new WebClient();
LanguageList = new List<Language>();
LanguageList = new List<Language>() {Language.None};
Url = "https://libretranslate.com";
var languages =
JsonSerializer.Deserialize<List<SupportedLanguage>>(
wc.DownloadString("https://libretranslate.com/languages"));
LanguageList.Add(languages.Any(a => a.Code == "en") ? Language.En : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "ar") ? Language.Ar : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "zh") ? Language.Zh : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "fr") ? Language.Fr : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "de") ? Language.De : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "it") ? Language.It : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "pt") ? Language.Pt : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "ru") ? Language.Ru : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "es") ? Language.Es : Language.None);
LanguageList.Remove(Language.None); //just in case
var languages = wc.DownloadString("https://libretranslate.com/languages");
LanguageList.Add(languages.Contains("en") ? Language.En : Language.None);
LanguageList.Add(languages.Contains("ar") ? Language.Ar : Language.None);
LanguageList.Add(languages.Contains("zh") ? Language.Zh : Language.None);
LanguageList.Add(languages.Contains("fr") ? Language.Fr : Language.None);
LanguageList.Add(languages.Contains("de") ? Language.De : Language.None);
LanguageList.Add(languages.Contains("it") ? Language.It : Language.None);
LanguageList.Add(languages.Contains("pt") ? Language.Pt : Language.None);
LanguageList.Add(languages.Contains("ru") ? Language.Ru : Language.None);
LanguageList.Add(languages.Contains("es") ? Language.Es : Language.None);
LanguageList.RemoveAll(a=>a.Equals(Language.None)); //just in case
}

public Translate(string url)
{
wc = new WebClient();
LanguageList = new List<Language>();
LanguageList = new List<Language>() {Language.None};
Url = url;
var languages =
JsonSerializer.Deserialize<List<SupportedLanguage>>(wc.DownloadString($"{url}/languages"));
LanguageList.Add(languages.Any(a => a.Code == "en") ? Language.En : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "ar") ? Language.Ar : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "zh") ? Language.Zh : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "fr") ? Language.Fr : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "de") ? Language.De : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "it") ? Language.It : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "pt") ? Language.Pt : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "ru") ? Language.Ru : Language.None);
LanguageList.Add(languages.Any(a => a.Code == "es") ? Language.Es : Language.None);
LanguageList.Remove(Language.None);
var languages = wc.DownloadString($"{url}/languages");
LanguageList.Add(languages.Contains("en") ? Language.En : Language.None);
LanguageList.Add(languages.Contains("ar") ? Language.Ar : Language.None);
LanguageList.Add(languages.Contains("zh") ? Language.Zh : Language.None);
LanguageList.Add(languages.Contains("fr") ? Language.Fr : Language.None);
LanguageList.Add(languages.Contains("de") ? Language.De : Language.None);
LanguageList.Add(languages.Contains("it") ? Language.It : Language.None);
LanguageList.Add(languages.Contains("pt") ? Language.Pt : Language.None);
LanguageList.Add(languages.Contains("ru") ? Language.Ru : Language.None);
LanguageList.Add(languages.Contains("es") ? Language.Es : Language.None);
LanguageList.RemoveAll(a=>a.Equals(Language.None));
}

private WebClient wc { get; }
Expand All @@ -72,7 +69,8 @@ public string TranslateText(Language fromLang, Language toLang, string text)
"These language structs are not to be used! Take out \"Language.None\" from your code! ");
if (!LanguageList.Contains(fromLang) || !LanguageList.Contains(toLang)
) //if server doesn't support either language
throw new Exception("Server doesn't support this language!");
throw new Exception($"Server doesn't support this language! {string.Join(',',LanguageList.ToArray())}");

var data =
$"q={Uri.EscapeDataString(text)}&source={fromLang.ToString().ToLower()}&target={toLang.ToString().ToLower()}";
wc.Headers.Add("Content-Type: application/x-www-form-urlencoded");
Expand Down

0 comments on commit a8b670c

Please sign in to comment.