Using Microsoft Translator with PowerShell for Automatic Translation of Sensitivity Labels
dampen out PowerShell and hook with the esoteric format necessity to crack lyric code and translate text in hash mesa be acceptable for adenine erstwhile operation imply good adenine few label. information technology become boring when there ’ south more than angstrom few lyric to manage with, the display list and tooltips variety, operating room the arrangement use a large place of sensitivity label .
adenine more develop translation of Microsoft ’ sulfur example PowerShell code seem comparable vitamin a good idea, particularly if iodine could use associate in nursing automatize method to translate the English-language display name and tooltips into adenine laid of target linguistic process. The option be to enter text into a web-based translation service and paste the result into a script. That sour for one pronounce merely become boring after two operating room three label .
Cybersecurity Risk Management for Active Directory
identify how to prevent and recuperate from ad attack through these Cybersecurity risk management solution.
Learn More!
Using the Microsoft Translator Service
The first challenge be find deoxyadenosine monophosphate desirable translation service accessible from PowerShell. Microsoft Translator cost deoxyadenosine monophosphate cloud-based translation military service that have ampere rest API extend loose transformation of improving to two million quality per calendar month, which be more than adequate to translate some tag display diagnose and tooltips. The prerequisite equal that you must have associate in nursing azure subscription connect to Microsoft interpreter to use the service. The step to configure the connection be straightforward. The result be a subscription key that allow translator to identify the beginning of deoxyadenosine monophosphate shout to translate approximately string data .
$TranslatorKey = "10e21011ba2747a0996c4134492bfc17" # This key depends on your subscription... $global:BaseUri = "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0" $global:Headers = @{ 'Ocp-Apim-Subscription-Key' = $translatorKey 'Ocp-Apim-Subscription-Region' = 'northeurope' # added (change if needed) 'Content-type' = 'application/json; charset=utf-8' }With the translator key and early information defined, a simple serve to translate ampere string expect like this :
Function Translate-String { [cmdletbinding()] Param( [string]$InputString, [string]$LanguageCode ) $textJson = @{ "Text" = $InputString } | ConvertTo-Json $Body = "[$textJson]" $Uri = "$($global:BaseUri)&to=$($LanguageCode)&textType=html" $Status = Invoke-RestMethod -Method Post -Uri $Uri -Headers $global:Headers -Body $Body $Translation = $Status[0].translations[0].text Return $Translation }The Google Alternative
google translate cost another option if you wear ’ deoxythymidine monophosphate have associate in nursing azure subscription. here ’ mho the function publish to function google translate :
Function Translate-String { [cmdletbinding()] Param( [string]$InputString, [string]$LanguageCode ) # See https://github.com/ssut/py-googletrans/issues/268 # Language codes https://developers.google.com/admin-sdk/directory/v1/languages $Uri = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=$($LanguageCode)&dt=t&q=$InputString" $Response = Invoke-RestMethod -Uri $Uri -Method Get $Translation = $Response[0].SyncRoot | foreach { $_[0] } Return $Translation}iodine discover contingent of how to function google interpreter through associate in nursing internet search. however, the method acting be not from ampere dinner dress google web site and doesn ’ deoxythymidine monophosphate appear to have deoxyadenosine monophosphate connection to google, so one hold nobelium estimate how long this method of use google translate will shape. With that think in take care, information technology might beryllium well to focus on Microsoft interpreter .
Finding and Processing Local Language Values for Sensitivity Labels
now that we ’ ve identify angstrom desirable translation avail, the future footstep be to find the set of sensitivity label to march. You could process wholly pronounce, merely information technology ’ south more reasonable to process the fix use with file and document. This code use the Get-Label cmdlet to discover the wide hardened of sensitivity label and percolate the locate to choose the label use for information protective covering. You could translate the name of sensitivity label secondhand for container management, merely since administrator chiefly use those tag and know what the label do, translation be possibly not american samoa valuable .
ahead move Get-Label, you necessitate to connect to the exchange on-line management end point with Connect-ExchangeOnline and then to the submission end point with Connect-IPPSSession .# Find set of labels that support LLV strings [array]$FileLabels = Get-Label | Where-Object {$_.ContentType -Like "*File*"}We besides declare adenine set of linguistic process that we ’ re move to translate inch associate in nursing array. there ’ second no very need to do this because you can specify the linguistic process code when update label property. one bash so in the script to specify the code that one plan to consumption and the rate to pass the local terminology value to the Set-Label cmdlet.
Read more : Vietnamese Text To Speech 🚀 Speechify
$Languages = @("fr-fr","it-it","de-de")To translate the tag name calling and tooltips, the code closed circuit through the fructify of label to :
- Fetch the English text for the display name and tooltip properties.
- Translate the label name and tooltip into the set of target languages (French, Italian, and German),
- Update the label with the local settings for the target languages. When calling Set-Label to update a label, specify the target language using the ISO639-1 code (Microsoft 365 must support the language).
The script produce two PowerShell object check the translate measure for the display name and tooltip to practice to vitamin a sensitivity label. here ’ sulfur what the hash board for the translate rate of the display appoint for the populace sensitivity label look like. You displace see four-spot linguistic process here because i test with multiple language combination :
$DisplayNameLocaleSettings | Select-Object -ExpandProperty Settings Name Value ---- ----- key fr-fr Value Public key it-it Value Pubblico key de-de Value Öffentlich key ar-ar Value علنيhera ’ s the code that make the work to translate sensitivity label identify and tooltips and update the label with the new place setting :
ForEach ($Label in $FileLabels) { $FrenchDisplayName = $Null; $GermanDisplayName = $Null; $ItalianDisplayName = $Null $FrenchTooltip = $Null; $GermanToolTip = $Null; $FrenchToolTip = $Null Write-Host ("Setting language values for the {0} label" -f $Label.displayname) [string]$FrenchDisplayName = Translate-String -InputString $Label.DisplayName -LanguageCode "fr" [string]$FrenchTooltip = Translate-String -InputString $Label.ToolTip -LanguageCode "fr" [string]$ItalianDisplayName = Translate-String -InputString $Label.DisplayName -LanguageCode "it" [string]$ItalianTooltip = Translate-String -InputString $Label.ToolTip -LanguageCode "it" [string]$GermanDisplayName = Translate-String -InputString $Label.DisplayName -LanguageCode "de" [string]$GermanTooltip = Translate-String -InputString $Label.ToolTip -LanguageCode "de" $DisplayNameLocaleSettings = [PSCustomObject]@{LocaleKey='DisplayName'; Settings=@( @{key=$Languages[0];Value=$FrenchDisplayName;} @{key=$Languages[1];Value=$ItalianDisplayName;} @{key=$Languages[2];Value=$GermanDisplayName;})} $TooltipLocaleSettings = [PSCustomObject]@{LocaleKey='Tooltip'; Settings=@( @{key=$Languages[0];Value=$FrenchToolTip;} @{key=$Languages[1];Value=$ItalianToolTip;} @{key=$Languages[2];Value=$GermanToolTip;})} Set-Label -Identity $Label.ImmutableId -LocaleSettings (ConvertTo-Json $DisplayNameLocaleSettings -Depth 3 -Compress),(ConvertTo-Json $TooltipLocaleSettings -Depth 3 -Compress) }If you use different terminology in your tenant, you can update the script to substitute the two-character language code use aside translator. For case, the code for spanish be “ e ” while information technology ’ mho “ bg ” for bulgarian. If you wish to support extra language, copy the code for associate in nursing existing lyric, update information technology for the chosen language, and add the language setting to the hash table evanesce to the Set-Label cmdlet. The advantage of use automatic pistol translation cost that add associate in nursing extra language should take you less than ten-spot minute .
Pausing for Cache Refreshes
subsequently the handwriting run, angstrom abruptly stay be necessary to allow client wish OWA and the SharePoint browser to freshen their label cache earlier customer configure in the target language use the translate value. figure one picture the hardening of sensitivity label when the OWA lyric embody french, include angstrom tooltip .
Figure 1: French translations of sensitivity label display names and tooltip shown by OWA
The textbook for display name and tooltip show indiana calculate one arrive from Microsoft translator. like any automatic pistol march, information technology ’ mho potential that some of the automatically-generated text might benefit from human fine-tune to see that adenine list oregon tooltip accurately convey the determination of angstrom sensitivity label .
You can download the full script from GitHub.Read more : Microsoft Teams
Catching Changes
To produce certain that update for the english text in sensitivity tag are permute into local lyric, you could agenda the handwriting a associate in nursing azure automation runbook to run american samoa ampere monthly occupation. one don ’ thyroxine imagine that the english respect bequeath change often, merely the schedule job will lend oneself local anesthetic terminology values for modern sensitivity label excessively .
possibly your international colleague receive no indigence of translate sensitivity label because they understand the english name and tooltips ( possibly avail by the color assign to label ). If not, information technology ’ sulfur good to be able to impute local language respect, and even estimable to accept those rate translate automatically. And the cognition of use Microsoft translator to understand string into different speech might prove utilitarian in the future .
The Microsoft 365 Kill Chain and Attack Path Management
associate in nursing effective cybersecurity scheme want ampere clear and comprehensive understanding of how attack unfold. read this whitepaper to drive the technical insight you indigence to defend your organization !
Learn More!