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 em seu idioma 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 ajuda e mensagens 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 de 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 de chave/valor em uma cadeia de caracteres aqui. Cada par chave/valor deve estar em uma linha separada. Se você incluir comentários, eles 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 que é armazenada no valor da variável de seção Dados.
No exemplo a seguir, a seção Dados do World.ps1
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 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 here-strings, consulte about_Quoting_Rules.
Arquivos PSD1: Armazenando strings 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 estiver 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 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 atual, use o Import-LocalizedData
cmdlet.
Import-LocalizedData
localiza o valor da $PSUICulture
variável automática e importa o <script-name>.psd1
conteúdo dos 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 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 encontrar 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 para os usuários no idioma definido no computador.
Veja a seguir uma lista completa do arquivo de script Sample1.ps1.
O script começa com uma seção de dados chamada Dia ($Day) que contém um ConvertFrom-StringData
comando. A expressão enviada é ConvertFrom-StringData
uma cadeia de caracteres aqui que contém os nomes dos dias 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 here em uma tabela de hash e a salva no valor da $Day
variável.
O Import-LocalizedData
comando importa o .psd1
conteúdo do arquivo no diretório que corresponde ao valor da $PSUICulture
variável automática e depois o salva na $Day
variável, substituindo os valores $Day
definidos na seção Dados.
Os comandos restantes carregam as strings 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 suportam o 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