Private/Get-sqmString.ps1
|
<# .SYNOPSIS Gibt einen lokalisierten String aus der aktiven Sprachdatei zurueck. .DESCRIPTION Laedt beim ersten Aufruf die passende .psd1-Sprachdatei (de-DE oder en-US) basierend auf dem Config-Key 'Language' und cached das Ergebnis. Bei unbekanntem Key wird der Key-Name selbst zurueckgegeben (nie leer). Cache wird invalidiert wenn Set-sqmConfig -Language aufgerufen wird (setzt $script:_strings auf $null). .PARAMETER Key String-Schluessel aus der Sprachdatei. .PARAMETER FormatArgs Optionale Argumente fuer den -f Operator (Positionsargumente {0}, {1} ...). .EXAMPLE Get-sqmString -Key 'Error_dbatoolsNotFound' .EXAMPLE Get-sqmString -Key 'Failover_RedoQueueLimit' -FormatArgs 'SQL02', 55, 50 #> function Get-sqmString { [CmdletBinding()] [OutputType([string])] param ( [Parameter(Mandatory = $true, Position = 0)] [string]$Key, [Parameter(Mandatory = $false, Position = 1)] [object[]]$FormatArgs ) # Cache einmalig laden if (-not $script:_strings) { $lang = $null if ($script:sqmModuleConfig) { $lang = $script:sqmModuleConfig['Language'] } if (-not $lang) { $lang = 'de-DE' } $strFile = Join-Path $PSScriptRoot "Strings\$lang.psd1" if (-not (Test-Path $strFile)) { $strFile = Join-Path $PSScriptRoot 'Strings\de-DE.psd1' } try { $script:_strings = Import-PowerShellDataFile -Path $strFile -ErrorAction Stop } catch { # Fallback: leere Hashtable - Key wird direkt zurueckgegeben $script:_strings = @{} } } $template = $script:_strings[$Key] if (-not $template) { return $Key } # Key als Fallback - nie leer if ($FormatArgs -and $FormatArgs.Count -gt 0) { return ($template -f $FormatArgs) } return $template } # Kurzalias fuer sauberen Code in Funktionen # Aufruf: _s 'Key' oder _s 'Key' $arg1, $arg2, $arg3 function _s { param( [Parameter(Position = 0)][string]$Key, [Parameter(Position = 1)][object[]]$FormatArgs ) Get-sqmString -Key $Key -FormatArgs $FormatArgs } |