Итак, у меня есть два файла 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 для файла ресурсов по умолчанию.Ниже приведен скриншот для этого.
Ниже приведен мой код перевода:
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 конструктора по умолчанию.