Я работаю над локализованным C # .NET-приложением, и мы используем файл strings.resx
для перевода жестко заданных строк в приложение. Для их использования я использую следующий код:
using MyNamespace.Resources ... string someString = strings.someString;
Но теперь я хочу, чтобы определить имя строки в вызове, что-то вроде этого:
string someString = GetString("someString");
Я немного искал ResourceManager
, но я не могу найти способ strings.resx
файл strings.resx
.
Как я могу это сделать?
Небольшой поиск сделал трюк. У меня есть правильный ResourceManager
ansible в моем classе strings
:
ResourceManager rm = strings.ResourceManager; string someString = rm.GetString("someString");
ResourceManager.GetString
.
Вырезанный пример из MSDN:
ResourceManager rm = new ResourceManager("RootResourceName", typeof(SomeClass).Assembly); string someString = rm.GetString("someString");
У меня была такая же проблема с использованием ASP.NET Core MVC, и мне удалось ее решить, используя
ResourceManager rm = new ResourceManager(typeof(YourResourceClass)); string someString = rm.GetString("someString");
Очень похоже на решение @ Vlad, но в остальном у меня было MissingManifestResourceException
Вы можете написать статический метод следующим образом:
public static string GetResourceTitle(string key) { ResourceManager rm = new ResourceManager(typeof(T)); string someString = rm.GetString(key); return someString; }
И звоните куда угодно:
var title= GetResourceTitle< *YouResourceClass*>(key);
Это полезно, когда вы хотите иметь общую функцию для получения String любого файла ресурсов.
Существует очень простой способ сделать это
[NameOfyourResxfile].ResourceManager.GetString("String Name");
в твоем случае
strings.resx.ResourceManager.GetString("someString");