コード例 #1
0
ファイル: FileBaseProvider.cs プロジェクト: vishalishere/CBR
        /// <summary>
        /// This remove a resource from memory, more for developper when update or change the module
        /// or the default value to re create the resource (files mode)
        /// </summary>
        /// <param name="ietfCode"></param>
        /// <param name="modul"></param>
        /// <param name="resource"></param>
        public override void DeleteResource(string ietfCode, string modul, object resource)
        {
            LocalizationItem       item = resource as LocalizationItem;
            LocalizationDictionary dico = GetLocalizationDictionary(ietfCode, modul);

            dico.LocalizationItems.Remove(item);
        }
コード例 #2
0
ファイル: FileBaseProvider.cs プロジェクト: vishalishere/CBR
        /// <summary>
        /// Return the extension value, implemented by all providers
        /// </summary>
        /// <param name="ext"></param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public override object GetObject(LocalizationExtension ext, CultureInfo culture)
        {
            List <LocalizationItem> listLoc = GetLocalizationItem(culture.IetfLanguageTag, ext.ResModul);

            if (listLoc != null)
            {
                LocalizationItem item = listLoc.Single(p => p.Key == ext.Key);
                item.IsUsed = true;
                return(item.Translated);
            }
            else
            {
                listLoc = GetLocalizationItem(culture.IetfLanguageTag, "UNDEFINED");
                if (listLoc != null)
                {
                    LocalizationItem item = listLoc.Single(p => p.Key == ext.Key);
                    item.IsUsed = true;
                    return(item.Translated);
                }
                else
                {
                    return(null);
                }
            }
        }
コード例 #3
0
ファイル: LocalizationFile.cs プロジェクト: vishalishere/CBR
        /// <summary>
        /// Clone allow to duplicate a existing resource when create a new culture
        /// </summary>
        /// <returns></returns>
        public LocalizationItem Clone()
        {
            LocalizationItem loc = new LocalizationItem()
            {
                Key     = new string(this.Key.ToArray()),
                Default = new string(this.Default.ToArray()),
            };

            if (!loc.Default.StartsWith("#"))
            {
                loc.Translated = "#" + loc.Default;
            }
            else
            {
                loc.Translated = loc.Default;
            }

            return(loc);
        }
コード例 #4
0
ファイル: FileBaseProvider.cs プロジェクト: vishalishere/CBR
        /// <summary>
        /// Extra method to get translation from code
        /// </summary>
        /// <param name="ietfCode"></param>
        /// <param name="modul"></param>
        /// <param name="key"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public override string GetLocalizationResource(string ietfCode, string modul, string key, string defaultValue)
        {
            List <LocalizationExtension> ext = MarkupExtensionManager.Instance.Extensions.
                                               Cast <LocalizationExtension>().Where(p => p.ResModul == modul && p.Key == key).ToList();

            LocalizationExtension locExt;

            if (ext.Count == 1)
            {
                locExt = ext[0];
            }
            else
            {
                locExt = new LocalizationExtension(modul, key, defaultValue);
            }

            LocalizationItem item = GetCorrespondingItem(locExt, CultureInfo.GetCultureInfo(ietfCode));

            return(item.Translated);
        }
コード例 #5
0
ファイル: FileBaseProvider.cs プロジェクト: vishalishere/CBR
        protected void CreateForOtherlanguage(LocalizationItem item, string ietfCodeOther, string modul)
        {
            try
            {
                foreach (LocalizationFile fileOther in _localizationFileList.Where(p => p.IetfLanguageTag != ietfCodeOther))
                {
                    List <LocalizationExtension> ext = MarkupExtensionManager.Instance.Extensions.
                                                       Cast <LocalizationExtension>().Where(p => p.ResModul == modul && p.Key == item.Key).ToList();

                    LocalizationExtension locExt;
                    if (ext.Count == 1)
                    {
                        locExt = ext[0];
                    }
                    else
                    {
                        locExt = new LocalizationExtension(modul, item.Key, item.Default);
                    }

                    GetCorrespondingItem(locExt, CultureInfo.GetCultureInfo(fileOther.IetfLanguageTag));
                }
            }
            catch { }
        }
コード例 #6
0
ファイル: FileBaseProvider.cs プロジェクト: vishalishere/CBR
        internal LocalizationItem GetCorrespondingItem(LocalizationExtension ext, CultureInfo culture)
        {
            if (string.IsNullOrEmpty(ext.DefaultValue))
            {
                ext.DefaultValue = (string)base.GetDefaultValue(ext, culture);
            }

            //add default value to the resource
            LocalizationItem itemResult = new LocalizationItem()
            {
                Key = ext.Key, Default = ext.DefaultValue, Translated = ext.DefaultValue
            };

            List <LocalizationItem> listLoc = null;

            if (string.IsNullOrEmpty(ext.ResModul))             //case modul is missing, invent a undefined.2letter.xml dictionnary
            {
                listLoc = GetLocalizationItem(culture.IetfLanguageTag, "UNDEFINED");

                //no resource dictionnary for code and modul
                if (listLoc == null)
                {
                    //create it
                    LocalizationDictionary dict = GetUndefined(culture.IetfLanguageTag);
                    dict.LocalizationItems.Add(itemResult);
                }
                else                 //list exist, what about the resource
                {
                    if (listLoc.Exists(p => p.Key == ext.Key))
                    {
                        return(listLoc.Single(p => p.Key == ext.Key));
                    }
                    else
                    {
                        listLoc.Add(itemResult);
                    }
                }

                itemResult.IsUsed = true;
                return(itemResult);
            }

            LocalizationFile loc_file = GetLocalizationFileFromCode(culture.IetfLanguageTag);

            //file is missing
            if (loc_file == null)
            {
                //create the file
                loc_file = new LocalizationFile(culture.IetfLanguageTag);
                _localizationFileList.Add(loc_file);

                //create the dico
                LocalizationDictionary dict = new LocalizationDictionary()
                {
                    Module            = ext.ResModul,
                    IetfLanguageTag   = culture.IetfLanguageTag,
                    FileName          = string.Format("{0}.{1}.{2}", ext.ResModul, culture.IetfLanguageTag, FileExtension),
                    LocalizationItems = new List <LocalizationItem>()
                };

                loc_file.Dictionnaries.Add(dict);

                dict.LocalizationItems.Add(itemResult);

                itemResult.IsUsed = true;
                return(itemResult);
            }

            LocalizationDictionary dico = GetLocalizationDictionary(culture.IetfLanguageTag, ext.ResModul);

            // no dictionnary
            if (dico == null)
            {
                //create the dico
                dico = new LocalizationDictionary()
                {
                    Module            = ext.ResModul,
                    IetfLanguageTag   = culture.IetfLanguageTag,
                    FileName          = string.Format("{0}.{1}.{2}", ext.ResModul, culture.IetfLanguageTag, FileExtension),
                    LocalizationItems = new List <LocalizationItem>()
                };

                loc_file.Dictionnaries.Add(dico);

                dico.LocalizationItems.Add(itemResult);

                itemResult.IsUsed = true;
                return(itemResult);
            }
            else
            {
                List <LocalizationItem> temp = dico.LocalizationItems.Where(p => p.Key == itemResult.Key).ToList();
                if (temp.Count == 1)
                {
                    itemResult = temp[0];
                }
                else
                {
                    dico.LocalizationItems.Add(itemResult);
                    CreateForOtherlanguage(itemResult, culture.IetfLanguageTag, ext.ResModul);
                }
            }

            itemResult.IsUsed = true;
            return(itemResult);
        }