el_tot93 Ответов: 1

Преобразование языка страницы


Есть ли у кого-нибудь идея, почему мой код не работает? У меня везде английские струны.

Обратите внимание, что это не ASP.NET проект, но настоящий проект WinForms.

Я настроил проект windows forms для использования локализации, чтобы он поддерживал арабский и английский языки.

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

       Admin admin = new Admin();
       this.Close();
       admin.Show();

Thread.CurrentThread.CurrentUICulture = new CultureInfo("ar-KW");

       Admin admin = new Admin();
       this.Close();
       admin.Show();


Что я уже пробовал:

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
       this.Controls.Clear();
       this.RightToLeftLayout = false;
       InitializeComponent();
       Properties.Settings.Default["lang"] = "en-US";
       Properties.Settings.Default.Save();

           Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ar-KW");
       this.Controls.Clear();
       InitializeComponent();
       Properties.Settings.Default["lang"] = "ar-KW";
       Properties.Settings.Default.Save();


и

var ChangLanuguage = new Changelanguage();
           ChangLanuguage.Updateconfig("language", "ar-KW");
           Application.Restart();


private void ChangeLanguage(string lang)
        {
            foreach (Control c in this.Controls)
            {
                ComponentResourceManager resources = new ComponentResourceManager(typeof(Admin));
                resources.ApplyResources(c, c.Name, new CultureInfo(lang));
            }
        }



и

private void metroTile58_Click(object sender, EventArgs e)
       {
           switch(Thread.CurrentThread.CurrentUICulture.IetfLanguageTag)
           {
               case "ar-KW":Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");break;

               case "en-US": Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ar-KW"); break;
           }
           this.Controls.Clear();
           InitializeComponent();
       }


Он работает, когда я тестирую его, начиная отлаживать, но когда я устанавливаю (когда программа извлекается) приложение, оно перестает работать.

1 Ответов

Рейтинг:
11

Mehdi Gholam

Winforms создает файлы ресурсов для различных языков, для которых вы изменили дизайн своих форм (изменили строки и макет и т. д.).

Если ваше приложение работает в режиме отладки и вы можете переключать языки, то проверьте папку "bin\debug" и скопируйте/разверните языковую папку "ar" или "ar-KW" вместе с вашим EXE-файлом на других машинах


el_tot93

как я могу это сделать

Mehdi Gholam

Какая часть моего ответа не ясна?

el_tot93

второй

Mehdi Gholam

Перейдите в папку отладки и скопируйте все, включая все папки (кроме файлов .pdb), на целевую машину.

el_tot93

спасибо он работать со мной :)