about_Script_Internationalization

Descrição breve

Descreve os recursos de internacionalização de script que facilitam a exibição de mensagens e instruções para os usuários no idioma da interface do usuário.

Descrição longa

Os recursos de internacionalização de script do PowerShell permitem que você atenda melhor os 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 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 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 oferecer suporte ao texto da Ajuda internacional, o PowerShell inclui os seguintes recursos:

  • Uma seção Dados que separa cadeias de caracteres de texto de 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 do idioma da interface do usuário usado no sistema para elementos como data, hora e moeda. A $PSUICulture variável armazena o nome do idioma da interface do usuário usado no sistema para elementos da 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 tempo de execução. Esse cmdlet reconhece e importa cadeias de caracteres em qualquer idioma 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 devem 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 que é armazenada no valor da variável de seção Dados.

No exemplo a seguir, a World.ps1 seção Dados do script inclui o conjunto de mensagens de prompt Inglês-Estados Unidos (en-US) para um script. O ConvertFrom-StringData cmdlet converte as cadeias de caracteres em uma tabela de hash e as armazena $msgtable na 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 do 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ê criaria uma estrutura de diretório de arquivo 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 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 $PSUICulture valor da 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 á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 variável para exibir mensagens do $msgTable usuário, as mensagens são exibidas em árabe.

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

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

Se Import-LocalizedData não for possível localizar um .psd1 arquivo que corresponda ao valor de , o valor de não será substituído e a chamada para $msgTable.promptMsg exibirá as cadeias de $PSUIculture$msgTable 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 aos usuários no idioma definido no computador.

A seguir está uma lista completa do arquivo de script Sample1.ps1.

O script começa com uma seção Data chamada Day ($Day) que contém um ConvertFrom-StringData comando. A expressão enviada para ConvertFrom-StringData é uma cadeia de caracteres aqui que contém os nomes de dia na cultura de interface do usuário padrão, 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, a salva 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, o salva na $Day variável, substituindo os valores $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 oferecem suporte ao script são salvos em subdiretórios do diretório de script com nomes que correspondem aos $PSUICulture valores.

A seguir está uma lista 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