src/Types/New-XrmLabel.ps1
|
<# .SYNOPSIS Create a Label object for Dataverse metadata. .DESCRIPTION Build a Microsoft.Xrm.Sdk.Label from a single text value and language code, or from a hashtable of language code to text for multilingual labels. .PARAMETER Text The label text (single language). .PARAMETER LanguageCode Language code for the label. Default: 1033 (English). .PARAMETER Labels Hashtable of language code to label text for multilingual labels. Example: @{ 1033 = "Account"; 1036 = "Compte" } .OUTPUTS Microsoft.Xrm.Sdk.Label. The label object. .EXAMPLE $label = New-XrmLabel -Text "Account" -LanguageCode 1033; .EXAMPLE $label = New-XrmLabel -Labels @{ 1033 = "Account"; 1036 = "Compte" }; #> function New-XrmLabel { [CmdletBinding(DefaultParameterSetName = "Single")] [OutputType([Microsoft.Xrm.Sdk.Label])] param ( [Parameter(Mandatory = $true, ParameterSetName = "Single")] [ValidateNotNullOrEmpty()] [string] $Text, [Parameter(Mandatory = $false, ParameterSetName = "Single")] [int] $LanguageCode = 1033, [Parameter(Mandatory = $true, ParameterSetName = "Multi")] [ValidateNotNullOrEmpty()] [Hashtable] $Labels ) begin { $StopWatch = [System.Diagnostics.Stopwatch]::StartNew(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters); } process { if ($PSCmdlet.ParameterSetName -eq "Multi") { $label = [Microsoft.Xrm.Sdk.Label]::new(); foreach ($langCode in $Labels.Keys) { $localizedLabel = [Microsoft.Xrm.Sdk.LocalizedLabel]::new($Labels[$langCode], [int]$langCode); $label.LocalizedLabels.Add($localizedLabel); } $label; return; } $label = [Microsoft.Xrm.Sdk.Label]::new($Text, $LanguageCode); $label; } end { $StopWatch.Stop(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch; } } Export-ModuleMember -Function New-XrmLabel -Alias *; |