C#은 다국어 응용 프로그램을 생성합니다.

9445 단어 csharp
Clic aquí para ver un proyecto de ejemplo.

Para crear una aplicación multilenguaje en C# lo primero es crear una carpeta donde vamos a colocar cada uno de los lenguajes llamada Lenguajes o el nombre que desees.


Luego agregamos un archivo de recurso en la carpeta con el nombre de Strings o cadenas 스페인어로.



y por cada texto en el formulario o mensaje de alerta en el formulario procedemos hacer una propiedad o fila en el archivo de recurso, para agregar una propiedad se debe abrir el archivo de recurso.






Una vez tengamos el archivo procedemos hacer un archivo resx por cada lenguaje con las mismas propiedad, pero se llamará cómo el archivo anterior pero con un punto y el código de lenguaje, así :


El código del lenguaje es la unión de la abreviatura del idioma más un "-"seguido de la abreviatura del país, la abreviatura del idioma en minúscula y la del país en mayúscula.

Ejemplo, el idioma Ingles es "en"y el país de Estados Unido es "US"entonces el idioma ingles de estados unidos queda así "en-US"clic aquí para ver los código de los idiomas Y clic aquí para ver la abreviatura de todos los paises

Una vez tengamos el archivo por cada lenguaje, lo que procedemos hacer el cargar el idioma al cargar el formulario.

con esta línea cambiamos el lenguaje de la aplicación

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");


pero antes de crear un método que cargue el idioma necesitamos guardar el idioma que el programa tuvo antes de cerrarse para que al volverlo abrir se cargue de nuevo.

eso lo hacemos creado una propiedad para guardar el idioma, sino sabes cómo hacerlo, mira este vídeo.





creamos un método que cargue el idioma al cargar el formulario

  public void CargarIdioma()
        {
            Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Settings.Default.Idioma);
            lblLenguaje.Text = Strings.lblLenguaje;
            lblnuevo.Text = Strings.lblnuevo;
            ckActivo.Text = Strings.ckActivo;
            btnMensaje.Text = Strings.btnMensaje;
            this.Text = Strings.titulo;
            btnAplicar.Text = Strings.btnAplicar;

        }


Al cambiar el idioma, cambiamos la configuración y volvemos a cargar el idioma

  Settings.Default.Idioma = "en-US";
  CargarIdioma();



  Settings.Default.Idioma = "es-CO";
  CargarIdioma();


al cerrar el formulario debemos guardar el último idioma que se seleccionó

Settings.Default.Save();


트루코스



1- Crear una clases que controles los idiomas



Creamos una clase con todos los atributos de un idioma y un método estático que devuelta todos los idiomas.

클래스 : Idioma.cs
public class Idioma
    {
        public String Nombre { get; set; }
        public String Abreviacion{ get; set; }
        public String Pais { get; set; }
        public String AbreviacionPais{ get; set; }

        public String NombrePais
        {
            get
            {
                return Nombre + "(" + Pais + ")";

            }
        }
        public String CultureInfo
        {
            get
            {
                return Abreviacion + "-" + AbreviacionPais;
            }
        }

        public static List<Idioma> ObtenerIdiomas()
        {
            return new List<Idioma> {
                new Idioma
                {
                    Nombre = "Español",
                    Abreviacion = "es",
                    Pais = "Colombia",
                    AbreviacionPais = "CO"
                },
                 new Idioma
                {
                    Nombre = "English",
                    Abreviacion = "en",
                    Pais = "Estados Unidos",
                    AbreviacionPais = "US"
                },
                  new Idioma
                {
                    Nombre = "português",
                    Abreviacion = "pt",
                    Pais = "Brazil",
                    AbreviacionPais = "BR"
                }
            };
        }

        public static void CambiarTexto(Control.ControlCollection controls)
        {
            foreach (Control c in controls)
            {
                if(c is Panel)
                {
                    CambiarTexto(c.Controls);
                }
                else
                {
                    String text = Strings.ResourceManager.GetString(c.Name);
                    if (text != null)
                    {
                        c.Text = text;
                    }
                }

            }
        }

    }


para llenar un combobox sería así :

  public void LlenarIdiomaCombobox()
        {
            comboBox1.DataSource = Idioma.ObtenerIdiomas();
            comboBox1.DisplayMember = "Nombre";
            comboBox1.ValueMember = "CultureInfo";
        } 


결과 :



기타 형식:

  public void LlenarIdiomaCombobox()
        {
            comboBox1.DataSource = Idioma.ObtenerIdiomas();
            comboBox1.DisplayMember = "NombrePais";
            comboBox1.ValueMember = "CultureInfo";
        } 


결과:



Cargar los idiomas dinámicamente, el único requisito es que el nombre del control se debe llamar igual que la propiedad del archivo de recurso.

    public void CargarIdioma()
        {
            Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Settings.Default.Idioma);
            Idioma.CambiarTexto(this.Controls);
            this.Text = Strings.titulo;

        }


2- Instalar ResXManager



Herramientas 메뉴의 확장 프로그램을 설치하고 확장 프로그램과 cierras Visual Studio를 확장합니다.



presionas en modificar(수정) y luego en finalizar tarea(과제 종료).

luego vamos donde están los idiomas, clic derecho en uno de ellos y luego clic izquierdo para desplegar las opciones y luego lo abrimos con la extensión



luego puedes ver y editar todos los idiomas al mismo tiempo y agregar un nuevo 관용구

좋은 웹페이지 즐겨찾기