2013-04-07 2 views
2

Я искал ответы на похожие вопросы, но вопросы либо довольно старые, либо без ответа.Несколько файлов ресурсов в C#

фон

У нас есть несколько различных веб-сайтах обмена и тот же базовый код, и они размещаются отдельно. Все сайты находятся на английском языке, но все они имеют локализованное содержимое (например, UK, AUS & NZ). Локализованное содержимое может включать адрес электронной почты, номер телефона и другую компанию.

Код имеет жесткое кодирование для разделения содержимого с помощью локализованных элементов управления, таких как lit_PhoneAU, lit_PhoneNZ & lit_PhoneUK. Есть коды, чтобы скрыть & показать эти элементы управления на основе конфигурации местоположения.

Задача Что было закодировано для того, что нам было нужно раньше, но оно имеет ограничение и не расширяется.

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

Вопрос Мое понимание файл # ресурсов C, что мы можем переключить файл ресурсов на основе локализации установки таких ан-AU, еп-UK, FR-FR и так далее. Однако они не будут соответствовать нашим целям, поскольку у нас может быть несколько сайтов для одного места.

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

Обновления

Я должен сделать это очень ясно. Мой вопрос заключается не в переключении UiCulture, поскольку у нас уже есть код для его обработки. Речь идет о обработке нескольких ресурсов в рамках одной Культуры. Например, у нас есть одна и та же база кода для двух разных сайтов в Великобритании. Сайт A относится к подразделению A, и это может быть SiteA.co.uk и иметь название сайта как компания A, тогда сайт B является другим подразделением компании, а сайт, возможно, siteB.co.uk. На данный момент очень сложно управлять содержимым, поэтому мы пытаемся переместить содержимое в файлы ресурсов или бизнес-объект, заполненный вызовами базы данных.

+0

После некоторых довольно обширных исследований, я нашел, что это сообщение очень близко к тому, что мне нужно. http://stackoverflow.com/questions/3402451/how-can-i-change-resource-files-for-a-c-sharp-winform-app-without-changing-the Показывает, что существует способ создания пользовательской культуры. http://msdn.microsoft.com/en-us/library/ms172469(v=vs.90).aspx.Мне все еще нравится слышать, есть ли у кого-то лучший ответ. – Jack

ответ

0

Вы можете использовать перевод Google (бесплатно) на свой сайт. Он автоматически преобразует содержимое в желаемый язык. Просто просмотрите документацию. В противном случае я думаю, что доступен платный переводчик.

+0

Не могли бы вы дать демо-код с кодом C#, который называется веб-сервисом Google Translator? –

+0

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

+0

Великий Джек. Джереми воспользуется этой [ссылкой] (http://www.labnol.org/internet/google-translation-widgets/10135/). Сначала вы зарегистрируетесь в google [link] (https://translate.google.com/ менеджер/сайт /) простой пример JavaScript показан ниже – manuthalasseril

0

Вы можете выбрать локализацию, которая вам нужна в Global.asax.cs, перед тем, как возникнет запрос.

protected void Application_AcquireRequestState(object sender, EventArgs e) 
{ 
    //Sets default culture to en-UK 
    string culture = "en-UK"; 

    //Here you can choose the culture as you want. 
    //If you don't want to have another culture, you can specify a default of any culture, and .resx files will use it. 

    //In this example, I check if the culture is the fr-fr we use it, otherwise use en-UK. 
    //Try to get values from Accept lang HTTP header 
    if (HttpContext.Current.Request.UserLanguages != null && 
     HttpContext.Current.Request.UserLanguages.Length != 0) 
    { 
     //Gets accepted list 
     string name = HttpContext.Current.Request.UserLanguages[0]; 
     if (name.Equals("fr-fr", StringComparison.CurrentCultureIgnoreCase)) 
      culture = "fr-fr"; 
    } 

    CultureInfo info = CultureInfo.CreateSpecificCulture(culture); 
    //Finally setting culture for each request 
    Thread.CurrentThread.CurrentUICulture = info; 
    Thread.CurrentThread.CurrentCulture = info; 
} 

Затем вы можете использовать Thread.CurrentThread.CurrentUICulture для извлечения данных из базы данных, которая соответствует культуре.

+0

'Я должен сделать это ясно снова. это не связано с расположением ресурса. У нас есть код для переключения UiCulture уже, но речь не идет о переключении Культуры. Я обновил свой вопрос выше – Jack

+0

Я мог бы взломать его и использовать разные культуры для разных экземпляров, но он не идеален и может иметь неожиданные результаты. Следовательно, en-AU для сайта A, а затем fr-fr для сайта B. – Jack

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