Files
DP44/enriched-partialglm/DTS Viewer/DTS.Viewer.Reports/DTS.Viewer.PSDReportResults/Resources.md

92 lines
5.0 KiB
Markdown
Raw Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- DTS Viewer/DTS.Viewer.Reports/DTS.Viewer.PSDReportResults/Resources/TranslateExtension.cs
- DTS Viewer/DTS.Viewer.Reports/DTS.Viewer.PSDReportResults/Resources/StringResources.Designer.cs
generated_at: "2026-04-16T11:02:06.405832+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "154eee0c947eb6d0"
---
# Documentation: DTS.Viewer.PSDReportResults.Resources
## 1. Purpose
This module provides localization infrastructure for the PSD Report Results viewer component. 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 declaratively within XAML markup.
## 2. Public Interface
### `TranslateExtension`
**Location:** `DTS.Viewer.PSDReportResults.Resources.TranslateExtension`
**Inheritance:** `System.Windows.Markup.MarkupExtension`
A XAML markup extension used to resolve localized strings at runtime.
* **Constructor**
```csharp
public TranslateExtension(string key)
```
Initializes the extension with the resource key to be looked up. The key is stored in a private readonly field `_key`.
* **Method: ProvideValue**
```csharp
public override object ProvideValue(IServiceProvider serviceProvider)
```
Resolves the localized string for the key provided in the constructor.
* Returns `NotFound` ("#stringnotfound#") if the `_key` is null or empty.
* Retrieves the string using `StringResources.ResourceManager.GetString(_key)`.
* Returns `NotFound + " " + _key` if the resource lookup returns null (key not found in resources).
### `StringResources`
**Location:** `DTS.Viewer.PSDReportResults.Resources.StringResources`
**Visibility:** `internal`
A strongly-typed resource class auto-generated by Visual Studio/ResGen. It provides access to localized strings defined in the associated `.resx` file.
* **Property: ResourceManager**
```csharp
internal static global::System.Resources.ResourceManager ResourceManager { get; }
```
Returns the cached `ResourceManager` instance for this assembly. It looks up resources named `"DTS.Viewer.PSDReportResults.Resources.StringResources"`.
* **Property: Culture**
```csharp
internal static global::System.Globalization.CultureInfo Culture { get; set; }
```
Gets or sets the current `CultureInfo` for resource lookups. Overrides the current thread's `CurrentUICulture` for this specific resource class.
* **Resource Properties (Static Strings)**
The following static properties return localized strings:
* `ChannelName` (Lookup key: "ChannelName")
* `ExportPSDHeader` (Lookup key: "ExportPSDHeader")
* `ExportPSDtoCSV` (Lookup key: "ExportPSDtoCSV")
* `ExportPSDtoPDF` (Lookup key: "ExportPSDtoPDF")
* `GRMS` (Lookup key: "GRMS")
* `PSDResultsHeader` (Lookup key: "PSDResultsHeader")
* `SampleRate` (Lookup key: "SampleRate")
## 3. Invariants
* **Auto-generation:** The `StringResources` class is auto-generated. Manual modifications to `StringResources.Designer.cs` will be lost upon regeneration. Changes must be made to the underlying `.resx` file.
* **Return Types:** `TranslateExtension` is decorated with `[MarkupExtensionReturnType(typeof(string))]`, guaranteeing that `ProvideValue` returns a string (or the fallback error string).
* **Fallback Behavior:** `TranslateExtension` will never return `null`. It guarantees a string return, either the localized value or a specific error constant.
* **Visibility:** `StringResources` is `internal`, restricting access to the `DTS.Viewer.PSDReportResults` assembly.
## 4. Dependencies
* **Internal Dependencies:**
* `TranslateExtension` depends entirely on `StringResources.ResourceManager` to perform lookups.
* **External Dependencies (Framework):**
* `System`
* `System.Windows.Markup` (for `MarkupExtension` and `IServiceProvider`)
* `System.Resources` (for `ResourceManager`)
* `System.Globalization` (for `CultureInfo`)
* `System.CodeDom.Compiler` (Attributes on `StringResources`)
## 5. Gotchas
* **Error String Variations:** The `TranslateExtension` returns different error strings depending on the failure mode.
* If the input `_key` is null/empty, it returns exactly `"#stringnotfound#"`.
* If the lookup fails (key is valid but missing in resources), it returns `"#stringnotfound# " + _key` (note the space and the appended key).
* Developers parsing or validating these strings must account for this difference.
* **Designer File Edits:** As noted in the auto-generated header, editing `StringResources.Designer.cs` directly is unsafe. The specific resource strings listed (e.g., `ChannelName`, `GRMS`) are the only ones currently defined; adding new ones requires regenerating this file.
* **Culture Management:** `StringResources.Culture` is a static property. Setting it changes the culture for all subsequent lookups within this resource manager, potentially affecting threading behavior if not managed carefully.