ASP.. NET数据库本地化

本文关键字:本地化 数据库 NET ASP | 更新日期: 2023-09-27 18:07:06

我正在制作一个将在多个国家分发的网站,但每个国家都应该有自己的网站。我的计划是有一个不同的数据库(具有相同的结构)为每个国家,但我如何选择哪个数据库使用取决于哪个国家,他们是访问网站。

我看到其他网站使用相同的原则,他们有一个。com和。co。例如,英国的地址,无论你去哪一个,你总是提供的内容本地化到你的国家。这是如何做到的呢?是否可以根据浏览器的国家/地区定制数据库连接字符串?

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

ASP.. NET数据库本地化

我强烈建议您不要为每种语言使用不同的数据库。事实上,这将非常违背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();
    }

一个资源文件可以用来存储所有的连接字符串,而不是硬编码在这里。

希望这对你有帮助!!