Está en la página 1de 5

TEMA

about_Script_Internationalization
DESCRIPCIN BREVE
Describe las caractersticas de internacionalizacin de scripts
de Windows PowerShell 2.0 que permiten mostrar fcilmente los
mensajes e instrucciones de los scripts a los usuarios en el
idioma de su interfaz de usuario.
DESCRIPCIN DETALLADA
Las caractersticas de internacionalizacin de scripts de Windows
PowerShell permiten prestar un mejor servicio a los usuarios en
todo el mundo mostrando la Ayuda y los mensajes de usuario de los
scripts y funciones en el idioma de la interfaz de usuario.
Las caractersticas de internacionalizacin de scripts consultan
la referencia cultural de la interfaz de usuario del sistema
operativo durante la ejecucin, importan las cadenas de texto
traducidas apropiadas y las muestran al usuario. La seccin de
datos permite almacenar cadenas de texto independientemente del
cdigo para poderlas identificar y extraer fcilmente. Un nuevo
cmdlet, ConvertFrom-StringData, convierte las cadenas de texto en
tablas hash a modo de diccionario para facilitar la traduccin.
Windows PowerShell 1.0 no admite las caractersticas de Windows
PowerShell 2.0 usadas en la internacionalizacin de los scripts.
Los scripts que incluyen estas caractersticas no se ejecutarn
en Windows PowerShell 1.0 si no se modifican.
Para admitir texto de Ayuda internacional, Windows PowerShell 2.0
incluye las caractersticas siguientes:
-- Una seccin de datos que separa las cadenas de texto de las
instrucciones de cdigo. Para obtener ms informacin sobre
la seccin de datos, vea about_Data_Sections.
-- Nuevas variables automticas, $PSCulture y $PSUICulture. La
variable $PSCulture almacena el nombre del idioma de la
interfaz de usuario que se usa en el sistema para elementos
como la fecha, la hora y la moneda. La variable
$PSUICulture almacena el nombre del idioma de la interfaz
de usuario que se usa en el sistema para los elementos de
la interfaz de usuario, como mens y cadenas de texto.
-- Un cmdlet, ConvertFrom-StringData, que convierte las
cadenas de texto en tablas hash a modo de diccionario para
facilitar la traduccin. Para obtener ms informacin, vea
ConvertFrom-StringData.
-- Un nuevo tipo de archivo, .psd1, que almacena las cadenas
de texto traducidas. Los archivos .psd1 se almacenan en
subdirectorios del directorio de script especficos del idioma.
-- Un cmdlet, Import-LocalizedData, que importa las cadenas de
texto traducidas del idioma especificado en un script en
tiempo de ejecucin. Este cmdlet reconoce e importa las
cadenas en cualquier idioma admitido por Windows. Para
obtener ms informacin, vea Import-LocalizedData.

SECCIN DE DATOS: almacenar las cadenas predeterminadas


Use una seccin de datos en el script para almacenar las cadenas
de texto en el idioma predeterminado.
Organice las cadenas en pares clave-valor en una cadena
multilnea intercalada en el cdigo. Cada par clave-valor debe
estar en una lnea diferente. Si incluye comentarios, estos
deben estar en lneas diferentes.
El cmdlet ConvertFrom-StringData convierte los pares clave-valor
de la cadena multilnea intercalada en el cdigo en una tabla
hash similar a un diccionario que se almacena en el valor de la
variable de la seccin de datos.
En el ejemplo siguiente, la seccin de datos del script
Mundo.ps1 incluye el conjunto de mensajes de script para
Espaol-Espaa (es-ES). El cmdlet ConvertFrom-StringData
convierte las cadenas en una tabla hash y los almacena en la
variable $msgtable.
$msgTable = Data {
# culture="es-ES"
ConvertFrom-StringData @'
holaATodos = Hola a todos.
errorMsg1 = No se puede dejar el campo del nombre de usuario en
blanco.
promptMsg = Escriba un nombre de usuario.
'@
}
Para obtener ms informacin sobre las cadenas multilnea intercaladas en
el cdigo, vea about_Quoting_Rules.
ARCHIVOS PSD1: almacenar las cadenas traducidas
Guarde los mensajes de script para cada idioma de la interfaz de
usuario en archivos de texto independientes con el mismo nombre
que el script y la extensin de archivo .psd1. Almacene los
archivos en subdirectorios del directorio de script con nombres
de referencias culturales en el formato siguiente:
<idioma>-<regin>
Ejemplos: de-DE, ar-SA y zh-Hans.
Por ejemplo, si el script Mundo.ps1 est almacenado en el directorio
C:\Scripts, deber crear una estructura de directorios de archivos
similar a esta:
C:\Scripts
C:\Scripts\Mundo.ps1
C:\Scripts\de-DE\Mundo.psd1
C:\Scripts\ar-SA\Mundo.psd1
C:\Scripts\zh-CN\Mundo.psd1
...

El archivo Mundo.psd1 en el subdirectorio de-DE del directorio de


script podra incluir la instruccin siguiente:
ConvertFrom-StringData @'
holaATodos = Hola a todos (en alemn).
errorMsg1 = No se puede dejar el campo del nombre de usuario en blan
co (en alemn).
promptMsg = Escriba un nombre de usuario (en alemn).
'@
De manera similar, el archivo Mundo.psd1 en el subdirectorio ar-SA
del directorio de script podra incluir la instruccin siguiente:
ConvertFrom-StringData @'
holaATodos = Hola a todos (en rabe).
errorMsg1 = No se puede dejar el campo del nombre de usuario en blan
co (en rabe).
promptMsg = Escriba un nombre de usuario (en rabe).
'@
IMPORT-LOCALIZEDDATA: recuperar dinmicamente las cadenas traducidas
Para recuperar las cadenas en el idioma de la interfaz de usuario
del usuario actual, utilice el cmdlet Import-LocalizedData.
Import-LocalizedData busca el valor de la variable automtica
$PSUICulture e importa el contenido de los archivos <nombre de
script>.psd1 en el subdirectorio que coincide con el valor de
$PSUICulture. A continuacin, guarda el contenido importado en la
variable especificada por el valor del parmetro BindingVariable.
import-localizeddata -bindingVariable msgTable
Por ejemplo, si aparece el comando Import-LocalizedData en el script
C:\Scripts\Mundo.ps1 y el valor de $PSUICulture es "ar-SA",
Import-LocalizedData buscar el archivo siguiente:
C:\Scripts\ar-SA\Mundo.psd1
A continuacin, importar las cadenas de texto en rabe del
archivo en la variable $msgTable, reemplazando cualquier cadena
predeterminada que se haya definido en la seccin de datos del
script Mundo.ps1.
Como resultado, cuando el script utiliza la variable $msgTable
para mostrar los mensajes de usuario, estos se muestran en rabe.
Por ejemplo, el script siguiente muestra el mensaje "Escriba un
nombre de usuario" en rabe:
if (!($username)) { $msgTable.promptMsg }
Si Import-LocalizedData no encuentra ningn archivo .psd1 que
coincida con el valor de $PSUIculture, no se reemplazar el valor
de $msgTable y la llamada a $msgTable.promptMsg mostrar las
cadenas en es-ES.

EJEMPLO
En este ejemplo se muestra cmo se usan las caractersticas de
internacionalizacin en un script para mostrar a los usuarios un
da de la semana en el idioma configurado en el equipo.
A continuacin se muestra todo el archivo de script Ejemplo1.ps1.
El script comienza con una seccin de datos denominada Day ($Day)
que contiene un comando ConvertFrom-StringData. La expresin
enviada a ConvertFrom-StringData es una cadena multilnea
intercalada en el cdigo que contiene los nombres de los das en
la referencia cultural predeterminada de la interfaz de usuario,
es-ES, en pares clave-valor. El cmdlet ConvertFrom-StringData
convierte los pares clave-valor de la cadena multilnea
intercalada en el cdigo en una tabla hash y, a continuacin, la
guarda en el valor de la variable $Day.
El comando Import-LocalizedData importa el
.psd1 en el directorio que coincide con el
automtica $PSUICulture y, a continuacin,
variable $Day, reemplazando los valores de
seccin de datos.

contenido del archivo


valor de la variable
lo guarda en la
$Day definidos en la

Los comandos restantes cargan las cadenas en una matriz y las


muestran.
$Day = DATA {
# culture="en-US"
ConvertFrom-StringData @'
messageDate = Hoy es
d1 = Monday
d2 = Tuesday
d3 = Wednesday
d4 = Thursday
d5 = Friday
d6 = Saturday
d7 = Sunday
'@
}
Import-LocalizedData -BindingVariable Day
# Generar una matriz de los das de la semana.
$a = $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6, $Day.d7
# Obtener el da de la semana como un nmero (lunes = 1).
# Indizar en $a para obtener el nombre del da.
# Usar formato de cadena para generar una frase.
"{0} {1}" -f $Day.messageDate, $a[(get-date -uformat %u)] | Out-Host

Los archivos .psd1 que admiten el script se guardan en subdirectorios

del directorio de script con nombres que coinciden con los valores
de $PSUICulture.
A continuacin se muestra todo el archivo .\es-ES\ejemplo1.psd1:
# culture="es-ES"
ConvertFrom-StringData @'
messageDate = Today is
d1 = lunes (en espaol)
d2 = martes (en espaol)
d3 = mircoles (en espaol)
d4 = jueves (en espaol)
d5 = viernes (en espaol)
d6 = sbado (en espaol)
d7 = domingo (en espaol)
'@
Por consiguiente, cuando se ejecuta Ejemplo.ps1 en un sistema
donde el valor de $PSUICulture sea es-ES, el resultado del script es:
Today is Friday (en espaol)
VEA TAMBIN
about_Data_Sections
about_Automatic_Variables
about_Hash_Tables
about_Quoting_Rules
ConvertFrom-StringData
Import-LocalizedData

También podría gustarte