Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Markup / Localizer / BamlLocalizer.cs / 3 / 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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SelectorItemAutomationPeer.cs
- HttpDictionary.cs
- ErrorEventArgs.cs
- DispatcherEventArgs.cs
- DataGridViewCellConverter.cs
- ChannelManager.cs
- NameValueConfigurationElement.cs
- Listbox.cs
- COM2IDispatchConverter.cs
- OperationExecutionFault.cs
- VoiceObjectToken.cs
- FigureParaClient.cs
- WsdlWriter.cs
- UriParserTemplates.cs
- QueueProcessor.cs
- AesCryptoServiceProvider.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- SR.cs
- LassoSelectionBehavior.cs
- QueryInterceptorAttribute.cs
- DropDownList.cs
- ColorTranslator.cs
- CallSite.cs
- SqlCommandSet.cs
- errorpatternmatcher.cs
- DeclarativeCatalogPart.cs
- ToolStripSettings.cs
- InkPresenter.cs
- ObjectTag.cs
- ItemChangedEventArgs.cs
- CustomError.cs
- DataViewManager.cs
- XPathQilFactory.cs
- IndexerNameAttribute.cs
- VariantWrapper.cs
- SqlProcedureAttribute.cs
- autovalidator.cs
- XamlPoint3DCollectionSerializer.cs
- ScriptControlManager.cs
- DateTimeParse.cs
- PublisherIdentityPermission.cs
- DataGridCellsPresenter.cs
- InstalledVoice.cs
- FunctionNode.cs
- ComboBox.cs
- PackageDigitalSignature.cs
- GraphicsContainer.cs
- StoreItemCollection.cs
- ChildChangedEventArgs.cs
- LineMetrics.cs
- AddDataControlFieldDialog.cs
- SoapReflector.cs
- XmlDataSourceNodeDescriptor.cs
- CleanUpVirtualizedItemEventArgs.cs
- StorageEntitySetMapping.cs
- WebMethodAttribute.cs
- CodeTypeMemberCollection.cs
- SecondaryIndexList.cs
- ReverseComparer.cs
- LabelEditEvent.cs
- ResXBuildProvider.cs
- DebugTrace.cs
- FigureParaClient.cs
- PngBitmapDecoder.cs
- KeyTimeConverter.cs
- TextDpi.cs
- ConditionalAttribute.cs
- NamedElement.cs
- RuleConditionDialog.Designer.cs
- RawAppCommandInputReport.cs
- EmissiveMaterial.cs
- Convert.cs
- InvokePatternIdentifiers.cs
- HandlerBase.cs
- GAC.cs
- IndexedSelectQueryOperator.cs
- SoapSchemaMember.cs
- TransactionsSectionGroup.cs
- CoreSwitches.cs
- PageThemeCodeDomTreeGenerator.cs
- BitmapEffectInputData.cs
- WebPartConnectionsDisconnectVerb.cs
- ActivityCodeDomReferenceService.cs
- IList.cs
- MatrixValueSerializer.cs
- SchemaCollectionCompiler.cs
- StatusBar.cs
- TickBar.cs
- EventSourceCreationData.cs
- SimpleWorkerRequest.cs
- TemplateParser.cs
- DataGridViewComboBoxColumn.cs
- DesignerInterfaces.cs
- ToReply.cs
- EnumConverter.cs
- ClientOperationFormatterProvider.cs
- BrowserPolicyValidator.cs
- ProcessThread.cs
- Binding.cs
- Activator.cs