2017-02-21 51 views
-1

Я использовал файлы ресурсов для локализации в поддержке времени разработки. Локализованная строка будет извлечена для элементов элементов дизайна, которые будут добавлены в конструктор элемента управления. Вот код, который я использовал для получения текущей культуры у менеджера ресурсов в режиме разработки.CultureInfo не меняется во время разработки

if (resourceManager != null) 
{ 
    CultureInfo currentUICulture = CultureInfo.CurrentUICulture; 
    if (resourceManager.GetResourceSet(currentUICulture, true, true) != null) 
    { 
     ResourceManager result = resourceManager; 
     return result; 
    } 
} 

и я изменил текущую культуру, используя приведенный ниже код на уровне формы.

public Form1() 
{ 

    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR"); 
    Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-FR"); 

    CultureInfo.CurrentCulture = new CultureInfo("fr-FR"); 
    CultureInfo.CurrentUICulture = new CultureInfo("fr-FR"); 

    InitializeComponent(); 

} 

Мой выпуск - Изменена культура для французского языка не извлекается во время разработки. Культура постоянно растет.

enter image description here

Кто-нибудь знает, как изменить культуру, чтобы отразить во время выполнения для того, чтобы решить вышеупомянутую проблему?

С уважением, Амаль Радж

ответ

1

Рассмотрим следующие факты:

  • CultureInfo.CurrentUICulture возвращает текущий поток пользовательского интерфейса культуры.
  • Ваш дизайн-время в визуальной студии - это время работы визуальной студии.
  • Конструктор вашего Form1 не будет выполняться во время разработки. Его InitializeComponent methis будет просто десериализован для инициализации экземпляра его базового класса Form, который показан в VS-дизайнере.

Поскольку ваш текущий поток Визуальный поток Студия UI и использует en-US в вашей системе, так что вы будете получать en-US во время разработки в текущем потоке пользовательского интерфейса.

+0

Тогда CurrentCulture не может быть изменен на время проектирования? – Amal

+0

Его можно изменить, но в правильном месте. Конструктор вашей формы не в правильном месте. Прочтите [этот пост] (http://stackoverflow.com/a/32299687/3110834), чтобы лучше узнать, как работает дизайнер. –

+0

Также не пытайтесь изменить текущую культуру потока, если вы правильно написали свой конструктор управления, чтобы проверить его, возможно, достаточно изменить язык отображения Windows, чтобы увидеть результат. –