2012-01-23 5 views
0

大半はApp_GlobalResources(明示的)であり、マスターページには、そのディレクトリ(暗黙的)にApp_LocalResourcesです。私は文化/栽培 - 自動に設定されたすべてのページで一番上の行にしなければなりません。.resxファイルでローカライズされたクライアントは、Webサイト全体をその言語で表示できるようにするにはどうすればよいですか?私の.resxファイルの

私の言語が設定されたので、Nuuxは、ドロップダウンボックスを作成してその特定のページを翻訳する方法を私に説明しました。これは素晴らしいものです。

しかし、私は、エンドユーザーが必要な場合は、ホームページ上のフラグの配列を参照するには、その彼らは手動でその言語サイト全体を表示することを選ぶことができますか?これは私がすでにやったことよりも複雑ですか、それとも単にコピーして貼り付けるだけですか?各言語用のディレクトリを作成することになりますか?どんな提案や指導も大歓迎です!

答えて

1

は、このコードDeveloping an ASP.NET page with MasterPage and Localizationを見てみましょう。あなたの必要性に合わせてください。あなたがそれをカスタマイズできなかったら。私はあなたを助けようとします。

更新:[OK]を、私たちはこれを試してみましょう: プロジェクトに新しいクラスを追加します。そしてこの

Imports Microsoft.VisualBasic 
Imports System.Globalization 
Imports System.Threading 

Public Class BasePage 
    Inherits System.Web.UI.Page 
    Protected Overrides Sub InitializeCulture() 
    'MyBase.InitializeCulture() 
    If Session("culture") Is Nothing Then 
     Session("culture") = "en-US" 'Set default language 
    End If 
    Dim cult As String = Session("culture") 
    Culture = cult 
    UICulture = cult 

    MyBase.InitializeCulture() 
End Sub 
End Class 

との内容を上書きするには、今あなたが持っているすべてのページの分離コードに移動し、継承を変更します句:あなたはマスターページ

における言語インターフェースを実装する必要があり、この時点の後

Partial Class _Default 
      Inherits BasePage 

<asp:DropDownList ID="ddlCulture" DataTextField="Name" DataValueField="Name" 
     runat="server" > 
     <asp:ListItem Value="es-MX">Spanish</asp:ListItem> 
     <asp:ListItem Value="en-US">English</asp:ListItem> 
    </asp:DropDownList> 
    <asp:Button ID="btnSelect" Text="Select" runat="server" OnClick="btnSelect_Click" /> 
    <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">   
    </asp:ContentPlaceHolder> 

マスターページの分離コードファイル内のイベントが残って:

Protected Sub btnSelect_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSelect.Click 
    Session("culture") = ddlCulture.SelectedValue 
    Response.Redirect(Request.Path) 
End Sub 

は今、あなたのウェブサイトは、私だけがあなたの好みに使用されるコントロールをカスタマイズする準備ができています。残りのもので

たちは、ユーザーの選択を保存するためにセッションを使用したセッションの有効期限が切れたとき、あなたが永続的なクッキーとセッションを交換することができるので、しかし、ユーザーがデフォルトの言語で提供されていることです。最初にこのアイデアを働かせて、私はクッキーへの変更が問題にならないことを願っています。私はただあなたがこのコンセプトを念頭に置いておきたかっただけです

+0

ありがとうNuux。私はそれでほとんど終わりました。しかし、私は理解できません - この記事では、彼らがベースページによって何を意味していますか?私は私のソリューション全体で "find"を行いました。私はベースページをどこにも持っていません。 –

+0

あなたのプロジェクトに新しいクラスを追加してBasePageという名前をつけ、すべてのページはこのクラスから継承する必要があります – Mubarek

+0

Yep - 私はそのNuuxをやっただけです。私はBaseBage.vbを入れ、それを私のapp_codeフォルダに入れます。エラー 'RequestLanguageChange_Click'は 'ASP.homepage_master'のメンバーではありません。 –

関連する問題