Как передать ключи локализации, ссылающиеся на файл ресурсов по умолчанию - PullRequest
0 голосов
/ 18 сентября 2018

Итак, у меня есть два файла 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

Ниже приведен мой код перевода:

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 конструктора по умолчанию.

...