Многоязычные Winforms в .Net - мнения и предложения - PullRequest
2 голосов
/ 14 ноября 2008

Итак, у меня есть программа, которая должна быть многоязычной. Единственное различие между тем, что мне нужно, и тем, что я нашел в Интернете, состоит в том, что все компьютеры, на которых будет работать моя программа, настроены на локализацию 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>

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

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

Спасибо

Ответы [ 3 ]

2 голосов
/ 14 ноября 2008

Вы можете установить желаемую культуру в коде, например ::10000

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

Подробнее см. в этой статье MSDN .

1 голос
/ 17 ноября 2008

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

  resources.ApplyResources(this, "$this")

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

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

0 голосов
/ 17 ноября 2008

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

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

...