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
- PageBuildProvider.cs
- HostProtectionPermission.cs
- UIntPtr.cs
- XPathExpr.cs
- SoapSchemaMember.cs
- sortedlist.cs
- DesignerProperties.cs
- ColorTransform.cs
- TypeExtensionConverter.cs
- SendSecurityHeaderElement.cs
- SqlErrorCollection.cs
- NameTable.cs
- PrincipalPermissionMode.cs
- Comparer.cs
- Property.cs
- StandardCommandToolStripMenuItem.cs
- PropertyDescriptor.cs
- WindowsImpersonationContext.cs
- IChannel.cs
- FixedSOMGroup.cs
- GroupItem.cs
- DatatypeImplementation.cs
- CodeSnippetCompileUnit.cs
- Switch.cs
- PartitionedDataSource.cs
- VectorConverter.cs
- SelectionGlyphBase.cs
- CompiledQuery.cs
- PropertyTab.cs
- WindowsAuthenticationModule.cs
- WebBaseEventKeyComparer.cs
- XmlCountingReader.cs
- ToolZone.cs
- CallbackWrapper.cs
- XmlSchemaGroup.cs
- LinqDataSourceValidationException.cs
- SerialReceived.cs
- SafeCryptoHandles.cs
- XmlDataLoader.cs
- BypassElement.cs
- SerializationStore.cs
- Popup.cs
- CheckBoxRenderer.cs
- BaseCAMarshaler.cs
- SupportingTokenBindingElement.cs
- NonBatchDirectoryCompiler.cs
- MenuAdapter.cs
- CacheAxisQuery.cs
- LightweightCodeGenerator.cs
- SqlIdentifier.cs
- HttpResponse.cs
- LOSFormatter.cs
- HandlerBase.cs
- DistinctQueryOperator.cs
- AuthorizationSection.cs
- DefaultTraceListener.cs
- DataKey.cs
- RegexCompiler.cs
- PerspectiveCamera.cs
- AnnotationDocumentPaginator.cs
- SiteMapDataSourceView.cs
- ItemsControlAutomationPeer.cs
- ExtentCqlBlock.cs
- SqlTypeSystemProvider.cs
- StandardTransformFactory.cs
- PresentationTraceSources.cs
- ADConnectionHelper.cs
- SessionStateSection.cs
- VolatileEnlistmentMultiplexing.cs
- HttpHeaderCollection.cs
- LoginName.cs
- CompilerScope.Storage.cs
- InlineCollection.cs
- SqlCharStream.cs
- RuntimeCompatibilityAttribute.cs
- HtmlTableRow.cs
- XmlEntity.cs
- DoubleLink.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- BindingList.cs
- RuleInfoComparer.cs
- ConditionalAttribute.cs
- HostedElements.cs
- SqlDataSourceCache.cs
- HtmlContainerControl.cs
- DataControlField.cs
- AnnotationDocumentPaginator.cs
- DateTimeFormatInfo.cs
- CryptoHandle.cs
- FlowDocumentPaginator.cs
- hebrewshape.cs
- ToggleButtonAutomationPeer.cs
- StaticFileHandler.cs
- XmlNodeList.cs
- FacetValueContainer.cs
- ValidatorCompatibilityHelper.cs
- ProcessHostServerConfig.cs
- SerializationEventsCache.cs
- SequenceQuery.cs
- ListViewInsertEventArgs.cs