/// <summary> /// Creates a new writing system. /// </summary> /// <param name="languageSubtag">The language subtag.</param> /// <param name="scriptSubtag">The script subtag.</param> /// <param name="regionSubtag">The region subtag.</param> /// <param name="variantSubtags">The variant subtags.</param> /// <returns></returns> public CoreWritingSystemDefinition Create(LanguageSubtag languageSubtag, ScriptSubtag scriptSubtag, RegionSubtag regionSubtag, IEnumerable <VariantSubtag> variantSubtags) { lock (m_syncRoot) { VariantSubtag[] variantSubtagsArray = variantSubtags.ToArray(); string langTag = IetfLanguageTag.Create(languageSubtag, scriptSubtag, regionSubtag, variantSubtagsArray); CoreWritingSystemDefinition ws; m_repo.WritingSystemFactory.Create(langTag, out ws); if (ws.Language != null && languageSubtag != null && ws.Language.Name != languageSubtag.Name) { ws.Language = new LanguageSubtag(ws.Language, languageSubtag.Name); } if (ws.Script != null && scriptSubtag != null && ws.Script.Name != scriptSubtag.Name) { ws.Script = new ScriptSubtag(ws.Script, scriptSubtag.Name); } if (ws.Region != null && regionSubtag != null && ws.Region.Name != regionSubtag.Name) { ws.Region = new RegionSubtag(ws.Region, regionSubtag.Name); } for (int i = 0; i < Math.Min(ws.Variants.Count, variantSubtagsArray.Length); i++) { if (ws.Variants[i].Code == variantSubtagsArray[i].Code && ws.Variants[i].Name != variantSubtagsArray[i].Name) { ws.Variants[i] = new VariantSubtag(ws.Variants[i], variantSubtagsArray[i].Name); } } if (ws.Language != null && !string.IsNullOrEmpty(ws.Language.Name)) { ws.Abbreviation = ws.Language.Name.Length > 3 ? ws.Language.Name.Substring(0, 3) : ws.Language.Name; } else { ws.Abbreviation = ws.LanguageTag; } if (ws.DefaultCollation == null) { string message; if (SystemCollator.ValidateLanguageTag(ws.LanguageTag, out message)) { ws.DefaultCollation = new SystemCollationDefinition { LanguageTag = ws.LanguageTag } } ; else { ws.DefaultCollation = new IcuRulesCollationDefinition("standard"); } } if (ws.DefaultFont == null) { ws.DefaultFont = new FontDefinition("Charis SIL"); } ws.AcceptChanges(); return(ws); } }
public override WritingSystemDefinition ShowDialogIfNeededAndGetDefinition() { WaitCursor.Show(); try { var variants = new List <VariantSubtag> { WellKnownSubtags.IpaVariant }; variants.AddRange(_templateWritingSystemDefinition.Variants); WritingSystemDefinition ws; WritingSystemFactory.Create(IetfLanguageTag.Create(_templateWritingSystemDefinition.Language, null, _templateWritingSystemDefinition.Region, variants), out ws); string ipaFontName = _fontsForIpa.FirstOrDefault(FontExists); if (!string.IsNullOrEmpty(ipaFontName)) { ws.DefaultFont = new FontDefinition(ipaFontName); } ws.Abbreviation = "ipa"; ws.DefaultFontSize = _templateWritingSystemDefinition.DefaultFontSize; IKeyboardDefinition ipaKeyboard = Keyboard.Controller.AvailableKeyboards.FirstOrDefault(k => k.Id.ToLower().Contains("ipa")); if (ipaKeyboard != null) { ws.Keyboard = ipaKeyboard.Id; } return(ws); } finally { WaitCursor.Hide(); } }
/// <summary> /// /// </summary> internal void VerifyWsId(string wsId) { //Ensure the writing system identifier is set correctly Assert.AreEqual(IetfLanguageTag.Create(CurrentWritingSystem.Language, m_regionVariantControl.ScriptSubtag, m_regionVariantControl.RegionSubtag, m_regionVariantControl.VariantSubtags), wsId); }
private event ChangeCodeDelegate ChangeCode = delegate { }; // add empty delegate! private void ChangeCodeValue() { Code = IetfLanguageTag.Create(CurrentWs.Language, Script, Region, GetCurrentVariants()); }
public void Create_ValidPrivateUseTag_ReturnsTag() { Assert.That(IetfLanguageTag.Create("qaa", "Zxxx", "GB", "fonipa-x-emic-Jimmy"), Is.EqualTo("qaa-Zxxx-GB-fonipa-x-emic-Jimmy")); }
public void Create_SimplifiedChinese_SuppressesScript() { Assert.That(IetfLanguageTag.Create("zh", "Hans", "CN", string.Empty), Is.EqualTo("zh-CN")); Assert.That(IetfLanguageTag.Create("zh", "Hans", "CN", Enumerable.Empty <VariantSubtag>()), Is.EqualTo("zh-CN")); }
public void Create_ValidTag_ReturnsTag() { Assert.That(IetfLanguageTag.Create("en", "Arab", "GB", "1996"), Is.EqualTo("en-Arab-GB-1996")); }
public void Create_ImplicitScript_SuppressesScript() { Assert.That(IetfLanguageTag.Create("en", "Latn", "US", string.Empty), Is.EqualTo("en-US")); Assert.That(IetfLanguageTag.Create("en", "Latn", "US", Enumerable.Empty <VariantSubtag>()), Is.EqualTo("en-US")); }
public void Create_InvalidTagValidateDisabled_DoesNotThrow() { Assert.That(IetfLanguageTag.Create("a", "", "", string.Empty, false), Is.EqualTo("a")); }
public void Create_InvalidTag_Throws() { IetfLanguageTag.Create("a", "", "", string.Empty); }
public void Create_InvalidRegionTag_Throws() { Assert.That(() => IetfLanguageTag.Create("aa", "latn", "region", string.Empty), Throws.ArgumentException.With.Message.Contains("code [region] is invalid")); }
public void Create_InvalidScriptTag_Throws() { Assert.That(() => IetfLanguageTag.Create("aa", "scripty", "", string.Empty), Throws.ArgumentException.With.Message.Contains("code [scripty] is invalid")); }