コード例 #1
0
        internal static ArchivingLanguage GetOneLanguage(string languageKey)
        {
            ArchivingLanguage returnValue = null;
            var language = LanguageList.FindByEnglishName(languageKey);

            if (language == null || language.Iso3Code == "und")
            {
                if (!string.IsNullOrEmpty(languageKey) && languageKey.Length == 3)
                {
                    language = LanguageList.FindByISO3Code(languageKey);
                }
            }
            if (language != null && language.Iso3Code != "und" && !string.IsNullOrEmpty(language.EnglishName))
            {
                returnValue = new ArchivingLanguage(ForceIso639ThreeChar(language.Iso3Code), language.Definition)
                {
                    EnglishName = language.EnglishName
                }
            }
            ;
            else if (Project != null)
            {
                var archivingLanguage = ParseLanguage(ForceIso639ThreeChar(Project.VernacularISO3CodeAndName), null);
                returnValue = new ArchivingLanguage(ForceIso639ThreeChar(archivingLanguage.Iso3Code), archivingLanguage.LanguageName)
                {
                    EnglishName = archivingLanguage.EnglishName
                };
            }
            return(returnValue);
        }
コード例 #2
0
        private static ArchivingLanguage ParseLanguage(string languageDesignator, IArchivingPackage package)
        {
            ArchivingLanguage archivingLanguage = null;
            var parts = languageDesignator.SplitTrimmed(':').ToArray();

            if (parts.Length == 2)
            {
                var language = LanguageList.FindByISO3Code(parts[0]);

                // SP-765:  Allow codes from Ethnologue that are not in the Arbil list
                archivingLanguage = string.IsNullOrEmpty(language?.EnglishName)
                                        ? new ArchivingLanguage(ForceIso639ThreeChar(parts[0]), parts[1], parts[1])
                                        : new ArchivingLanguage(ForceIso639ThreeChar(language.Iso3Code), parts[1], language.EnglishName);
                package?.MetadataIso3Languages.Add(archivingLanguage);
            }
            else if (parts.Length == 1)
            {
                var language = LanguageList.FindByISO3Code(parts[0]);
                if (!string.IsNullOrEmpty(language?.EnglishName))
                {
                    archivingLanguage = new ArchivingLanguage(ForceIso639ThreeChar(language.Iso3Code), parts[1], language.EnglishName);
                    package?.MetadataIso3Languages.Add(archivingLanguage);
                }
            }

            return(archivingLanguage);
        }
コード例 #3
0
ファイル: LanguageList.cs プロジェクト: smitcham/libpalaso
        /// -------------------------------------------------------------------------------------------
        public static LanguageItem Find(ArchivingLanguage archLanguage)
        {
            LanguageItem item = null;

            if (!string.IsNullOrEmpty(archLanguage.Iso3Code))
            {
                item = FindByISO3Code(archLanguage.Iso3Code);
            }

            if (item == null)
            {
                if (!string.IsNullOrEmpty(archLanguage.EnglishName))
                {
                    item = FindByEnglishName(archLanguage.EnglishName);
                }
            }

            if (item != null)
            {
                item.OtherName = archLanguage.LanguageName;
                if (string.IsNullOrEmpty(item.EnglishName))
                {
                    item.EnglishName = archLanguage.EnglishName;
                }
            }

            return(item);
        }
コード例 #4
0
        public void GetLanguageName_ArchivingLanguage_ReturnsCorrectName()
        {
            // FieldWorks associates the name "Chinese" with the ISO3 Code "cmn"
            ArchivingLanguage lang = new ArchivingLanguage("cmn", "Chinese");

            // RAMP reqires the name "Chinese, Mandarin"
            Assert.AreEqual("Chinese, Mandarin", _helper.GetLanguageName(lang.Iso3Code));
        }
コード例 #5
0
        public void GetLanguageName_ArchivingLanguage_ReturnsCorrectName()
        {
            // FieldWorks associates the name "Chinese" with the ISO3 Code "cmn"
            ArchivingLanguage lang = new ArchivingLanguage("cmn", "Chinese");

            // RAMP reqires the name "Chinese, Mandarin"
            Assert.AreEqual("Chinese, Mandarin", _helper.GetLanguageName(lang.Iso3Code));
        }
コード例 #6
0
 public void GetEnglishName_GetFromCulture_ReturnsEnglishName()
 {
     var eng = new ArchivingLanguage("eng");
     var fra = new ArchivingLanguage("fra");
     var spa = new ArchivingLanguage("spa");
     Assert.AreEqual("English", eng.EnglishName);
     Assert.AreEqual("French", fra.EnglishName);
     Assert.AreEqual("Spanish", spa.EnglishName);
 }
コード例 #7
0
        public void GetEnglishName_GetFromCulture_ReturnsEnglishName()
        {
            var eng = new ArchivingLanguage("eng");
            var fra = new ArchivingLanguage("fra");
            var spa = new ArchivingLanguage("spa");

            Assert.AreEqual("English", eng.EnglishName);
            Assert.AreEqual("French", fra.EnglishName);
            Assert.AreEqual("Spanish", spa.EnglishName);
        }
コード例 #8
0
        public void GetLanguageName_ArchivingLanguage_ReturnsCorrectName()
        {
            IgnoreTestIfRampIsNotInstalled();

            Assert.Ignore("This test is no longer valid because RAMP 3.0 does not have a languages file");

            // FieldWorks associates the name "Chinese" with the ISO3 Code "cmn"
            ArchivingLanguage lang = new ArchivingLanguage("cmn", "Chinese");

            // RAMP reqires the name "Chinese, Mandarin"
            Assert.AreEqual("Chinese, Mandarin", _helper.GetLanguageName(lang.Iso3Code));
        }
コード例 #9
0
        internal static ArchivingLanguage GetOneLanguage(string languageKey)
        {
            ArchivingLanguage returnValue = null;
            var language = LanguageList.FindByEnglishName(languageKey);

            if (language == null || language.Iso3Code == "und")
            {
                if (!string.IsNullOrEmpty(languageKey) && languageKey.Length == 3)
                {
                    language = LanguageList.FindByISO3Code(languageKey);
                }
            }
            if (language != null && language.Iso3Code != "und" && !string.IsNullOrEmpty(language.EnglishName))
            {
                returnValue = new ArchivingLanguage(ForceIso639ThreeChar(language.Iso3Code), language.Definition)
                {
                    EnglishName = language.EnglishName
                }
            }
            ;
            return(returnValue);
        }
コード例 #10
0
ファイル: LanguageList.cs プロジェクト: JohnThomson/libpalaso
		/// -------------------------------------------------------------------------------------------
		public static LanguageItem Find(ArchivingLanguage archLanguage)
		{
			LanguageItem item = null;

			if (!string.IsNullOrEmpty(archLanguage.Iso3Code))
				item = FindByISO3Code(archLanguage.Iso3Code);

			if (item == null)
			{
				if (!string.IsNullOrEmpty(archLanguage.EnglishName))
					item = FindByEnglishName(archLanguage.EnglishName);
			}

			if (item != null)
			{
				item.OtherName = archLanguage.LanguageName;
				if (string.IsNullOrEmpty(item.EnglishName))
					item.EnglishName = archLanguage.EnglishName;
			}
			
			return item;
		}
コード例 #11
0
ファイル: IMDI_3_0.cs プロジェクト: jwickberg/libpalaso
		// TODO: Do we need this method?
		/// <remarks/>
		public ArchivingActor ToArchivingActor()
		{
			ArchivingActor actr = new ArchivingActor
			{
				Age = Age,
				Education = Education,
				FullName = FullName
			};

			if (Sex != null)
				actr.Gender = Sex.Value;

			if (Name.Length > 0)
				actr.Name = Name[0];

			if (!string.IsNullOrEmpty(Role.Value))
				actr.Role = Role.Value;

			if (!string.IsNullOrEmpty(BirthDate))
				actr.BirthDate = BirthDate;

			foreach (LanguageType lang in Languages.Language)
			{
				var iso3 = lang.Id.Substring(lang.Id.Length - 3);
				var archLanguage = new ArchivingLanguage(iso3, lang.Name[0].Value);
				actr.Iso3Languages.Add(archLanguage);

				if (lang.PrimaryLanguage.Value == BooleanEnum.@true)
					actr.PrimaryLanguage = archLanguage;

				if (lang.MotherTongue.Value == BooleanEnum.@true)
					actr.MotherTongueLanguage = archLanguage;
			}

			return actr;
		}
コード例 #12
0
ファイル: IMDI_3_0.cs プロジェクト: jwickberg/libpalaso
		/// <summary>Adds a language, setting some attributes also</summary>
		public void AddLanguage(ArchivingLanguage language, BooleanEnum primaryLanguage, BooleanEnum motherTongue)
		{
			var imdiLanguage = LanguageList.Find(language).ToLanguageType();
			if (imdiLanguage == null) return;

			imdiLanguage.PrimaryLanguage = new BooleanType { Value = primaryLanguage, Link = ListType.Link(ListType.Boolean) };
			imdiLanguage.MotherTongue = new BooleanType { Value = motherTongue, Link = ListType.Link(ListType.Boolean) };
			Languages.Language.Add(imdiLanguage);
		}
コード例 #13
0
ファイル: IMDI_3_0.cs プロジェクト: jwickberg/libpalaso
		/// <summary>Adds a language, setting some attributes also</summary>
		public void AddLanguage(ArchivingLanguage language, BooleanEnum dominantLanguage, BooleanEnum sourceLanguage, BooleanEnum targetLanguage)
		{
			var imdiLanguage = LanguageList.Find(language).ToLanguageType();
			if (imdiLanguage == null) return;

			imdiLanguage.Dominant = new BooleanType { Value = dominantLanguage };
			imdiLanguage.SourceLanguage = new BooleanType { Value = sourceLanguage };
			imdiLanguage.TargetLanguage = new BooleanType { Value = targetLanguage };
			Languages.Language.Add(imdiLanguage);
		}