Итак, у меня есть два файла resx с переведенными строками, как показано ниже
LocalizedText.resx (Default)
Key Value
Name This is English Name
LocalizedText.fr-FR.resx
Key Value
Name This is French Name
Поскольку мы знаем, что Visual Studio по умолчанию создает разработанный файл .cs для файла ресурсов по умолчанию.Ниже приведен скриншот для этого.
![enter image description here](https://i.stack.imgur.com/yVC7v.png)
Ниже приведен мой код перевода:
public string GetTranslatedMessage(string key, CultureInfo culture, string resxLoc, Assembly assembly)
{
var rm = new ResourceManager(resxLoc, assembly);
return rm.GetString(key, culture);
}
Телефонный код:
var translatedMsg = GetTranslatedMessage(LocalizedText.Name, culture, resxLoc, assembly);
Вопрос: Вы можете ясно видеть, я использовал LocalizedText.Name
(который ссылается на родительский файл), и у меня также есть поддержка intellisense.Но это NOT WORK because it actually reads/passes the Value instead of the key
.Я имею в виду, что при передаче в реальную функцию передаваемая вещь является переведенной строкой из файла ресурсов по умолчанию, так что, очевидно, она не будет работать.
Обход:
public static const readonly ThisIsNameKey = "Name";
Код вызова:
var translatedMsg = GetTranslatedMessage(ThisIsNameKey, culture, resxLoc, assembly); // And this works fine.
Что я хочу: Почему я не могу передать KEY с помощью поддержки Intelisense Visual Studio и ссылаться на ключ как «LocalizedText.Name».Я хочу, чтобы он передавался как ключ, на который можно затем ссылаться.
Могу ли я использовать
var translatedMsg = GetTranslatedMessage(LocalizedText.Name, culture, resxLoc, assembly);
И захватить первый параметр в качестве ключа, а не значение.Пожалуйста, помогите мне.Я не хочу создавать константу, я хочу использовать / прочитать ключ из файла Resx конструктора по умолчанию.