Многоязычные Winforms в .Net - мнения и предложения

StackOverflow https://stackoverflow.com/questions/291117

  •  08-07-2019
  •  | 
  •  

Вопрос

Итак, у меня есть программа, которая должна быть многоязычной.Единственная разница между тем, что мне нужно, и тем, что я нашел в Интернете, заключается в том, что все компьютеры, на которых будет выполняться моя программа, настроены на локализацию EN.

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

Я подумывал о том, чтобы попытаться создать XML-файл (на самом деле просто набор данных) для каждой формы, которая у меня есть, и сделать так, чтобы каждая таблица данных была выбираемым языком.В каждой таблице у него была бы информация (имя элемента управления, свойство и текст) для установки меток / флажков / и т.д., Которые ему необходимы.Мне нужно будет создать новый элемент управления формой, чтобы у меня была общая функция для просмотра и переименования всех этих элементов управления, если это возможно.

<DataSet>
   <English>
     <ControlName>labelHello</ControlName>
     <ControlProperty>Text</ControlProperty>
     <Text>Hello</Text>
   </English>
   <English>
     <ControlName>labelBye</ControlName>
     <ControlProperty>Text</ControlProperty>
     <Text>Bye</Text>
   </English>
   <Spanish>
     <ControlName>labelHello</ControlName>
     <ControlProperty>Text</ControlProperty>
     <Text>Hola</Text>
   </Spanish>
</DataSet>

Кроме того, я мало что знал о строках в файле ресурсов для каждой формы.Могу ли я сделать это оттуда и использовать .Сетевые функции для достижения этой цели?

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

Спасибо

Это было полезно?

Решение

Вы можете задать желаемый язык программирования в коде, например:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-ES");

Видишь эта статья MSDN для получения дополнительной информации.

Другие советы

Это больно, но это не тяжело.В конструкторе WinForm VS2008 выберите форму, просмотрите ее свойства и установите Localizable=True (если вы просмотрите файл с частичным классом / кодом, лежащий в основе, вы увидите новую строку, которая выглядит примерно так

  resources.ApplyResources(this, "$this")

Затем для каждой локали, которую вы хотите поддерживать, выберите Язык и локализуйте все необходимые изменения поверх локальной по умолчанию.

Я полагаю, что Windows позволяет пользователю указывать другую локаль для указанного приложения.Последний раз я пробовал это с Windows 2000.

В Windows у вас может быть свой машинный язык EN, но для браузера отдельные пользователи ПК могут выбирать предпочтительные языки (в любом случае, IE и Firefox).Все остальное на ПК на английском языке В IE перейдите в "Инструменты", "Параметры", нажмите кнопку "Язык" на вкладке "Общие".Вы можете указать предпочтительную иерархию языков.

В противном случае соглашайтесь с ответом Джо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top