Проблема с загрузкой культуры из XML с использованием CultureAndRegionInfoBuilder в Windows XP - PullRequest
1 голос
/ 19 октября 2010

У меня есть веб-приложение, которое будет использовать несколько разных культур, одна из которых - es-US (испанский, США).Однако Windows XP не имеет какой-либо поддержки культуры es-US.Чтобы обойти эту проблему, я обнаружил, что можно использовать CultureAndRegionInfoBuilder.Поэтому я посмотрел в CultureAndRegionInfoBuilder и сделал следующее:

На компьютере под управлением Windows 7 я сохранил культура es-US в XML-файл следующим образом:

private static void SaveCultureToFile() {
            try {
                CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = null;
                Console.WriteLine("Saving es-US to xml disc...\n");
                cultureAndRegionInfoBuilder = new CultureAndRegionInfoBuilder("es-US", CultureAndRegionModifiers.Replacement);

                // Populate the new CultureAndRegionInfoBuilder object with culture information.
                CultureInfo ci = new CultureInfo("es-US");
                cultureAndRegionInfoBuilder.LoadDataFromCultureInfo(ci);

                cultureAndRegionInfoBuilder.Save("es-US.xml");

            }

Затем у меня естьФункция, которая читает XML и регистрирует культуру в системе следующим образом:

    private static void RegisterCultureFromDisk() {
        try {
            CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = null;
            Console.WriteLine("Loading es-US from xml...\n");
            cultureAndRegionInfoBuilder = CultureAndRegionInfoBuilder.CreateFromLdml("es-US.xml");
            Console.WriteLine("Culture is registred to the system...\n");
            cultureAndRegionInfoBuilder.Register();
            Console.WriteLine("The following culture has been registred to the system: \n");

        }

Итак, я запускаю программу с помощью метода SaveCultureToFile на компьютере с Windows 7, сохраняя культуру в файле XML.Затем я копирую файлы на компьютер с Windows XP и запускаю ту же программу, но метод RegisterCultureFromDisk ().Но программа не работает в методе CultureAndRegionInfoBuilder.CreateFromLdml ("es-US.xml"), говорящем, что:

"Название культуры es-us не поддерживается"

Вот именно поэтому я пытаюсь загрузить культуру из xml и зарегистрировать ее в системе.

Кто-нибудь знает, что я делаю неправильно, или как я могу создать базу данных?нам культура на машине с Windows XP?

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 ноября 2016

Я знаю, что это древний вопрос, но я недавно столкнулся с этой проблемой и сумел ее решить.

Оказывается, что метод CreateFromLdml можно обмануть, чтобы загрузить несуществующую культуру, если вы просто создаете временную культуру, используя имя той, которую хотите импортировать. Затем вы можете отменить регистрацию временной культуры и зарегистрировать только что загруженную.

Я создал простой инструмент командной строки для экспорта / импорта культур, который мы успешно использовали для добавления некоторых неясных пропущенных культур, которые были необходимы при развертывании новых серверов в Azure.

Если вам это нужно - доступен исходный код и более подробное описание решения здесь .

0 голосов
/ 19 октября 2010

От MSDN :

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

Я подозреваю, что это может быть причиной вашей проблемы ... У вас есть права администратора на этом компьютере?

...