Как работать с несколькими проектами с несколькими сегментами файла resx во время локализации - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть несколько проектов, и у каждого проекта есть свой resx файл.И я не уверен, каков наилучший способ загрузить файл resx, необходимый для трансляции, с помощью Resource Manager.

Обсуждение кода:

Проект A:

LocalizedText.resx
Key            Value
Hello         Hello

LocalizedText.fr_FR.resx
Key             Value
Hello           Salut!

Проект B

LocalizedText.resx
Key            Value
Hello         Hello

LocalizedText.fr_FR.resx
Key             Value
Hello           Salut!

Проект C:

Ссылка на обе ссылки A and B

// Singleton Class

public sealed class C
{
// code removed for brevity
    private static readonly C class1Helper = new C();

    public static CGetClass1Helper { get { return class1Helper; } }
    public string GetTranslatedMessage(string key, CultureInfo culture, string namespace)
    {
        var message = "";
        var rm = new ResourceManager(namespace, Assembly.GetCallingAssembly());
        message = rm.GetString(key, culture);
        return message;
    }
}

Вызов из проекта A:

  C instance = C.GetClass1Helper;
  var t =  instance.GetTranslatedMessage("Name", new CultureInfo("en-US"),
 "A.App_GlobalResources.LocalizedText"); 

Вызов из проекта B:

  C instance = C.GetClass1Helper;
  var t =  instance.GetTranslatedMessage("Name", new CultureInfo("en-US"),
 "B.App_GlobalResources.LocalizedText"); 

Примечания:

  1. Когда я звонил в Resource Manager, мне пришлось использовать GetCallingAssembly INSTEAD OF GetExecutingAssembly(), чтобы при вызовах из проекта A файл Resx передавался из его папки
  2. Я передаю пространства имен расположения файла resx в GetTranslatedMessage

WorkAround: я могу повторить код, который у меня есть в Common Project C как в A, так и в B, и тогда все будетотлично работаетНо тогда я буду повторять тот же код.

Проблема: Я НЕ хочу передавать пространства имен из каждого вызова.Неужели я сделал какую-то ошибку, создав Синглтон? Нужно ли иметь abstract class?

...