Files
DP44/enriched-qwen3-coder-next/DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.ChartOptions/Resources.md
2026-04-17 14:55:32 -04:00

5.1 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.ChartOptions/Resources/TranslateExtension.cs
DTS Viewer/DTS.Viewer.Modules/DTS.Viewer.ChartOptions/Resources/StringResources.Designer.cs
2026-04-16T13:56:16.461808+00:00 zai-org/GLM-5-FP8 1 8d340ea94a701586

Documentation: DTS.Viewer.ChartOptions Resources

1. Purpose

This module provides localization infrastructure for the DTS.Viewer.ChartOptions namespace. It consists of a strongly-typed resource accessor class (StringResources) generated from a .resx file, and a XAML markup extension (TranslateExtension) that allows UI elements to bind directly to localized strings. This separates user-facing string management from application logic, supporting multi-language scenarios.

2. Public Interface

TranslateExtension (Class)

Namespace: DTS.Viewer.ChartOptions Inheritance: System.Windows.Markup.MarkupExtension

This class enables XAML binding to localized resources.

  • Constructor

    • public TranslateExtension(string key): Initializes the extension with the resource key to look up.
  • Methods

    • public override object ProvideValue(IServiceProvider serviceProvider): Resolves the _key provided in the constructor to a localized string.
      • Returns the localized string if found.
      • Returns #stringnotfound# if the key is null or empty.
      • Returns #stringnotfound# [key] if the lookup fails for a specific key.

StringResources (Class)

Namespace: DTS.Viewer.ChartOptions.Resources Access Modifier: internal

A strongly-typed resource class auto-generated by Visual Studio. It provides static properties to access culture-specific string values.

  • Properties

    • internal static global::System.Resources.ResourceManager ResourceManager: Gets the cached ResourceManager instance for this assembly.
    • internal static global::System.Globalization.CultureInfo Culture: Gets or sets the current UI culture used for resource lookups.
  • Resource String Properties (Static, Read-Only) The following properties return localized strings corresponding to specific UI elements:

    • ChartUnitType
    • FilterOptions_Title
    • LockT
    • MaxT
    • MaxY
    • MinT
    • MinY
    • Range
    • ResetAll
    • ResetT
    • SaveChart
    • SaveToPDF
    • TimeUnitType

3. Invariants

  1. Return Type Guarantee: The TranslateExtension class is decorated with [MarkupExtensionReturnType(typeof(string))], guaranteeing that ProvideValue returns a string (boxed as object).
  2. Non-Null Return: TranslateExtension.ProvideValue will never return null. It guarantees a return value even if the key is missing or invalid (returning a fallback error string).
  3. Resource Manager Singleton: StringResources.ResourceManager uses a lazy-initialization pattern; it creates the ResourceManager instance only once and caches it in the private static field resourceMan.
  4. Immutability of Key: Once TranslateExtension is constructed, the _key field is readonly and cannot be changed.

4. Dependencies

Internal Dependencies:

  • TranslateExtension depends entirely on StringResources.ResourceManager to perform the actual string lookup.

External Dependencies:

  • System.Windows.Markup: Required for MarkupExtension and IServiceProvider (implies this is a WPF module).
  • System.Resources: Required for ResourceManager.
  • System.Globalization: Required for CultureInfo.

Downstream Dependencies:

  • XAML files within the DTS.Viewer.ChartOptions module (or other modules referencing this namespace) depend on TranslateExtension to display localized text (e.g., usage likely looks like {local:Translate KeyName}).

5. Gotchas

  1. Silent Failure Behavior: TranslateExtension does not throw exceptions for missing keys. Instead, it returns the literal string #stringnotfound# (for null/empty keys) or #stringnotfound# [key] (for missing keys). This visual indicator might appear in the UI if resources are misconfigured, rather than causing a compile-time or runtime crash.
  2. Auto-Generated Code: StringResources is marked with GeneratedCodeAttribute. Manual edits to this file will be overwritten if the resource tooling regenerates it. The actual string values reside in an external .resx file (likely StringResources.resx) which is not visible in the provided source but is implied by the designer file.
  3. Internal Visibility: The StringResources class is internal. It cannot be accessed directly from outside the DTS.Viewer.ChartOptions assembly. However, TranslateExtension is public, allowing external assemblies to use the XAML extension if they reference this assembly.
  4. Case Sensitivity: The ResourceManager.GetString method called by TranslateExtension is typically case-sensitive regarding the resource key (depending on the underlying resource set implementation), though the constant _key is passed exactly as provided to the constructor.