首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在asp.net中创建多语言站点

在asp.net中创建多语言站点
EN

Stack Overflow用户
提问于 2012-09-03 14:18:11
回答 2查看 671关注 0票数 3

我正在创建一个网站,将是多语言的性质。我提供了一个功能,使用户可以选择所需的语言从下拉列表中选择它。

现在我的问题从这里开始(当从下拉列表中选择一种语言时)。我目前正在实施2种语言,英语和阿拉伯语。

问题是,当用户从登录页面上的下拉列表中选择阿拉伯语时,页面将被刷新,浏览器将加载所有阿拉伯语内容。

但是..。

当我再次选择English back时,页面会刷新,但语言内容不会改变!

我已经检查了代码和值(区域性名称值)是否正确应用!!

任何关于哪里出了问题和在哪里的线索...

这是我的代码。

代码语言:javascript
运行
复制
protected override void InitializeCulture()
{
    String selectedLanguage = string.Empty;

    if (Request.Form["ddlLanguage"] != null)
    {
        selectedLanguage = Request.Form["ddlLanguage"];

        CultureInfo ci = new CultureInfo(selectedLanguage);

        Thread.CurrentThread.CurrentCulture = ci;
        Thread.CurrentThread.CurrentUICulture = ci;
    }

    base.InitializeCulture();
}

任何帮助都将是伟大的!!

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-03 17:15:46

必须在每个请求上设置Culture设置。当选择发生变化时,只设置一次Thread区域性是不够的。

为了根据用户对每个请求的选择来设置区域性,有几种可能的方法。

  1. 在(例如)母版页的Page_Init事件中设置区域性。
  2. 为内容页创建自定义基页(可能是MyBasePage)并重写该类的InitializeCulture方法。然后,让所有内容页面都派生自该类,而不是直接派生自Page.
  3. Add代码,以便在Global.asax.
  4. Probably中的适当事件中设置区域性。

无论您将使用哪种方法,用户选择的区域性都必须可用于将要在线程上设置区域性的代码。因此,当用户更改他/她的选择时,您必须将该选择保存在您可以在后续请求中访问它的位置。这也可以通过几种可能的方式来解决。以下是一些选项:

  1. 如果您使用的是cookie,则可以将选择保存到用户的profile.
  2. Alternatively中您可以将其存储在cookie中。
  3. 您可以将其存储在Session中,但这意味着每当Session重置时,用户都必须重新选择它。
  4. 您可以使用其他一些自定义方法来存储选择(数据库、磁盘上的某些文件等)。<代码>H228<代码>G229

有关如何使用Global.asaxcookie实现这一点的更详细示例,请查看over here

票数 2
EN

Stack Overflow用户

发布于 2014-01-28 07:36:54

查看这篇文章- 我们将主要看到两种方法-

方法1:使用静态页面

方法2:在运行时使用带有本地化数据的动态页面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12242873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档