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