Создание файлов локализации .resx делает пустыми файлы .Designer.cs - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь добавить локализацию в свой проект .NET MVC. Насколько я видел ( здесь , здесь и здесь ), я просто смогу создать в общей сложности три файла (если у меня есть два языка).

Resources.resx
Resources.en-us.resx
Resources.da-dk.resx

Когда я открываю файлы .resx, я могу добавлять в них записи. После того, как я это сделал (и установил «Access Modifier» для Internal или Public), он генерирует файл Resources.*.Designer.cs (как и должно быть). Однако для en-us и da-dk они пусты. Никаких ошибок или чего-либо еще.

Насколько я мог прочитать ( здесь , здесь и здесь ), у меня не может быть точки между именем файла и расширением .resx , И, к моему удивлению, это правда. Если я переименую любой из этих файлов en-us / da-dk в Whatever.resx, будет создан файл Whatever.Designer.cs.

Я прочитал много ответов, попробовал свой путь с шаблонами T4 и кучу других вещей, но я просто не могу заставить его создать рабочий файл Designer.cs.

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

1 Ответ

0 голосов
/ 13 ноября 2018

Это специально.

Типы файлов Resources.EN-US.resx не имеют дизайнера, потому что фактический дизайнер находится в его «родительском» файле, Resources.EN-US.resx.Файл en-us содержит только ключ / значение XML.

Если вы вызываете свой ресурс, вы, вероятно, используете его следующим образом:

var someVar = Resources.SomeLocalizedString;

Вам не нужно различатьмежду EN-US типами.

Если вы посмотрите на код дизайнера, вы увидите, что происходит (подождите, я приведу пример)

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

Thread.CurrentThread.CurrentUICulture = new CultureInfo("EN-US");
...