Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Descrição curta
Descreve os recursos de internacionalização de scripts que facilitam a exibição de mensagens e instruções aos usuários no idioma de sua 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 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 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 De 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,
$PSCulturee$PSUICulture.$PSCulturearmazena o nome da linguagem de interface do usuário usada no sistema para elementos como data, hora e moeda. A variável$PSUICulturearmazena o nome da linguagem de interface do usuário usada no sistema para elementos de interface do usuário, como menus e cadeias 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 mais informações, consulte ConvertFrom-StringData.Um novo tipo de arquivo,
.psd1, que armazena cadeias de caracteres de texto traduzidas. Os arquivos.psd1sã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 uma linguagem especificada 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 de dados: Armazenamento de 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 here. 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 cmdlet ConvertFrom-StringData converte os pares chave/valor na cadeia de caracteres here em uma tabela de hash semelhante a um dicionário, que é armazenada no valor da variável Seção de dados.
No exemplo a seguir, a Seção de dados do script World.ps1 inclui o conjunto de mensagens de prompt Inglês - Estados Unidos (en-US) para um script. O cmdlet ConvertFrom-StringData converte as cadeias de caracteres em uma tabela de hash e as armazena na variável $msgtable.
$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 here, 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 arquivo .psd1. Armazene os arquivos em subdiretórios do diretório de script com nomes de culturas no seguinte formato:
<language>-<region>
Exemplos: de-DE, ar-SAe zh-Hans
Por exemplo, se o script World.ps1 for armazenado no diretório C:\Scripts, 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 arquivo World.psd1 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 arquivo World.psd1 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 atual, use o cmdlet Import-LocalizedData.
Import-LocalizedData localiza o valor da variável automática $PSUICulture e importa o conteúdo dos arquivos <script-name>.psd1 no subdiretório que corresponde ao valor $PSUICulture. 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 comando Import-LocalizedData aparecer no script C:\Scripts\World.ps1 e o valor de $PSUICulture for "ar-SA", Import-LocalizedData localizará o seguinte arquivo:
C:\Scripts\ar-SA\World.psd1
Em seguida, importa as cadeias de caracteres de texto árabe do arquivo para a variável $msgTable, substituindo as cadeias de caracteres padrão que podem ser definidas na seção Dados do script World.ps1.
Como resultado, quando o script usa a variável $msgTable 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 conseguir encontrar um arquivo .psd1 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 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 Data chamada Day ($Day) que contém um comando ConvertFrom-StringData. A expressão enviada para ConvertFrom-StringData é uma cadeia de caracteres here que contém os nomes de dias na cultura padrão da interface de usuário, en-US, em pares chave/valor. O cmdlet ConvertFrom-StringData converte os pares chave/valor na cadeia de caracteres aqui em uma tabela de hash e, em seguida, salva-o no valor da variável $Day.
O comando Import-LocalizedData importa o conteúdo do arquivo .psd1 no diretório que corresponde ao valor da variável automática $PSUICulture e, em seguida, salva-o na variável $Day, 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 arquivos .psd1 que dão suporte ao script são salvos em subdiretórios do diretório de script com nomes que correspondem aos valores de $PSUICulture.
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