2016-03-08 4 views
0

У меня проблема с возможностью быть конкретным клиентом с моими файлами ресурсов слова.Файлы ресурсов для разных клиентов

У меня есть файл по умолчанию WordResources.resx и языковые ресурсы, например. WordResources.en-GB.resx, WordResources.fr.resx.

Как я могу получить, например, клиентские файлы ресурсов;
WordResources.client1.resx, WordResources.client2.resx.

В зависимости от компиляции, например. client1 будет строить с помощью WordResources.client1.resx, но заменит файл ресурсов по умолчанию?

Я надеялся, что у меня могут быть разные клиентские файлы ресурсов только для нескольких разностей слов, а затем сохранить файл по умолчанию и использовать любой язык в сочетании с этим.

ответ

2

Вы можете создать несколько релизов. Обычно мы переименовываем файлы resx во время сборки и сборки для каждого клиента собственной установки/выпуска.

Вы можете сделать это в событии предварительной сборки ваших проектов и включить переменную окружения.

+0

Я решил пойти с подходом ниже. Это будет медленная миграция на новый метод, но он изменит его на запрос клиента. – KyleK

0

Мне удалось решить мою проблему с помощью клиентских файлов на заказ. Переход на новый метод разрешения строки для локализации займет некоторое время, но будет достигнуто за каждый запрос на изменение.

Я определил глобальную настройку приложения в базе данных, которая указывает клиента.

Имя клиента затем используется для поиска файла с соответствующим именем .resx, и если он не может найти строку в файле .resx, она по умолчанию будет либо указанной версией культуры, либо будет считана из файла ресурсов по умолчанию/указанного default resx resx и не удается выполнить все это, возвращает переданную строку.

public static string GetLocalizedString(string text) 
{ 
    System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(LocalizationExtensions)); 
    cultureInfo = new CultureInfo(HttpContext.Current.Cache["Culture"].ToString()); 
    string clientName = HttpContext.Current.Cache["ClientName"].ToString();  
    return (new System.Resources.ResourceManager("Resources." + clientName + "." + clientName, assembly)).GetString(text, cultureInfo) 
      ?? (new System.Resources.ResourceManager("Resources.WordResources", assembly)).GetString(text, cultureInfo) 
      ?? text; 
} 

Параметры приложения для имени клиента загружаются в кеш.

Смежные вопросы