Added DeepL language filters

This commit is contained in:
Thorsten Sommer 2023-02-12 21:20:39 +01:00
parent b940811232
commit 5e0a88acc3
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
2 changed files with 76 additions and 5 deletions

View File

@ -55,11 +55,8 @@ public static class DeepL
var sourceCultureIndex = await AppSettings.GetDeepLSourceCultureIndex(); var sourceCultureIndex = await AppSettings.GetDeepLSourceCultureIndex();
var sourceCulture = await AppSettings.GetCultureCode(sourceCultureIndex); var sourceCulture = await AppSettings.GetCultureCode(sourceCultureIndex);
// In case of the source culture, we cannot specify the region, so we need to remove it:
sourceCulture = sourceCulture.Split('-')[0];
using var deepl = new Translator(deepLAPIKey); using var deepl = new Translator(deepLAPIKey);
var translation = await deepl.TranslateTextAsync(text, sourceCulture, targetCulture); var translation = await deepl.TranslateTextAsync(text, TransformSourceCulture(sourceCulture), TransformTargetCulture(targetCulture));
return translation.Text; return translation.Text;
} }
@ -78,4 +75,78 @@ public static class DeepL
} }
public static void ResetState() => DEEPL_NOT_AVAILABLE = false; public static void ResetState() => DEEPL_NOT_AVAILABLE = false;
private static string TransformSourceCulture(string sourceCulture) => sourceCulture switch
{
['b', 'g', ..] => "BG", // Bulgarian
['c', 's', ..] => "CS", // Czech
['d', 'a', ..] => "DA", // Danish
['d', 'e', ..] => "DE", // German
['e', 'l', ..] => "EL", // Greek
['e', 'n', ..] => "EN", // English
['e', 's', ..] => "ES", // Spanish
['e', 't', ..] => "ET", // Estonian
['f', 'i', ..] => "FI", // Finnish
['f', 'r', ..] => "FR", // French
['h', 'u', ..] => "HU", // Hungarian
['i', 'd', ..] => "ID", // Indonesian
['i', 't', ..] => "IT", // Italian
['j', 'a', ..] => "JA", // Japanese
['k', 'o', ..] => "KO", // Korean
['l', 't', ..] => "LT", // Lithuanian
['l', 'v', ..] => "LV", // Latvian
['n', 'b', ..] => "NB", // Norwegian
['n', 'l', ..] => "NL", // Dutch
['p', 'l', ..] => "PL", // Polish
['p', 't', ..] => "PT", // Portuguese
['r', 'o', ..] => "RO", // Romanian
['r', 'u', ..] => "RU", // Russian
['s', 'k', ..] => "SK", // Slovak
['s', 'l', ..] => "SL", // Slovenian
['s', 'v', ..] => "SV", // Swedish
['t', 'r', ..] => "TR", // Turkish
['u', 'k', ..] => "UK", // Ukrainian
['z', 'h', ..] => "ZH", // Chinese
_ => sourceCulture,
};
private static string TransformTargetCulture(string targetCulture) => targetCulture switch
{
['b', 'g', ..] => "BG", // Bulgarian
['c', 's', ..] => "CS", // Czech
['d', 'a', ..] => "DA", // Danish
['d', 'e', ..] => "DE", // German
['e', 'l', ..] => "EL", // Greek
['e', 'n', '-', 'G', 'B', ..] => "EN-GB", // English (British)
['e', 'n', '-', 'U', 'S', ..] => "EN-US", // English (American)
['e', 'n', ..] => "EN-US", // English (American)
['e', 's', ..] => "ES", // Spanish
['e', 't', ..] => "ET", // Estonian
['f', 'i', ..] => "FI", // Finnish
['f', 'r', ..] => "FR", // French
['h', 'u', ..] => "HU", // Hungarian
['i', 'd', ..] => "ID", // Indonesian
['i', 't', ..] => "IT", // Italian
['j', 'a', ..] => "JA", // Japanese
['k', 'o', ..] => "KO", // Korean
['l', 't', ..] => "LT", // Lithuanian
['l', 'v', ..] => "LV", // Latvian
['n', 'b', ..] => "NB", // Norwegian
['n', 'l', ..] => "NL", // Dutch
['p', 'l', ..] => "PL", // Polish
['p', 't', '-', 'B', 'R', ..] => "PT-BR", // Portuguese (Brazilian)
['p', 't', '-', 'P', 'T', ..] => "PT-PT", // Portuguese (European)
['p', 't', ..] => "PT-PT", // Portuguese (European)
['r', 'o', ..] => "RO", // Romanian
['r', 'u', ..] => "RU", // Russian
['s', 'k', ..] => "SK", // Slovak
['s', 'l', ..] => "SL", // Slovenian
['s', 'v', ..] => "SV", // Swedish
['t', 'r', ..] => "TR", // Turkish
['u', 'k', ..] => "UK", // Ukrainian
['z', 'h', ..] => "ZH", // Chinese
_ => targetCulture,
};
} }

View File

@ -2,5 +2,5 @@
public static class Version public static class Version
{ {
public static string Text => $"v0.9.3 (2023-02-12), .NET {Environment.Version}"; public static string Text => $"v0.9.4 (2023-02-12), .NET {Environment.Version}";
} }