Files
DP44/enriched-qwen3-coder-next/DataPRO/Modules/SystemSettings/DBImportExport/Resources.md
2026-04-17 14:55:32 -04:00

4.1 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DataPRO/Modules/SystemSettings/DBImportExport/Resources/TranslateExtension.cs
DataPRO/Modules/SystemSettings/DBImportExport/Resources/StringResources.Designer.cs
2026-04-16T04:40:36.604143+00:00 Qwen/Qwen3-Coder-Next-FP8 1 4daa568e9b05fe61

Resources

Documentation: TranslateExtension Markup Extension


1. Purpose

This module provides a WPF MarkupExtension (TranslateExtension) to support localization of UI strings in XAML. It enables declarative binding of localized text resources (from StringResources) directly in XAML markup, using a string key. The extension acts as a bridge between the strongly-typed StringResources class and XAML, returning localized strings at runtime or a fallback marker when a key is missing or invalid.


2. Public Interface

TranslateExtension class

Namespace: DBImportExport.Resources
Inherits: MarkupExtension

  • Constructor

    public TranslateExtension(string key)
    

    Initializes a new instance with the specified resource key. The key is stored in the private readonly field _key.

  • ProvideValue method

    public override object ProvideValue(IServiceProvider serviceProvider)
    

    Returns the localized string corresponding to _key, or a fallback value if the key is null/empty or the string is not found.

    • If _key is null or empty → returns "#stringnotfound#".
    • If StringResources.ResourceManager.GetString(_key) returns null → returns "#stringnotfound# " + _key.
    • Otherwise → returns the localized string.

3. Invariants

  • _key is immutable after construction (declared readonly).
  • The extension always returns a string (per [MarkupExtensionReturnType(typeof(string))]).
  • If a resource key is missing or invalid, the return value is guaranteed to begin with "#stringnotfound#" — no exceptions are thrown.
  • The StringResources.ResourceManager.GetString(...) call is assumed to be thread-safe (standard for ResourceManager), but no explicit synchronization is present in TranslateExtension.

4. Dependencies

Dependencies of this module:

  • System.Windows.Markup — for MarkupExtension base class and MarkupExtensionReturnTypeAttribute.
  • DBImportExport.Resources.StringResources — specifically its ResourceManager property and generated strongly-typed accessors (e.g., ExportFileBrowse_Filter, ImportView_Browse, etc.).

Dependencies on this module:

  • XAML files in the DBImportExport module (e.g., views for Import/Export) likely use {local:Translate KeyName} syntax to bind localized strings to UI elements (e.g., TextBlock.Text, Button.Content).
    (Inferred from the presence of StringResources.Designer.cs and usage of TranslateExtension in a Resources folder.)

5. Gotchas

  • No null-safety for serviceProvider: The ProvideValue method does not validate serviceProvider — though WPF typically provides it, misuse outside WPF may cause issues.
  • Hardcoded fallback: The "#stringnotfound#" prefix is hardcoded and not configurable. This may cause visual artifacts if not handled in UI design.
  • No caching of lookups: Each call to ProvideValue performs a fresh ResourceManager.GetString(...) lookup. While ResourceManager caches internally, repeated use in dynamic UIs (e.g., data templates) may incur minor overhead.
  • No culture switching support: The extension uses the current UI culture implicitly via StringResources.Culture, but does not expose a way to override it per extension instance.
  • Auto-generated resource class: StringResources.Designer.cs is auto-generated — manual edits will be lost. Resource keys must match exactly (case-sensitive) with entries in the .resx file.
  • No compile-time key validation: Passing an incorrect key (e.g., "ExportView_Browsse") will silently fall back to "#stringnotfound# ExportView_Browsse" at runtime.

None identified from source alone. (Note: The above are inferred based on common WPF localization patterns and the provided code structure.)