C# ASP.NET数据库本地化

C# ASP.NET数据库本地化,c#,asp.net,database,localization,web,C#,Asp.net,Database,Localization,Web,我正在开发一个网站,该网站将在多个国家发行,但每个国家都应该有自己的网站。我的计划是为每个国家建立一个不同的数据库(具有相同的结构),但如何根据访问网站的国家选择使用哪个数据库呢 我见过其他使用相同原则的网站,例如,它们有一个.com和一个.co.uk地址,无论你去哪一个网站,都会提供针对你所在国家的本地化内容。这是怎么做到的?是否可以根据浏览器所在国家/地区自定义数据库连接字符串 这是我第一次制作一个多国网站,因此我试图尽可能多地了解本地化您可以在“Global.asax.cs”文件的“App

我正在开发一个网站,该网站将在多个国家发行,但每个国家都应该有自己的网站。我的计划是为每个国家建立一个不同的数据库(具有相同的结构),但如何根据访问网站的国家选择使用哪个数据库呢

我见过其他使用相同原则的网站,例如,它们有一个.com和一个.co.uk地址,无论你去哪一个网站,都会提供针对你所在国家的本地化内容。这是怎么做到的?是否可以根据浏览器所在国家/地区自定义数据库连接字符串


这是我第一次制作一个多国网站,因此我试图尽可能多地了解本地化

您可以在“Global.asax.cs”文件的“Application_Start()”方法中编写以下代码,该文件根据浏览器获取国家名称,并将“ConnectionString”存储在会话变量中

    protected void Application_Start()
    {
        string[] languages = HttpContext.Current.Request.UserLanguages;

        if (languages != null && languages.Length > 0)
        {
            string language = languages[0].ToLowerInvariant().Trim();
            CultureInfo currentCulture = CultureInfo.CreateSpecificCulture(language);

            if (currentCulture != null)
            {
                RegionInfo regionInfo = new RegionInfo(currentCulture.LCID);
            }
        }

        switch (RegionInfo.CurrentRegion.Name)
        {
            case "...":
                Session["ConnectionString"] = "...";
                break;
        }
    }

    protected void Application_End()
    {
        Session.Clear();
    }
资源文件可用于存储所有连接字符串,而不是在此处硬编码


希望这对你有帮助

我强烈建议您不要对每种语言使用不同的数据库。 事实上,这与DRY原则背道而驰,因为您必须在每个数据库中重复所有不依赖于语言的数据,如果您想更新其中一个字段,则必须在每个数据库中进行更新

我建议您使用ASP.NET的常规全局和本地资源。或者,如果您想在数据库中保留文本,我建议保留一个包含所有数据的文本

表的结构有多种类型,它们涉及多种语言,决定它们之间的关系取决于您需要多少种语言和其他因素。 这里有一个关于一些策略的好帖子:

关于自动选择语言的问题,我更喜欢根据用户的IP使用用户所在的国家,就像谷歌和其他大型网站一样。为此,我从maxmind购买了IP数据库(价格为50欧元),该数据库易于实现且非常精确


我希望这有帮助

同意第一部分,但必须补充一点,谷歌和其他公司通常将地理定位(基于IP)与本地化(基于浏览器的首选语言顺序)分开,这样你就不会在旅行时出现语言转换的情况,例如,我同意你的看法,但共享数据的数量可能只有一个表,因为每个国家都有完全不同的数据products@PetrAbdulin-是的,说得好,在我的系统中我也这么做,但我不想在这篇文章中把事情复杂化。@Mike Norgate-好的,但从我的经验来看,在现实中,数据库之间共享的东西总是更多的,你没有想到的。以产品的类别为例,每个类别都应该有一个单一的类别ID,并且类别名称的不同显示。等