diff --git a/src/SIL.Machine.AspNetCore/Services/LanguageTagService.cs b/src/SIL.Machine.AspNetCore/Services/LanguageTagService.cs index bc665e7eb..165fc41b1 100644 --- a/src/SIL.Machine.AspNetCore/Services/LanguageTagService.cs +++ b/src/SIL.Machine.AspNetCore/Services/LanguageTagService.cs @@ -5,6 +5,8 @@ public class LanguageTagService : ILanguageTagService private static readonly Dictionary StandardLanguages = new() { { "ar", "arb" }, { "ms", "zsm" }, { "lv", "lvs" }, { "ne", "npi" }, { "sw", "swh" }, { "cmn", "zh" } }; + private static readonly Dictionary StandardScripts = new() { { "Kore", "Hang" } }; + private readonly Dictionary _defaultScripts; private readonly Dictionary _flores200Languages; @@ -127,6 +129,10 @@ private string ResolveLanguageTag(string languageTag) else if (_defaultScripts.TryGetValue(languageSubtag, out string? tempScript)) script = tempScript; + // There are a few extra conversions not in SIL Writing Systems that we need to handle + if (script is not null && StandardScripts.TryGetValue(script, out string? tempScript3)) + script = tempScript3; + if (script is not null) return $"{iso639_3Code}_{script}"; else diff --git a/tests/SIL.Machine.AspNetCore.Tests/Services/LanguageTagServiceTests.cs b/tests/SIL.Machine.AspNetCore.Tests/Services/LanguageTagServiceTests.cs index db7cae47d..ba664cb27 100644 --- a/tests/SIL.Machine.AspNetCore.Tests/Services/LanguageTagServiceTests.cs +++ b/tests/SIL.Machine.AspNetCore.Tests/Services/LanguageTagServiceTests.cs @@ -26,6 +26,8 @@ public LanguageTagServiceTests() [TestCase("arb", "arb_Arab", Description = "Arabic")] [TestCase("eng", "eng_Latn", Description = "InsteadOfISO639_1")] [TestCase("eng-Latn", "eng_Latn", Description = "DashToUnderscore")] + [TestCase("kor", "kor_Hang", Description = "KoreanScript")] + [TestCase("kor_Kore", "kor_Hang", Description = "KoreanScriptCorrection")] public void ConvertToFlores200CodeTest(string language, string internalCodeTruth) { _languageTagService.ConvertToFlores200Code(language, out string internalCode);