Added additional voice work update logic.
This commit is contained in:
44
JSMR.Infrastructure/Common/Languages/LanguageIdentifier.cs
Normal file
44
JSMR.Infrastructure/Common/Languages/LanguageIdentifier.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using JSMR.Application.Common;
|
||||
using NTextCat;
|
||||
using System.Reflection;
|
||||
|
||||
namespace JSMR.Infrastructure.Common.Languages;
|
||||
|
||||
public class LanguageIdentifier : ILanguageIdentifier
|
||||
{
|
||||
private readonly string[] _languages =
|
||||
[
|
||||
"eng",
|
||||
"jpn",
|
||||
"kor",
|
||||
"zho"
|
||||
];
|
||||
|
||||
private readonly RankedLanguageIdentifier _identifier;
|
||||
|
||||
public LanguageIdentifier()
|
||||
{
|
||||
RankedLanguageIdentifierFactory factory = new();
|
||||
|
||||
using var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("JSMR.Infrastructure.Languages.Language.xml");
|
||||
_identifier = factory.Load(stream);
|
||||
}
|
||||
|
||||
public Language GetLanguage(string text)
|
||||
{
|
||||
var rankedLanguages = _identifier.Identify(text).Where(x => _languages.Contains(x.Item1.Iso639_3));
|
||||
var identifiedLanguage = rankedLanguages.OrderBy(x => x.Item2).FirstOrDefault();
|
||||
|
||||
if (identifiedLanguage == null)
|
||||
return Language.Unknown;
|
||||
|
||||
return identifiedLanguage.Item1.Iso639_3 switch
|
||||
{
|
||||
"jpn" => Language.Japanese,
|
||||
"eng" => Language.English,
|
||||
"kor" => Language.Korean,
|
||||
"zho" => Language.ChineseTraditional,// Or ChineseSimplified?
|
||||
_ => Language.Unknown,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user