Exportar (0) Imprimir
Expandir todo
Expandir Minimizar

Una simple localización de un formulario sin archivos de recursos

Septiembre de 2005

Publicado: 19 de Septiembre de 2005

Por Andy González

En esta página

Introducción Introducción
Ejemplo Ejemplo
Conclusión Conclusión
Acerca del autor Acerca del autor

Introducción

La globalización es el proceso de diseño y desarrollo de un producto de software que pueda funcionar con diversas culturas o configuraciones regionales.

En otras palabras, la globalización permite la entrada, presentación y salida de un conjunto definido de secuencias de comandos de idioma perteneciente a una determinada área geográfica. La mejor manera de globalizar estas funciones es utilizar el concepto de culturas o configuraciones regionales. Una cultura o configuración regional es un conjunto de reglas y otro de datos, específicos de un área geográfica e idioma determinados. Estas reglas y datos incluyen información acerca de:

  • Clasificación de caracteres

  • Formato de fecha y hora

  • Convenciones numéricas, monetarias, de pesos y de medidas

  • Reglas de ordenación

Ejemplo

El siguiente ejemplo de VB.net demuestra como localizar un formulario en tiempo de ejecución sin el uso de archivos de recurso.

Simplemente el diseño se base en un conjunto de controles, un control TreeView para alojar las un listado de un conjunto de culturas, un botón para aplicar la cultura seleccionada, y una serie de etiquetas (Labels)) para manejar los resultados.

Figura 1

Figura 1: Diseño del formulario

Imports System.Globalization
Imports System.Threading

El espacio de nombres System.Globalization contiene clases que definen información relativa a la referencia cultural, incluido el idioma, el país o región, los calendarios utilizados, los modelos de formato para las fechas, la moneda y los números y el criterio de ordenación de las cadenas. Estas clases son útiles para escribir aplicaciones globalizadas (internacionalizadas).

La referencia cultural es una propiedad del subproceso en ejecución. Esta propiedad de sólo lectura devuelve Thread.CurrentCulture. Cuando se inicia un subproceso, su referencia cultural se determina inicialmente mediante el GetUserDefaultLCID de la API de Windows. Para cambiar la referencia cultural utilizada por un subproceso, establezca Thread.CurrentCulture en la nueva referencia cultural.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim ci As CultureInfo

   For Each ci In CultureInfo.GetCultures(CultureTypes.AllCultures)
     If Mid(ci.Name, 1, 2) = "es" Or Mid(ci.Name, 1, 2) = "fr" Or Mid(ci.Name, 1,
        2) = "en" Then
                
           If Not ci.IsNeutralCulture Then
                Dim nodp As New Windows.Forms.TreeNode(ci.NativeName & ", " & 
                ci.Name)
                tvCultures.Nodes.Add(nodp)
            End If
      End If
   Next ci

End Sub

La clase CultureInfo representa información acerca de una referencia cultural específica que incluye los nombres de la referencia cultural, el sistema de escritura y el calendario utilizado, así como el acceso a objetos específicos de la referencia cultural que proporcionan información para operaciones comunes, como la aplicación de formato a fechas y la ordenación de cadenas.

Por ejemplo en el código siguiente cambia la referencia de la cultura asociada con la selección del usuario con el control TreeView.

Thread.CurrentThread.CurrentCulture = myCultureInfo
Thread.CurrentThread.CurrentUICulture = myCultureInfo

Botón “Apply culture”

Private Sub ApplyCulture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim myCultureName As String = 
            Microsoft.VisualBasic.Right(tvCultures.SelectedNode.Text, 5)
        Dim myCulture As String = Nothing
        Dim myCultureInfo As CultureInfo = New CultureInfo(myCultureName)
        
        Thread.CurrentThread.CurrentCulture = myCultureInfo
        Thread.CurrentThread.CurrentUICulture = myCultureInfo

        Dim myString1 As String = "June 11, 2005"
        Dim myInt As Integer = 1000000
        Dim myInt2 As Integer = 1000000

        lnbNumber.Text = myInt.ToString("N", myCultureInfo)
        lblCurrency.Text = myInt.ToString("C", myCultureInfo)
        lblDate.Text = DateTime.Parse(myString1, myCultureInfo)

        lblCulturename.Text = Mid(tvCultures.SelectedNode.Text, 1,
           Microsoft.VisualBasic.Len(tvCultures.SelectedNode.Text) - 7)

End Sub

Este código formatea la información en las etiquetas (controles Label) cuando se aplica una cultura.

lnbNumber.Text = myInt.ToString("N", myCultureInfo)
lblCurrency.Text = myInt.ToString("C", myCultureInfo)
lblDate.Text = DateTime.Parse(myString1, myCultureInfo)
Figura 2

Figura 2: Vista del formulario al aplicar cultura en-US (United States)

Figura 3

Figura 3: Vista del formulario al aplicar cultura es-ES (España)

Figura 4

Figura 4: Vista del formulario al aplicar cultura es-PE (Perú)

Figura 5

Figura 5: Vista del formulario al aplicar cultura fr-FR (Francia)

Conclusión

El proceso de globalización es un proceso sencillo de cual le permite crear aplicaciones internacionales sin barreras culturales. Quiere decir, una solución en una plataforma común para comunicar y colaborar con cualquier idioma.

Distribuyendo una solución internacional significa que su cliente en un país puede asegurar intercambio de datos fáciles con los colegas en otro.

Acerca del autor

Andy González es International Program Manager en Microsoft. Es responsable por la calidad de las herramientas de desarrollo en Latinoamérica y España. Sus productos incluyen Visual Studio, Visual Studio Team System, .NET Framework y Visual Studio Tools for the Office System.

Mostrar:
© 2014 Microsoft