BamlLocalizer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / Localizer / BamlLocalizer.cs / 1305600 / BamlLocalizer.cs

                            //------------------------------------------------------------------------ 
//
//  Microsoft Windows Client Platform
//  Copyright (C) Microsoft Corporation, 2001
// 
//  File:      BamlLocalizer.cs
// 
//  Contents:  BamlLocalizer class, part of Baml Localization API 
//
//  Created:   3/17/2004 Garyyang 
//  History:   8/3/2004 Move to System.Windows namespace
//           11/29/2004 Garyyang Move to System.Windows.Markup.Localization namespace
//           03/24/2005 Garyyang Move to System.Windows.Markup.Localizer namespace
// 
//
//----------------------------------------------------------------------- 
 

using System; 
using System.IO;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Collections; 
using System.Windows.Markup;
using System.Diagnostics; 
using System.Text; 
using System.Reflection;
using System.Windows; 

using MS.Internal.Globalization;

namespace System.Windows.Markup.Localizer 
{
    ///  
    /// BamlLocalizer class localizes a baml stram. 
    /// 
    public class BamlLocalizer 
    {
        //-----------------------------------
        // constructor
        //----------------------------------- 

        ///  
        /// Constructor 
        /// 
        /// source baml stream to be localized 
        public BamlLocalizer(Stream source) : this (source, null)
        {
        }
 
        /// 
        /// Constructor 
        ///  
        /// source baml stream to be localized
        /// Localizability resolver implemented by client 
        public BamlLocalizer(
            Stream source,
            BamlLocalizabilityResolver resolver
            ) : this (source, resolver, null) 
        {
        } 
 
        /// 
        /// constructor 
        /// 
        /// source baml straem to be localized
        /// Localizability resolver implemented by client
        /// TextReader to read localization comments XML  
        public BamlLocalizer(
            Stream                      source, 
            BamlLocalizabilityResolver  resolver, 
            TextReader                  comments
            ) 
        {
            if (source == null)
            {
                throw new ArgumentNullException("source"); 
            }
 
            _tree = BamlResourceDeserializer.LoadBaml(source); 

            // create a Baml Localization Enumerator 
            _bamlTreeMap = new BamlTreeMap(this, _tree, resolver, comments);
        }

        ///  
        /// Extract localizable resources from the source baml.
        ///  
        /// Localizable resources returned in the form of BamlLoaclizationDictionary 
        public BamlLocalizationDictionary ExtractResources()
        { 
            return _bamlTreeMap.LocalizationDictionary.Copy();
        }

        ///  
        /// Udpate the source baml into a target stream with all the resource udpates applied.
        ///  
        /// target stream 
        /// resource updates to be applied when generating the localized baml
        public void UpdateBaml( 
            Stream                      target,
            BamlLocalizationDictionary  updates
            )
        { 
            if (target  == null)
            { 
                throw new ArgumentNullException("target"); 
            }
            if (updates == null) 
            {
                throw new ArgumentNullException("updates");
            }
 
            // we duplicate the internal baml tree here because
            // we will need to modify the tree to do generation 
            // UpdateBaml can be called multiple times 
            BamlTree _duplicateTree = _tree.Copy();
            _bamlTreeMap.EnsureMap(); 

            // Udpate the tree
            BamlTreeUpdater.UpdateTree(
                _duplicateTree, 
                _bamlTreeMap,
                updates 
                ); 

            // Serialize the tree into Baml 
            BamlResourceSerializer.Serialize(
                this,
                _duplicateTree,
                target 
                );
 
        } 

        ///  
        /// Raised by BamlLocalizer when it encounters any abnormal conditions.
        /// 
        /// 
        /// BamlLocalizer can normally ignore the errors and continue the localization. 
        /// As a result, the output baml will only be partially localized. The client
        /// can choose to stop the BamlLocalizer on error by throw exceptions in their 
        /// event handlers. 
        /// 
        public event BamlLocalizerErrorNotifyEventHandler ErrorNotify; 

        /// 
        /// Raise ErrorNotify event
        ///  
        protected virtual void OnErrorNotify(BamlLocalizerErrorNotifyEventArgs e)
        { 
            BamlLocalizerErrorNotifyEventHandler handler = ErrorNotify; 
            if (handler != null)
            { 
                handler(this, e);
            }
        }
 
        //----------------------------------
        // Internal method 
        //---------------------------------- 
        internal void RaiseErrorNotifyEvent(BamlLocalizerErrorNotifyEventArgs e)
        { 
            OnErrorNotify(e);
        }

        //---------------------------------- 
        // Private member
        //---------------------------------- 
        private BamlTreeMap _bamlTreeMap; 
        private BamlTree    _tree;
    } 

    /// 
    /// The delegate for the BamlLocalizer.ErrorNotify event
    ///  
    public delegate void BamlLocalizerErrorNotifyEventHandler(object sender, BamlLocalizerErrorNotifyEventArgs e);
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------ 
//
//  Microsoft Windows Client Platform
//  Copyright (C) Microsoft Corporation, 2001
// 
//  File:      BamlLocalizer.cs
// 
//  Contents:  BamlLocalizer class, part of Baml Localization API 
//
//  Created:   3/17/2004 Garyyang 
//  History:   8/3/2004 Move to System.Windows namespace
//           11/29/2004 Garyyang Move to System.Windows.Markup.Localization namespace
//           03/24/2005 Garyyang Move to System.Windows.Markup.Localizer namespace
// 
//
//----------------------------------------------------------------------- 
 

using System; 
using System.IO;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Collections; 
using System.Windows.Markup;
using System.Diagnostics; 
using System.Text; 
using System.Reflection;
using System.Windows; 

using MS.Internal.Globalization;

namespace System.Windows.Markup.Localizer 
{
    ///  
    /// BamlLocalizer class localizes a baml stram. 
    /// 
    public class BamlLocalizer 
    {
        //-----------------------------------
        // constructor
        //----------------------------------- 

        ///  
        /// Constructor 
        /// 
        /// source baml stream to be localized 
        public BamlLocalizer(Stream source) : this (source, null)
        {
        }
 
        /// 
        /// Constructor 
        ///  
        /// source baml stream to be localized
        /// Localizability resolver implemented by client 
        public BamlLocalizer(
            Stream source,
            BamlLocalizabilityResolver resolver
            ) : this (source, resolver, null) 
        {
        } 
 
        /// 
        /// constructor 
        /// 
        /// source baml straem to be localized
        /// Localizability resolver implemented by client
        /// TextReader to read localization comments XML  
        public BamlLocalizer(
            Stream                      source, 
            BamlLocalizabilityResolver  resolver, 
            TextReader                  comments
            ) 
        {
            if (source == null)
            {
                throw new ArgumentNullException("source"); 
            }
 
            _tree = BamlResourceDeserializer.LoadBaml(source); 

            // create a Baml Localization Enumerator 
            _bamlTreeMap = new BamlTreeMap(this, _tree, resolver, comments);
        }

        ///  
        /// Extract localizable resources from the source baml.
        ///  
        /// Localizable resources returned in the form of BamlLoaclizationDictionary 
        public BamlLocalizationDictionary ExtractResources()
        { 
            return _bamlTreeMap.LocalizationDictionary.Copy();
        }

        ///  
        /// Udpate the source baml into a target stream with all the resource udpates applied.
        ///  
        /// target stream 
        /// resource updates to be applied when generating the localized baml
        public void UpdateBaml( 
            Stream                      target,
            BamlLocalizationDictionary  updates
            )
        { 
            if (target  == null)
            { 
                throw new ArgumentNullException("target"); 
            }
            if (updates == null) 
            {
                throw new ArgumentNullException("updates");
            }
 
            // we duplicate the internal baml tree here because
            // we will need to modify the tree to do generation 
            // UpdateBaml can be called multiple times 
            BamlTree _duplicateTree = _tree.Copy();
            _bamlTreeMap.EnsureMap(); 

            // Udpate the tree
            BamlTreeUpdater.UpdateTree(
                _duplicateTree, 
                _bamlTreeMap,
                updates 
                ); 

            // Serialize the tree into Baml 
            BamlResourceSerializer.Serialize(
                this,
                _duplicateTree,
                target 
                );
 
        } 

        ///  
        /// Raised by BamlLocalizer when it encounters any abnormal conditions.
        /// 
        /// 
        /// BamlLocalizer can normally ignore the errors and continue the localization. 
        /// As a result, the output baml will only be partially localized. The client
        /// can choose to stop the BamlLocalizer on error by throw exceptions in their 
        /// event handlers. 
        /// 
        public event BamlLocalizerErrorNotifyEventHandler ErrorNotify; 

        /// 
        /// Raise ErrorNotify event
        ///  
        protected virtual void OnErrorNotify(BamlLocalizerErrorNotifyEventArgs e)
        { 
            BamlLocalizerErrorNotifyEventHandler handler = ErrorNotify; 
            if (handler != null)
            { 
                handler(this, e);
            }
        }
 
        //----------------------------------
        // Internal method 
        //---------------------------------- 
        internal void RaiseErrorNotifyEvent(BamlLocalizerErrorNotifyEventArgs e)
        { 
            OnErrorNotify(e);
        }

        //---------------------------------- 
        // Private member
        //---------------------------------- 
        private BamlTreeMap _bamlTreeMap; 
        private BamlTree    _tree;
    } 

    /// 
    /// The delegate for the BamlLocalizer.ErrorNotify event
    ///  
    public delegate void BamlLocalizerErrorNotifyEventHandler(object sender, BamlLocalizerErrorNotifyEventArgs e);
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK