Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ErrorWrapper.cs
- ListArgumentProvider.cs
- GB18030Encoding.cs
- ReferencedAssembly.cs
- StringUtil.cs
- HuffCodec.cs
- MultiPropertyDescriptorGridEntry.cs
- GACIdentityPermission.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- EmbeddedMailObject.cs
- ListSourceHelper.cs
- IgnoreSection.cs
- Pair.cs
- X509ThumbprintKeyIdentifierClause.cs
- EventBuilder.cs
- WpfGeneratedKnownProperties.cs
- PreviewKeyDownEventArgs.cs
- ActivationArguments.cs
- TrackBarRenderer.cs
- TextTreeExtractElementUndoUnit.cs
- PeerCollaborationPermission.cs
- DomainUpDown.cs
- ZipIOModeEnforcingStream.cs
- WebPartCancelEventArgs.cs
- CollectionAdapters.cs
- PartialTrustHelpers.cs
- WindowsToolbar.cs
- ListViewInsertEventArgs.cs
- TextEditorCharacters.cs
- ApplicationServicesHostFactory.cs
- SynchronizationHandlesCodeDomSerializer.cs
- ProfileParameter.cs
- ProxyWebPartManager.cs
- BoundPropertyEntry.cs
- TextDecorationUnitValidation.cs
- CustomAssemblyResolver.cs
- CalendarDateRange.cs
- LinqDataSourceUpdateEventArgs.cs
- ConnectionConsumerAttribute.cs
- DrawingContextFlattener.cs
- ContentFileHelper.cs
- JoinCqlBlock.cs
- webbrowsersite.cs
- TraceContextEventArgs.cs
- EventData.cs
- PaperSource.cs
- RangeValuePatternIdentifiers.cs
- counter.cs
- updateconfighost.cs
- InstanceNameConverter.cs
- RuntimeArgumentHandle.cs
- SizeConverter.cs
- ListenerSingletonConnectionReader.cs
- NameTable.cs
- OdbcPermission.cs
- ObjectStateManagerMetadata.cs
- ScalarOps.cs
- XmlCountingReader.cs
- TimeoutTimer.cs
- SuspendDesigner.cs
- TimestampInformation.cs
- ProcessProtocolHandler.cs
- WSHttpBindingBaseElement.cs
- MasterPageParser.cs
- ProjectionPruner.cs
- BindingContext.cs
- SQLBinaryStorage.cs
- XmlSyndicationContent.cs
- GlyphsSerializer.cs
- PropertyRef.cs
- UIAgentAsyncEndRequest.cs
- DeferredElementTreeState.cs
- TextInfo.cs
- IdentityManager.cs
- EntityContainerAssociationSetEnd.cs
- Pick.cs
- UrlPath.cs
- InputLanguageProfileNotifySink.cs
- ProfileGroupSettingsCollection.cs
- QuaternionConverter.cs
- DependencyPropertyAttribute.cs
- InvokePatternIdentifiers.cs
- BaseAsyncResult.cs
- CodeDomConfigurationHandler.cs
- RestHandlerFactory.cs
- FactoryMaker.cs
- CatalogZoneBase.cs
- DesignerSerializationVisibilityAttribute.cs
- KeyEvent.cs
- OutputCacheSettings.cs
- ContainerControlDesigner.cs
- GridViewUpdatedEventArgs.cs
- ExpressionBindings.cs
- StackOverflowException.cs
- ResourceExpressionEditorSheet.cs
- HotSpotCollection.cs
- ComponentCollection.cs
- TaskFormBase.cs
- GeometryCollection.cs
- TextRangeAdaptor.cs