ASP.NET База данных Локализация - PullRequest
1 голос
/ 01 сентября 2011

Я работаю над сайтом, который будет распространяться в нескольких странах, но в каждом округе должен быть свой собственный сайт. Мой план состоит в том, чтобы иметь разные базы данных (с одинаковой структурой) для каждой страны, но как мне выбрать, какую базу данных использовать в зависимости от того, в каком округе они имеют доступ к веб-сайту.

Я видел другие сайты, которые используют тот же принцип, например, где они имеют адрес .com и .co.uk, и независимо от того, на какой сайт вы обращаетесь, всегда предоставляется контент, локализованный для вашей страны. Как это сделать? Можно ли настроить строку подключения к базе данных в зависимости от страны браузера.

Впервые я создал многонациональный сайт, поэтому стараюсь узнать как можно больше о локализации

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Я настоятельно рекомендую вам не использовать разные базы данных для каждого языка.На самом деле это будет очень сильно противоречить принципу СУХО, поскольку вам придется повторять все данные, не зависящие от языка, в каждой базе данных, и если вы хотите обновить одно из этих полей, вам придется делать это в каждой базе данных.

Я бы скорее предложил вам использовать обычные глобальные и локальные ресурсы ASP.NET.Или, если вы хотите сохранить текст в базе данных, я бы предложил сохранить единый со всеми данными.

Существует множество типов структур таблиц, которые учитывают несколько языков, и выбор между ними зависит отсколько языков вам нужно и другие факторы.здесь есть хороший пост о нескольких стратегиях: Какова лучшая структура базы данных для хранения многоязычных данных?

Что касается автоматического выбора языка, я предпочитаю использовать страну изПользователь, основанный на их IP, так же, как Google и другие крупные сайты.Для этого я купил базу данных IP у maxmind (это было 50 €), и ее было легко реализовать и очень точно.

Надеюсь, это поможет!

1 голос
/ 01 сентября 2011

Вы можете написать приведенный ниже код в методе «Application_Start ()» файла «Global.asax.cs», который получает название страны на основе браузера и сохраняет «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();
    }

Файл ресурсов может использоваться для хранения всех строк подключения вместо жесткого кодирования здесь.

Надеюсь, это поможет вам !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...