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
- NonSerializedAttribute.cs
- TextBoxBase.cs
- IndexOutOfRangeException.cs
- PropertyMapper.cs
- TreePrinter.cs
- FragmentNavigationEventArgs.cs
- SortDescriptionCollection.cs
- CompilationRelaxations.cs
- ContentType.cs
- GetPageNumberCompletedEventArgs.cs
- HandlerBase.cs
- ErrorFormatterPage.cs
- SharedPersonalizationStateInfo.cs
- TextEditorContextMenu.cs
- ObjectListCommandEventArgs.cs
- ConfigurationStrings.cs
- NetTcpSecurity.cs
- CommentEmitter.cs
- EdmEntityTypeAttribute.cs
- OleDbConnectionInternal.cs
- ServiceProviders.cs
- SHA256Managed.cs
- MouseBinding.cs
- RepeaterDesigner.cs
- MasterPageParser.cs
- ParameterReplacerVisitor.cs
- BinaryObjectWriter.cs
- RenderTargetBitmap.cs
- DynamicDocumentPaginator.cs
- ButtonStandardAdapter.cs
- EventLogPermissionEntryCollection.cs
- OperatorExpressions.cs
- ListViewTableCell.cs
- PropertyChangedEventArgs.cs
- StrongNameKeyPair.cs
- Geometry.cs
- SrgsItemList.cs
- ErrorFormatterPage.cs
- HtmlElement.cs
- ImageInfo.cs
- SecurityException.cs
- ViewgenGatekeeper.cs
- ApplicationTrust.cs
- ProgressiveCrcCalculatingStream.cs
- FontSourceCollection.cs
- Site.cs
- XomlCompiler.cs
- TextBoxBase.cs
- DrawingImage.cs
- TypeElement.cs
- ListControlBuilder.cs
- RegistryPermission.cs
- TextChangedEventArgs.cs
- LineBreak.cs
- XmlNavigatorFilter.cs
- AnnotationStore.cs
- GradientStopCollection.cs
- KeyInstance.cs
- InheritanceService.cs
- ControlEvent.cs
- ToolStripDropDownItem.cs
- backend.cs
- XamlBuildTaskServices.cs
- DataGridPageChangedEventArgs.cs
- DigestComparer.cs
- ValueQuery.cs
- DataContractSerializer.cs
- XmlDataSourceView.cs
- CompositionTarget.cs
- ExternalFile.cs
- ADRole.cs
- versioninfo.cs
- HtmlListAdapter.cs
- HttpWebRequestElement.cs
- DataSourceIDConverter.cs
- HeaderedItemsControl.cs
- Parameter.cs
- Span.cs
- SafeFileMapViewHandle.cs
- DbExpressionVisitor.cs
- WorkflowInlining.cs
- NetworkAddressChange.cs
- Point3DCollectionConverter.cs
- XsdBuilder.cs
- DataGridViewColumn.cs
- TextServicesCompartmentEventSink.cs
- Substitution.cs
- DataGridViewCellFormattingEventArgs.cs
- CheckBoxStandardAdapter.cs
- StrongNameKeyPair.cs
- WebSysDescriptionAttribute.cs
- ProcessHostFactoryHelper.cs
- UrlMappingsSection.cs
- ClaimTypes.cs
- ControlPaint.cs
- XmlFormatWriterGenerator.cs
- InsufficientMemoryException.cs
- EventSetterHandlerConverter.cs
- ColumnHeader.cs
- SerializationException.cs