Página anterior | Voltar ao início do trabalho | Página seguinte |
<asp:Menu ID="menu" runat="server" Orientation="Horizontal"> <Items> <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=1" Text="Português | "></asp:MenuItem> <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=2" Text="English | "></asp:MenuItem> <asp:MenuItem NavigateUrl="~/Exemplo.aspx?lang=3" Text="German"></asp:MenuItem> </Items> </asp:Menu> |
Referência: 3.5
O objeto label é simples e fácil de criar. Nenhum segredo. (3.6)
<asp:Label ID="lblDescricao" runat="server"></asp:Label> |
Referência: 3.6
Passando para o código .cs, usei o mesmo método mostrado anteriormente, porém feito para a página exemplo.aspx com algumas alterações.
//ímportes using System.Globalization; using System.Threading; |
Referência: 3.7
A referência 3.7 mostra os importes feitos para uso de métodos específicos.
Dentro do método InitializeCulture(), usei uma função para verificar o tipo de parâmetro enviado onde define a cultura que deve ser criada e em seguida mostrar ao usuário final. (3.8)
protected override void InitializeCulture() { if (Request.Params["lang"] != null) { String selectedLanguage = string.Empty; switch (Request.Params["lang"]) { case "1": selectedLanguage = "pt-BR"; break; case "2": selectedLanguage = "en-US"; break; case "3": selectedLanguage = "de-CH"; break; } UICulture = selectedLanguage; Culture = selectedLanguage;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
} base.InitializeCulture(); } |
Referência: 3.8
Explicação:
Logo no início do método, verifico se existe algum valor para o parâmetro "lang" enviado pela página via querystring. Se estiver diferente de nulo faço uma verificação usando switch case onde é verificado o valor atribuindo a variável global selectedLanguage declarada anteriormente.
Usei as mesmas culturas. (3.9)
Português: pt-BR
Inglês: en-US
Alemão: de-CH |
Referência: 3.9
Se o valor for igual a 1, atribuo a variável o valor português, sendo 2 atribuo o valor inglês e por final sendo 3 atribuo o valor alemão.
O restante do código foi explicado nos itens anteriores.
No método Page_Load apenas atribuo ao label da tela o valor do recurso. (4.0)
protected void Page_Load(object sender, EventArgs e) { lblDescricao.Text = Resources.ResourceKey.Label; } |
Referência: 4.0
Segue o código da página Exemplo.aspx total. (4.1)
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
//ímportes using System.Globalization; using System.Threading;
public partial class Exemplo : System.Web.UI.Page { protected override void InitializeCulture() { if (Request.Params["lang"] != null) { String selectedLanguage = string.Empty; switch (Request.Params["lang"]) { case "1": selectedLanguage = "pt-BR"; break; case "2": selectedLanguage = "en-US"; break; case "3": selectedLanguage = "de-CH"; break; } UICulture = selectedLanguage; Culture = selectedLanguage;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
} base.InitializeCulture(); }
protected void Page_Load(object sender, EventArgs e) { lblDescricao.Text = Resources.ResourceKey.Label; } } |
Referência: 4.1
Referência: 4.2
No início da página, o recurso já traz a língua default do cliente, ou seja, português. Cliquei no menu English passando o parâmetro 2. Veja o resultado. (4.3)
Referência: 4.3
E para finalizar, cliquei na opção do menu German onde todo valor da página foi alterado para alemão. (4.4)
Referência: 4.4
Bom, fico por aqui.
Espero ter ajudado a todos.
Qualquer dúvida, favor entrar em contato pelo e-mail: mauricio[arroba]aspneti.com.
Mauricio Junior - mauricio[arroba]ascompras.com
Página anterior | Voltar ao início do trabalho | Página seguinte |
|
|