Подтвердить что ты не робот

Понимание того, как локализовать ресурсы

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

MyResources.ResourceManager.GetString(name + "IdentString");

теперь я искал способ хранения дополнительных языков. Ресурсы завернуты в провайдера (примерно двенадцать провайдеров на данный момент, но это число будет расти в будущем), используемое приложением ASP.Net MVC (без просмотра!)

Насколько я знаю, есть два способа архивировать это:

  • Спутниковая сборка для каждого языка, содержащего ресурс
  • Filebased ResourceManager, где каждый язык имеет собственный файл двоичных ресурсов

И насколько я понимаю, мне приходится использовать внешние инструменты в обоих сценариях и либо связывать некоторые спутниковые сборки с исходным ресурсом (каждый для одного языка), который автоматически загружается менеджером ресурсов, либо я должен использовать FilebasedResourceManager, который загружает файл ресурсов (двоичную версию для каждого языка) из внешнего местоположения. Это означает, что в обоих случаях в проект внедряется только исходный ресурс, а другие просто привязаны. Правильно ли я прав, или я совершенно не прав?

Дополнительная информация

Не нужно говорить, что я не знаю, какой из них взять или как они действительно работают, или даже там, где есть другие способы. Когда я начал искать это, я подумал о том, чтобы просто называть свой файл ресурсов после соглашения, такого как fr-resource.resx или de-resource.resx, чтобы ресурс-менеджер мог взять культуру потока или заданный и попытаться извлечь строку из этого ресурса или возврат к умолчанию. Но я нашел только что-то о спутниках (что только напоминает мне проклятую песню), которые должны быть зарегистрированы в web.config, но нужно строить только с помощью внешних инструментов...

4b9b3361

Ответ 1

Вы находитесь на правильном пути, переименовывая файлы resx в соответствии с культурой. Однако вы бы назвали их следующим

  • resources.resx (Это будет резерв по умолчанию.)
  • resources.de.resx (Это будут нейтральные культурные ресурсы культуры.)

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

Сателлитовые собрания будут разбиты в подпапке с названием культуры. Поэтому, если у вас есть \myApp.exe в качестве вывода, вы также получите \de\myApp.resources.dll

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