локализация и глобализация

 
 

файлы стандартных ресурсов

В нашем примере будет три локализации с нейтральной культурой: русская (ru), французская (fr) и по умолчанию (en), если например у пользователя установлена немецкая культура и отсутствует русская и английская, тогда у него все надписи будут отображаться на английском языке.
Создание локализации по умолчанию с нейтральной культурой.
Создайте проект. В свойствах формы выберите Localizable и присвойте значение true. Language пусть остается по умолчанию Default.
Перетащите элементы управления на форму и присвойте свойству Text значения на английском языке.
Создание русской локализации с нейтральной культурой.
Свойству формы Language присвойте значение ru и нажмите Enter. Компилятор сам напишет полное название. В каждом элементе управления измените название на русское.
Создание французской локализации с нейтральной культурой.
Свойству формы Language присвойте значение fr и нажмите Enter. Компилятор сам напишет полное название. В каждом элементе управления измените название на французское.
Visual Studio сгенерировала файлы.
По умолчанию.
Русский.
Французский.
Скрыть

Показать

Копировать
  Form1.cs  
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace _0081 {
 public partial class Form1 : Form {
  public Form1() {
   InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e) {
   if(textBox1.Text == "sergey" & textBox2.Text == "123456") {
    MessageBox.Show("Welcome!");
   }
   else {
    MessageBox.Show("Excuse me, try again.");
   }
  }
 }
}
 
 

файлы собственных ресурсов

В этом примере будет три кнопки с названиями языков, по умолчанию будет английский язык. Если пользователь выбрал язык и правильно или не правильно ввел данные, то названия на форме и диалоговое окно будет на языке, который он выбрал.
EN.resx
FR.resx
RU.resx
Скрыть

Показать

Копировать
  Form1.cs  
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
using System.Resources;
 
namespace _0082 {
 public partial class Form1 : Form {
  ResourceManager rs = null;
  string language = string.Empty;
  public Form1() {
   InitializeComponent();
   rs = new ResourceManager("_0082.EN", typeof(Form1).Assembly);
   this.Text = rs.GetString("Form1.Text");
   groupBox1.Text = rs.GetString("groupBox1.Text");
   label1.Text = rs.GetString("label1.Text");
   label2.Text = rs.GetString("label2.Text");
   button1.Text = rs.GetString("button1.Text");
   language = "English";
  }
  //EN
  private void toolStripButton1_Click(object sender, EventArgs e) {
   rs = new ResourceManager("_0082.EN", typeof(Form1).Assembly);
   this.Text = rs.GetString("Form1.Text");
   groupBox1.Text = rs.GetString("groupBox1.Text");
   label1.Text = rs.GetString("label1.Text");
   label2.Text = rs.GetString("label2.Text");
   button1.Text = rs.GetString("button1.Text");
   language = "French";
  }
  //FR
  private void toolStripButton2_Click(object sender, EventArgs e) {
   rs = new ResourceManager("_0082.FR", typeof(Form1).Assembly);
   this.Text = rs.GetString("Form1.Text");
   groupBox1.Text = rs.GetString("groupBox1.Text");
   label1.Text = rs.GetString("label1.Text");
   label2.Text = rs.GetString("label2.Text");
   button1.Text = rs.GetString("button1.Text");
  }
  //RU
  private void toolStripButton3_Click(object sender, EventArgs e) {
   rs = new ResourceManager("_0082.RU", typeof(Form1).Assembly);
   this.Text = rs.GetString("Form1.Text");
   groupBox1.Text = rs.GetString("groupBox1.Text");
   label1.Text = rs.GetString("label1.Text");
   label2.Text = rs.GetString("label2.Text");
   button1.Text = rs.GetString("button1.Text");
   language = "Russian";
  }
  //Perform Effectuer Выполнить
  private void button1_Click(object sender, EventArgs e) {
   if(language == "English") {
    if(textBox1.Text == "sergey" & textBox2.Text == "123456") {
     MessageBox.Show(rs.GetString("text1"));
    }
    else {
     MessageBox.Show(rs.GetString("text2"));
    }
   }
   else if(language == "French") {
    if(textBox1.Text == "sergey" & textBox2.Text == "123456") {
     MessageBox.Show(rs.GetString("text1"));
    }
    else {
     MessageBox.Show(rs.GetString("text2"));
    }
   }
   else if(language == "Russian") {
    if(textBox1.Text == "sergey" & textBox2.Text == "123456") {
     MessageBox.Show(rs.GetString("text1"));
    }
    else {
     MessageBox.Show(rs.GetString("text2"));
    }
   }
  }
 }
}