2012-05-10 3 views
4

Я сделал сайт, используя (Asp.net, C#) и его содержание в English. Теперь у меня есть требование сделать этот сайт таким образом, чтобы поддерживать несколько языков, то есть (German, French). Lable/Textbox/строка все значения будут отображаться соответствующие выбранные языки Во время поиска я пришел, чтобы узнать, есть несколько способов, какЛучший способ сделать сайт для нескольких языков

  • Использование локализации
  • файла Использование ресурсов.
  • База данных (каждая вещь сохраняется в базе данных для разных языков).

откровенно говоря, я не согласен с третьим вариантом.

Я хочу знать, что является лучшим способом пойти или есть другой лучший способ?

Примечание: Текущий сайт был создан с использованием .NET framework 4.0/vs 2010.

Благодаря

+0

один из способов сделать это будет иметь полностью переведенные страницы с только разными названиями, например AboutPage.en и AboutPage.fr, то в зависимости от lauguage определена вам просто отобразите страницу с соответствующим завершением этого языка. – RhysW

+0

несколько хороших ссылок по теме: http://stackoverflow.com/questions/160335/how-do-you-localize-a-database-driven-website http://stackoverflow.com/questions/7783112/localization-globalization -should-be-database-driven-or-resource-web-frameworka –

+0

Посмотрите эту тему: http://stackoverflow.com/questions/470366/multiple-languagesenglish-french-on-asp-net-page –

ответ

2

Пример кода я сделал используя файл ресурсов добавить глобальный.asax

void Application_BeginRequest(Object sender, EventArgs e) 
     { 
      // Code that runs on application startup 
      HttpCookie cookie = HttpContext.Current.Request.Cookies["CultureInfo"]; 
      if (cookie != null && cookie.Value != null) 
      { 
       System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value); 
       System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value); 
      } 
      else 
      { 
       System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en"); 
       System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en"); 
      } 
     } 

Блог Статья: How to create multilanguage website in Asp.net C#

2

Для динамического контента thrid плагин партии или добавив что-то, такие как Google перевести это сделает;

http://translate.google.com/translate_tools

FYI; Google Chrome имеет встроенный автоперевод, а популярность Chrome быстро растет ... wow представляет собой веб-сайт, где независимо от языка, на котором у вас есть доступ ко всему содержимому, это не так, но я, хотя бы поделился своими мыслями

+0

Использование стороннего управления не является хорошим способом. Как я делаю продукт, поэтому использование переводчика google - плохой выбор, используя его, изменит весь пользовательский интерфейс, всплывает и т. Д. –

+1

Вы когда-нибудь пробовали такой автоматический перевод? Я заверяю вас, что сайт, переведенный автоматически, не поддерживает множественный язык: результаты с английского на французский являются ужасными (пример я знаю хорошо), и я был бы удивлен, если бы он был другим для других языков. Автоматический перевод помогает пользователю понять общую идею сайта, но результат довольно болезненный ... – Falanwe

+0

Они действительные точки, основанные на большем опыте, чем у меня, но как насчет того, чтобы получить общее представление о динамическом содержимом? – Coops

3

Resx:

http://msdn.microsoft.com/en-us/library/ms227427.aspx

http://dreamdotnet.blogspot.com/2007/01/tutorial-translating-aspnet-web.html

вы можете использовать Resx файлы для нескольких языков, а также использовать ResXResourceWrite для обновления (если вы хотите, чтобы пользователи смогут обновить файлы: http://msdn.microsoft.com/en-us/library/system.resources.resxresourcewriter.aspx)

Это решение подходит только для статического контента, если вы хотите иметь возможность переводить контент из базы данных (например, если у вас есть продукты, хранящиеся в вашей базе данных, и вы хотите, чтобы описание продукта также было многоязычным) , В этом случае вам нужно будет изменить схему БД, чтобы поддерживать многоязычный контент.

PS вы можете использовать GetLocalResourceObject("key"), чтобы получать значения без использования веб-элементов управления.

Если вы используете MVC см следующий вопрос: How to localize ASP.NET MVC application?

+0

спасибо, я сделал, используя три файла .resx (.En, .De, .Fr) в папке App_globalization, и его работа прекрасна –

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