我可以使用ASP.NET资源设置网页的语言但没有代码吗?

时间:2013-12-12 15:54:28

标签: asp.net localization kendo-ui resx

我有一个需要本地化的kendo单页面应用程序。我尝试使用Javascript来翻译文本部分,但是在翻译非HTML位(如模板(内部脚本标记))和属性(如“data-title”)时会变得复杂。

接下来,我尝试将扩展名更改为.aspx并使用ASP.NET资源,如下例所示:

<!-- logout -->
<div id="logout" data-role="view" data-layout="layout-logout" 
    data-title="<asp:Literal ID="Literal1" runat="server" Text="<%$ Resources:TextStrings, Logout%>" />" 
    data-before-show="myproject.logout">
<div style="padding: 50px 0; text-align: center;">
<p id="lang_LoggedOut"><asp:Literal ID="Literal2" runat="server" Text="<%$ Resources:TextStrings, Logout_Success%>" /></p>
</div>
</div>

这在某种程度上有效,因为&lt;%resources%&gt;比特被取代。

但是,我必须将登录转移到单独的.aspx页面以应用语言,登录后并发现用户文化,但之前单页应用程序加载。

登录页面调用惯例:

protected override void InitializeCulture()

设置文化,然后重定向到主应用页面。

据我所知,InitializeCulture被忽略,但页面是使用资源文件中的字符串呈现的,有时是一种语言,有时是另一种语言。

ASP.NET如何确定要应用的文化,以及如何控制该选择?

注意:

  1. 如果不这样,剑道人似乎建议每种语言都有一个页面,而这与我的DNRY倾向相反。
  2. 代码隐藏和内联代码(&lt;%Page%&gt;指令)在我的经验中与kendo不兼容。如果我理解正确的页面事件被彼此偷走了。 Kendo与MVC兼容,但我必须先学习MVC,然后获取资源文件才能与MVC一起使用。

1 个答案:

答案 0 :(得分:1)

简短的回答是肯定的。我已经看到它适用于VS2010和IIS 7.5。

  1. 没有代码的页面必须具有.aspx扩展名。
  2. 语言选择必须在另一个带有代码隐藏的.aspx页面上进行。在这里调用InitializeCulture()
  3. 在此页面中,您必须使用 Server.Transfer 转到主页面。请参阅:Server.Transfer Vs. Response.Redirect
  4. Server.Transfer将保留您设置的设置和上下文,并在用户导航页面时将语言应用于没有代码隐藏的页面。