Как узнать, какие культуры ресурсов доступны в ResourceManager?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как узнать, какие культуры ресурсов доступны в ResourceManager?

Сообщение Anonymous »

У меня возникла ситуация, когда я хотел бы представить список «доступных языков» для моего приложения (которое, кстати, является приложением ASP .NET MVC 3, если это имеет какие-либо шансы). Я подумал, что могу каким-то образом автоматически получить этот список, поскольку это должны быть просто файлы resx, включенные в сборку (мне не нужно поддерживать английский (Великобритания), немецкий (Австрия) или что-то еще, просто английский или немецкий), и я придумал схема, которую я представлю ниже (реализована как синглтон, поскольку это довольно интенсивный подход).

Проблема в том, что на некоторых машинах он возвращает «арабский», хотя у меня нет такого ресурса, а на моем (так как я установил VS 2012) он возвращает все ( для меня это имеет больше смысла, чем возврат только двух реальных культур плюс арабский, но кажется, что ResourceManager просто не был разработан для того, чтобы позволить мне получить эту информацию, поэтому мне, вероятно, не следует жаловаться). Вот схема...

(у меня есть файл Strings.resx и файл Strings.de.resx)

Код: Выделить всё

IEnumerable cultures =
CultureInfo.GetCultures(CultureTypes.NeutralCultures)
.Where(c =>
{
// Exclude the invariant culture and then load up
// an arbitrary string so the resource manager
// loads a resource set, then get the set for the
// current culture specifically and it is, sometimes
// (I thought always but I was wrong) null if no
// set exists
if (c.LCID == CultureInfo.InvariantCulture.LCID)
return false;

var rm = Strings.ResourceManager;
rm.GetString("HELLO", c);
return rm.GetResourceSet(c, false, false) != null;
});
И тогда я подумал: ну, я мог бы сделать это, основываясь на том, существует ли каталог для конкретного языка, вот так:

Код: Выделить всё

var neutralCulture = new[]
{
CultureInfo
.CreateSpecificCulture(((NeutralResourcesLanguageAttribute)
Assembly
.GetExecutingAssembly()
.GetCustomAttributes(
typeof (NeutralResourcesLanguageAttribute),
false)[0])
.CultureName)
};

IEnumerable cultures =
CultureInfo.GetCultures(CultureTypes.NeutralCultures)
.Where(c => Directory.Exists(c.TwoLetterISOLanguageName))
.Union(neutralCulture);
Это «работает» (поскольку возвращает английский и немецкий языки), но я думаю, что это не очень стабильный подход, поскольку он подвержен случайным проблемам, например, у кого-то. создать папку и выкинуть все это из строя. Я, вероятно, смогу облегчить эти проблемы с помощью более разумных проверок (предложениеwhere требует большей сложности), но вот вопрос (наконец-то)...

Верно теперь я подумываю о том, чтобы просто использовать файл конфигурации и сделать его максимально простым, поскольку мне не очень нравится, куда я попал, но есть ли лучший способ сделать это (или: можно ли это сделать автоматически и безопасным способом)?

Подробнее здесь: https://stackoverflow.com/questions/120 ... rcemanager
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как найти и удалить неиспользуемые ключи из ResourceManager в ASP.NET Core?
    Гость » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Гость
  • Как создать виртуальную машину Azure (с помощью Azure.ResourceManager.Compute) с существующим моментальным снимком, скоп
    Anonymous » » в форуме C#
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • Проблема с Flink: не удалось разрешить адрес ResourceManager pekko
    Anonymous » » в форуме Apache
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Процессы Nodemanager и ResourceManager не запускаются
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Форматирование DateTime Месяц независимо от культуры?
    Гость » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»