1. Сделайте интерфейс таким же, как и раньше, только обратите внимание на использование меток для всего текста, требующего многоязычного интерфейса
2. После завершения выберите файл в обозревателе решений и выберите «Инструменты» -> «Создать локальный ресурс
3». Вы обнаружите, что создан каталог App_LocalResources, в этом каталоге есть дополнительный файл resx; Например, если ваш файл aspx имеет имя default.aspx, он создаст файл с именем default.aspx.resx.
4. Откройте этот файл и посмотрите. Весь текст на этикетке перенесен сюда
5. Откройте исходный файл aspx и посмотрите исходный код. Вы обнаружите, что исходный код изменился:
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Default2" title="Страница без названия" Culture="auto" мета: resourceskey="PageResource1" UICulture="auto" %>
…………
<asp:Localize ID="Localize1" runat="server" мета:resourcekey="Localize1Resource1"></asp:Localize>
6. Обратите внимание: мета:resourcekey="PageResource1" и мета:resourcekey="Localize1Resource1" Это означает, что текст здесь считывается из ресурса.
7. Хорошо, теперь создайте файл ресурсов для другого языка. Это очень просто: скопируйте Default.aspx.resx и вставьте его, а затем переименуйте в Default.aspx.fr-fr.resx. Обратите внимание, что fr-fr — это имя языка, который вы хотите использовать. Если вы смотрите DVDrip, вам должно показаться, что он очень похож на файл субтитров, не так ли?
8. Некоторые люди спрашивают, откуда мне знать название этого языка? Это очень просто, откройте IE, инструменты->Свойства обозревателя->языки->добавить, это посередине поля.
9. Теперь займитесь редактированием текста других ресурсов. Откройте Default.aspx.fr-fr.resx, сравните исходное содержимое и измените его на французский.
10. На данный момент мы завершили первый этап. ASP.Net выберет отображаемый язык в зависимости от языковых предпочтений пользователя. Измените настройки в IE, измените только что упомянутое место на fr-fr, откройте эту страницу и посмотрите? Если это французский, поздравляю. Если нет, вернитесь и сделайте это снова...
11. Хорошо, далее мы хотим, чтобы пользователи могли выбирать свой собственный язык, а не автоматически. Мы используем файлы cookie для хранения выбора пользователя. На уровне приложения мы читаем этот файл cookie и устанавливаем соответствующую культуру и культуру. Конечно, при первом входе нам все равно придется прочитать настройки браузера, которые можно получить из Request.UserLanguages.
Private SupportedLanguages As String() = {"en-us", "fr-fr"}
Публичная константа LANGUAGE_COOKIE_NAME As String = "UserLanguage"
Sub Application_AcquireRequestState (отправитель ByVal как объект, ByVal e как EventArgs)
Тусклый язык Cookie как HttpCookie = Request.Cookies (LANGUAGE_COOKIE_NAME)
Тусклый язык как String = String.Empty
If (languageCookie Is Nothing) Тогда
Dim userLanguages As String() = Request.UserLanguages
Dim index As Integer
For i As Integer = 0 To userLanguages.Length - 1
index = Array.IndexOf(SupportedLanguages, userLanguages(i))
Если индекс >= 0 Тогда
язык = SupportedLanguages(индекс)
Выход Для
Конца Если
Далее
Если язык = String.Empty Тогда _
язык = SupportedLanguages(0)
Response.Cookies.Add(New HttpCookie(LANGUAGE_COOKIE_NAME, язык))
Иначе
язык = LanguageCookie.Value
End If
Тусклая культура As CultureInfo = New CultureInfo(language)
System.Threading.Thread.CurrentThread.CurrentUICulture = культура
End Sub
12. Затем нам нужна страница, которая позволяет пользователям выбирать язык. Например, мы используем для этого две кнопки. После нажатия этой кнопки мы хотим установить для этого файла cookie соответствующий язык:
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Обрабатывает Button2.Click
SetLanguage("fr-fr")
End Sub
Protected Sub SetLanguage(ByVal язык как строка)
Response.Cookies(Global.ASP.global_asax.LANGUAGE_COOKIE_NAME).Value = язык
Dim Culture As CultureInfo = New CultureInfo(язык)
System.Threading.Thread.CurrentThread.CurrentUICulture = культура
Server.Transfer( Request.Path)
Конечная подписка
Обратите внимание на Server.Transfer(Request.Path) в конце: это означает, что страница будет перечитана, чтобы на ней также отображался вновь выбранный язык.
13. Наконец, нам нужно убрать автоматический выбор ASP.Net. Удалить из Default.aspx:
Культура="авто" UICulture="авто"
14. Откройте его и посмотрите!