Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Markup / Localizer / BamlLocalizer.cs / 1 / 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 [....] // History: 8/3/2004 Move to System.Windows namespace // 11/29/2004 [....] Move to System.Windows.Markup.Localization namespace // 03/24/2005 [....] 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
- XmlReflectionMember.cs
- DataFormats.cs
- TypeInfo.cs
- MultiDataTrigger.cs
- ListViewItemMouseHoverEvent.cs
- WindowExtensionMethods.cs
- XmlPreloadedResolver.cs
- EntityTypeBase.cs
- DefaultValueConverter.cs
- StrokeRenderer.cs
- XmlQueryContext.cs
- XmlDocumentType.cs
- SqlClientPermission.cs
- XmlDomTextWriter.cs
- Metafile.cs
- PathGradientBrush.cs
- ListBoxItemAutomationPeer.cs
- MimeObjectFactory.cs
- RuntimeHandles.cs
- HttpCachePolicyBase.cs
- BamlBinaryWriter.cs
- BooleanConverter.cs
- PnrpPermission.cs
- RootBrowserWindow.cs
- ParenthesizePropertyNameAttribute.cs
- MetadataUtilsSmi.cs
- COMException.cs
- DataGridViewSortCompareEventArgs.cs
- XmlNodeChangedEventArgs.cs
- ProfileInfo.cs
- WebPartEditorApplyVerb.cs
- ImageSource.cs
- ScrollableControl.cs
- SequentialWorkflowRootDesigner.cs
- StylusPointPropertyId.cs
- PermissionRequestEvidence.cs
- MailHeaderInfo.cs
- CompiledIdentityConstraint.cs
- PathFigureCollectionValueSerializer.cs
- BypassElementCollection.cs
- BoundColumn.cs
- BamlMapTable.cs
- AccessorTable.cs
- DataGridViewDataConnection.cs
- XmlArrayItemAttributes.cs
- StaticExtension.cs
- ScriptReferenceBase.cs
- ExpandSegment.cs
- QilPatternVisitor.cs
- MemberListBinding.cs
- LateBoundBitmapDecoder.cs
- WmlTextViewAdapter.cs
- PictureBox.cs
- IResourceProvider.cs
- ExtensibleSyndicationObject.cs
- XmlSerializer.cs
- EventLogConfiguration.cs
- ToolStripDesignerAvailabilityAttribute.cs
- WmpBitmapEncoder.cs
- TraceContextEventArgs.cs
- ImmutableAssemblyCacheEntry.cs
- XmlSignatureProperties.cs
- DesignerDataSchemaClass.cs
- SapiInterop.cs
- XmlNodeComparer.cs
- DesignerActionListCollection.cs
- XmlnsCompatibleWithAttribute.cs
- HitTestFilterBehavior.cs
- AuthenticationModulesSection.cs
- StorageEndPropertyMapping.cs
- OdbcDataReader.cs
- PassportAuthenticationModule.cs
- NativeWindow.cs
- WebPartEventArgs.cs
- ConfigXmlText.cs
- PropertyNames.cs
- GridViewRowPresenterBase.cs
- PasswordTextContainer.cs
- FieldAccessException.cs
- OciLobLocator.cs
- COM2AboutBoxPropertyDescriptor.cs
- ThreadAbortException.cs
- HttpApplication.cs
- ComboBoxRenderer.cs
- System.Data_BID.cs
- HotSpot.cs
- DesignerWidgets.cs
- SortDescriptionCollection.cs
- PropertyInfo.cs
- XmlText.cs
- InstallerTypeAttribute.cs
- NamespaceCollection.cs
- StrokeIntersection.cs
- DeadLetterQueue.cs
- Html32TextWriter.cs
- OleDbTransaction.cs
- MemoryRecordBuffer.cs
- DataSetViewSchema.cs
- BaseUriHelper.cs
- Accessible.cs