C#: Как получить строку ресурса от определенной культуры

Это сообщение в Игры Из могли бы быть соответствующими/интересными.

20
задан Foxfire 1 December 2009 в 11:44
поделиться

4 ответа

Вы можете вручную изменить свойство Культура класса FooBar, создаваемого Visual Studio. Или, если вы напрямую используете класс ResourceManager , вы можете использовать перегрузку GetString , которая принимает желаемый язык в качестве параметра.

19
ответ дан 30 November 2019 в 00:13
поделиться

Вот код, который я использовал для получения файла ресурсов по имени культуры - это vb.net, но вы поняли идею.

Dim reader As New System.Resources.ResXResourceReader(String.Format(Server.MapPath("/App_GlobalResources/{0}.{1}.resx"), resourceFileName, culture))

И если вы хотите вернуть его как словарь :

If reader IsNot Nothing Then
    Dim d As New Dictionary(Of String, String)
    Dim enumerator As System.Collections.IDictionaryEnumerator = reader.GetEnumerator()
    While enumerator.MoveNext
        d.Add(enumerator.Key, enumerator.Value)
    End While
    Return d
End If
1
ответ дан 30 November 2019 в 00:13
поделиться

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

Например, вам придется:

  • Обработать все форматирование чисел с помощью перегрузок культуры
  • Убедитесь, что другие библиотеки, которые вы используете, имеют аналогичный механизм, который у вас есть
  • . В случаях, когда описанное выше невозможно (например, BCL), создайте оболочки для всего, что МОЖЕТ быть специфичным для культуры (а это МНОГОЕГО).

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

0
ответ дан 30 November 2019 в 00:13
поделиться

Используйте вторую перегрузку GetValue: -

 .GetValue(null, BindingFlags.GetProperty, null, null, CultureInfo.GetCultureInfo("sv-SE"))
0
ответ дан 30 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: