当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 Microsoft Translator 和 PowerShell 翻译敏感度标签名称

作者:精品下载站 日期:2024-12-14 04:08:47 浏览:15 分类:玩电脑

使用 Microsoft Translator 和 PowerShell 翻译敏感度标签名称


使用 Microsoft Translator 创建本地翻译以更新敏感度标签的显示名称和工具提示

Microsoft Purview 敏感度标签支持显示名称和工具提示的多语言值。当租户用户使用多种语言工作时,这是一个很好的功能。缺点是 PowerShell 是唯一将语言(区域设置)值写入标签的公共方法。到目前为止,微软尚未发布涵盖此任务的 Graph API。

对于仅涉及几个标签的一次性操作来说,突破 PowerShell 并应对深奥的格式要求以在哈希表中传递语言代码和翻译文本是可以接受的。当需要处理多种语言、显示名称和工具提示发生变化或者组织使用大量敏感度标签时,事情就会变得无聊。

微软示例 PowerShell 代码的更开发版本似乎是个好主意,特别是如果我可以使用自动化方法将英语显示名称和工具提示翻译成一组目标语言。另一种方法是将文本输入基于网络的翻译服务并将结果粘贴到脚本中。这对于一个标签有效,但在两三个标签之后就会变得令人厌烦。

Active Directory 的网络安全风险管理

了解如何通过这些网络安全风险管理解决方案预防 AD 攻击并从中恢复。

使用微软翻译服务

第一个挑战是找到可通过 PowerShell 访问的合适翻译服务。 Microsoft Translator 是一项基于云的翻译服务,具有 REST API,每月提供多达 200 万个字符的免费翻译,这足以翻译一些标签显示名称和工具提示。前提条件是你必须有一个连接到 Microsoft Translator 的 Azure 订阅才能使用该服务。配置连接的步骤很简单。结果是一个订阅密钥,它允许 Translator 识别翻译某些字符串数据的调用源。

$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'
}

定义翻译器密钥和其他信息后,翻译字符串的简单函数如下所示:

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 }

谷歌的替代方案

如果你没有 Azure 订阅,谷歌翻译是另一个选择。这是为使用 Google 翻译而编写的函数:

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}

我通过互联网搜索找到了如何使用谷歌翻译的详细信息。然而,该方法不是来自正式的谷歌网站,并且似乎与谷歌没有联系,所以我不知道这种使用谷歌翻译的方法能工作多久。考虑到这一点,最好将重点放在 Microsoft Translator 上。

查找和处理敏感度标签的本地语言值

现在我们已经确定了合适的翻译服务,下一步是找到要处理的敏感度标签集。您可以处理所有标签,但处理与文件和文档一起使用的集合更为合理。此代码使用 Get-Label cmdlet 查找完整的敏感度标签集并过滤站点以选择用于信息保护的标签。您可以翻译用于容器管理的敏感度标签的名称,但由于管理员主要使用这些标签并且知道这些标签的用途,因此翻译可能没有那么有价值。

在运行 Get-Label 之前,您需要使用 Connect-ExchangeOnline 连接到 Exchange Online 管理端点,然后使用 Connect-IPPSSess 连接到合规端点>离子。

# Find set of labels that support LLV strings
[array]$FileLabels = Get-Label | Where-Object {$_.ContentType -Like "*File*"}

我们还声明了一组将在数组中翻译的语言。没有真正需要这样做,因为您可以在更新标签属性时指定语言代码。我在脚本中这样做是为了定义我计划使用的代码以及将本地语言值传递到 Set-Label cmdlet 的顺序。

$Languages = @("fr-fr","it-it","de-de")

为了翻译标签名称和工具提示,代码循环遍历标签集以:

  • 获取显示名称和工具提示属性的英文文本。
  • 将标签名称和工具提示翻译成目标语言集(法语、意大利语和德语),
  • 使用目标语言的本地设置更新标签。调用 Set-Label 更新标签时,请使用 ISO639-1 代码指定目标语言(Microsoft 365 必须支持该语言)。

该脚本创建两个 PowerShell 对象,其中包含要应用于敏感度标签的显示名称和工具提示的翻译值。以下是公共敏感度标签的显示名称翻译值的哈希表的样子。您可以在这里看到四种语言,因为我测试了多种语言组合:

$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                          علني

以下代码用于翻译敏感度标签名称和工具提示并使用新设置更新标签:

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)
}

如果您在租户中使用不同的语言,您可以更新脚本以替换 Translator 使用的两字符语言代码。例如,西班牙语的代码是“es”,而保加利亚语的代码是“bg”。如果您想要支持其他语言,请复制现有语言的代码,更新所选语言的代码,然后将语言设置添加到传递给 Set-Label cmdlet 的哈希表中。使用自动翻译的优点是添加额外的语言将花费不到十分钟的时间。

暂停以进行缓存刷新

脚本运行后,需要短暂的延迟,以允许 OWA 和 SharePoint 浏览器等客户端刷新其标签缓存,然后以目标语言配置的客户端使用翻译后的值。图 1 显示了 OWA 语言为法语时的敏感度标签集,包括工具提示。

[玩转系统] 使用 Microsoft Translator 和 PowerShell 翻译敏感度标签名称

图 1 中所示的显示名称和工具提示文本来自 Microsoft Translator。与任何自动过程一样,某些自动生成的文本可能会受益于人工调整,以确保名称或工具提示准确传达敏感度标签的用途。

您可以从 GitHub 下载完整的脚本。

捕捉变化

为了确保敏感度标签中英文文本的更新转换为本地语言,您可以将该脚本安排为 Azure 自动化 Runbook,作为每月作业运行。我不认为英语值会经常改变,但预定的工作也会将本地语言值应用于新的敏感度标签。

也许您的国际同事不需要翻译的敏感度标签,因为他们理解英文名称和工具提示(也许分配给标签的颜色有所帮助)。如果没有,最好能够分配本地语言值,甚至更好的是自动翻译这些值。使用 Microsoft Translator 将字符串翻译成不同语言的知识将来可能会很有用。

Microsoft 365 杀伤链和攻击路径管理

有效的网络安全策略需要对攻击如何展开有清晰、全面的了解。阅读本白皮书,获取保卫您的组织所需的专家见解!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯