Share via


Sobre a internacionalização de script

Descrição breve

Descreve os recursos de internacionalização de script que facilitam a exibição de mensagens e instruções aos scripts para os usuários em sua linguagem de interface do usuário.

Descrição longa

Os recursos de internacionalização de script do PowerShell permitem que você atenda melhor aos usuários em todo o mundo exibindo mensagens de ajuda e de usuário no idioma do usuário.

Os recursos de internacionalização de script consultam a cultura da interface do usuário do sistema operacional durante a execução, importam as cadeias de caracteres de texto traduzidas apropriadas e as exibem para o usuário. A seção Dados permite armazenar cadeias de caracteres de texto separadas do código para que elas sejam facilmente identificadas e extraídas. Um novo cmdlet, ConvertFrom-StringData, converte cadeias de caracteres de texto em tabelas de hash semelhantes a dicionários para facilitar a tradução.

Para dar suporte ao texto da Ajuda internacional, o PowerShell inclui os seguintes recursos:

  • Uma seção Dados que separa as cadeias de caracteres de texto das instruções de código. Para obter mais informações sobre a seção Dados, consulte about_Data_Sections.

  • Novas variáveis automáticas $PSCulture e $PSUICulture. $PSCulture armazena o nome da linguagem de interface do usuário usada no sistema para elementos como data, hora e moeda. A $PSUICulture variável armazena o nome da linguagem de interface do usuário usada no sistema para elementos de interface do usuário, como menus e cadeias de caracteres de texto.

  • Um cmdlet, ConvertFrom-StringData, que converte cadeias de caracteres de texto em tabelas de hash semelhantes a dicionários para facilitar a tradução. Para obter mais informações, consulte ConvertFrom-StringData.

  • Um novo tipo de arquivo, .psd1, que armazena cadeias de caracteres de texto traduzidas. Os .psd1 arquivos são armazenados em subdiretórios específicos do idioma do diretório de script.

  • Um cmdlet, Import-LocalizedData, que importa cadeias de caracteres de texto traduzidas para um idioma especificado em um script em runtime. Esse cmdlet reconhece e importa cadeias de caracteres em qualquer linguagem com suporte do Windows. Para obter mais informações, consulte Import-LocalizedData.

A seção Dados: Armazenando cadeias de caracteres padrão

Use uma seção Dados no script para armazenar as cadeias de caracteres de texto no idioma padrão. Organize as cadeias de caracteres em pares chave/valor em uma cadeia de caracteres aqui. Cada par chave/valor deve estar em uma linha separada. Se você incluir comentários, os comentários deverão estar em linhas separadas.

O ConvertFrom-StringData cmdlet converte os pares chave/valor na cadeia de caracteres aqui em uma tabela de hash semelhante a um dicionário armazenada no valor da variável da seção Dados.

No exemplo a seguir, a seção Dados do World.ps1 script inclui o conjunto de English-United States (en-US) de mensagens de prompt para um script. O ConvertFrom-StringData cmdlet converte as cadeias de caracteres em uma tabela de hash e as armazena na $msgtable variável .

$msgTable = Data {
    #culture="en-US"
    ConvertFrom-StringData @'
    helloWorld = Hello, World.
    errorMsg1 = You cannot leave the user name field blank.
    promptMsg = Please enter your user name.
'@
}

Para obter mais informações sobre cadeias de caracteres aqui, consulte about_Quoting_Rules.

Arquivos PSD1: Armazenando cadeias de caracteres traduzidas

Salve as mensagens de script para cada idioma da interface do usuário em arquivos de texto separados com o mesmo nome que o script e a extensão de nome de .psd1 arquivo. Armazene os arquivos em subdiretórios do diretório de script com nomes de culturas no seguinte formato:

<language>-<region>

Exemplos: de-DE, ar-SA e zh-Hans

Por exemplo, se o World.ps1 script for armazenado no C:\Scripts diretório, você criará uma estrutura de diretório de arquivos semelhante à seguinte:

C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...

O World.psd1 arquivo no subdiretório de de-DE do diretório de script pode incluir a seguinte instrução:

ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@

Da mesma forma, o World.psd1 arquivo no subdiretório ar-SA do diretório de script pode incluir a seguinte instrução:

ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@

Import-LocalizedData: recuperação dinâmica de cadeias de caracteres traduzidas

Para recuperar as cadeias de caracteres no idioma da interface do usuário do usuário atual, use o Import-LocalizedData cmdlet .

Import-LocalizedData localiza o valor da $PSUICulture variável automática e importa o conteúdo dos <script-name>.psd1 arquivos no subdiretório que corresponde ao $PSUICulture valor. Em seguida, ele salva o conteúdo importado na variável especificada pelo valor do parâmetro BindingVariable .

Import-LocalizedData -BindingVariable msgTable

Por exemplo, se o Import-LocalizedData comando aparecer no C:\Scripts\World.ps1 script e o valor de $PSUICulture for "ar-SA", Import-LocalizedData localizará o seguinte arquivo:

C:\Scripts\ar-SA\World.psd1

Em seguida, ele importa as cadeias de caracteres de texto em árabe do arquivo para a $msgTable variável, substituindo quaisquer cadeias de caracteres padrão que possam ser definidas na seção Dados do World.ps1 script.

Como resultado, quando o script usa a $msgTable variável para exibir mensagens de usuário, as mensagens são exibidas em árabe.

Por exemplo, o script a seguir exibe a mensagem "Insira seu nome de usuário" em árabe:

if (!($username)) { $msgTable.promptMsg }

Se Import-LocalizedData não for possível encontrar um .psd1 arquivo que corresponda ao valor de $PSUIculture, o valor de $msgTable não será substituído e a chamada para $msgTable.promptMsg exibirá as cadeias de caracteres de fallback en-US.

Exemplos

Este exemplo mostra como os recursos de internacionalização de script são usados em um script para exibir um dia da semana para os usuários no idioma definido no computador.

Veja a seguir uma listagem completa do arquivo de script Sample1.ps1.

O script começa com uma seção Dados chamada Day ($Day) que contém um ConvertFrom-StringData comando. A expressão enviada a ConvertFrom-StringData é uma cadeia de caracteres aqui que contém os nomes de dia na cultura padrão da interface do usuário, en-US, em pares chave/valor. O ConvertFrom-StringData cmdlet converte os pares chave/valor na cadeia de caracteres aqui em uma tabela de hash e, em seguida, salva-o no valor da $Day variável.

O Import-LocalizedData comando importa o conteúdo do .psd1 arquivo no diretório que corresponde ao valor da $PSUICulture variável automática e, em seguida, salva-o $Day na variável, substituindo os valores de $Day definidos na seção Dados.

Os comandos restantes carregam as cadeias de caracteres em uma matriz e as exibem.

$Day = Data {
#culture="en-US"
ConvertFrom-StringData -StringData @'
    messageDate = Today is
    d0 = Sunday
    d1 = Monday
    d2 = Tuesday
    d3 = Wednesday
    d4 = Thursday
    d5 = Friday
    d6 = Saturday
'@
}

Import-LocalizedData -BindingVariable Day

#Build an array of weekdays.
$a = $Day.d0, $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6

# Get the day of the week as a number (Monday = 1).
# Index into $a to get the name of the day.
# Use string formatting to build a sentence.

"{0} {1}" -f $Day.messageDate, $a[(Get-Date -UFormat %u)] | Out-Host

Os .psd1 arquivos que dão suporte ao script são salvos em subdiretórios do diretório de script com nomes que correspondem aos $PSUICulture valores.

Veja a seguir uma listagem completa de .\de-DE\sample1.psd1:

# culture="de-DE"
ConvertFrom-StringData @'
    messageDate = Heute ist
    d0 = Sonntag
    d1 = Montag
    d2 = Dienstag
    d3 = Mittwoch
    d4 = Donnerstag
    d5 = Freitag
    d6 = Samstag
'@

Como resultado, quando você executa Sample.ps1 em um sistema no qual o valor de $PSUICulture é de-DE, a saída do script é:

Heute ist Freitag

Confira também