Beispiel #1
0
        /// <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();
     }
 }
Beispiel #3
0
 /// <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);
 }
Beispiel #4
0
        private event ChangeCodeDelegate ChangeCode = delegate { };         // add empty delegate!

        private void ChangeCodeValue()
        {
            Code = IetfLanguageTag.Create(CurrentWs.Language, Script, Region, GetCurrentVariants());
        }
Beispiel #5
0
 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"));
 }
Beispiel #6
0
 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"));
 }
Beispiel #7
0
 public void Create_ValidTag_ReturnsTag()
 {
     Assert.That(IetfLanguageTag.Create("en", "Arab", "GB", "1996"), Is.EqualTo("en-Arab-GB-1996"));
 }
Beispiel #8
0
 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"));
 }
Beispiel #9
0
 public void Create_InvalidTagValidateDisabled_DoesNotThrow()
 {
     Assert.That(IetfLanguageTag.Create("a", "", "", string.Empty, false), Is.EqualTo("a"));
 }
Beispiel #10
0
 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"));
 }