ASP.. NET数据库本地化
本文关键字:本地化 数据库 NET ASP | 更新日期: 2023-09-27 18:07:06
我正在制作一个将在多个国家分发的网站,但每个国家都应该有自己的网站。我的计划是有一个不同的数据库(具有相同的结构)为每个国家,但我如何选择哪个数据库使用取决于哪个国家,他们是访问网站。
我看到其他网站使用相同的原则,他们有一个。com和。co。例如,英国的地址,无论你去哪一个,你总是提供的内容本地化到你的国家。这是如何做到的呢?是否可以根据浏览器的国家/地区定制数据库连接字符串?
这是我第一次制作一个多国网站,所以我试图尽可能多地了解本地化
我强烈建议您不要为每种语言使用不同的数据库。事实上,这将非常违背DRY原则,因为你必须在每个数据库中重复所有与语言无关的数据,如果你想更新其中一个字段,你必须在每个数据库中都这样做。
我宁愿建议您使用ASP.NET的正常全局和本地资源。或者,如果你想在数据库中保留文本,我建议保留一个单一的所有数据。
有许多类型的表结构可以解释多种语言,在它们之间进行选择取决于您需要多少种语言和其他因素。这里有一篇关于几种策略的好文章:保存多语言数据的最佳数据库结构是什么?
关于自动选择语言的问题,我更喜欢根据用户的IP使用用户所在的国家,就像谷歌和其他大网站一样。为了做到这一点,我从maxmind购买了IP数据库(50欧元),这很容易实现,非常精确。
我希望这对你有帮助!
您可以在"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();
}
一个资源文件可以用来存储所有的连接字符串,而不是硬编码在这里。
希望这对你有帮助!!