Подтвердить что ты не робот

Каков рекомендуемый способ создания настраиваемой культуры и связанных файлов ресурсов для конкретного клиента?

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

Для простоты здесь приведен базовый пример:
Допустим, у меня есть 2 локализованные строки (показывающие английский контент)
Pagetitle= "Hello World"
PageDescription = "Это более многословная версия Hello World!"

Я хочу их локализовать, поэтому у меня есть файлы ресурсов.

  • Strings.resx(содержит мой английский строка)
  • Strings.fr-ca.resx(содержит мои французско-канадские строки)
  • Strings.fr-ca-clientX.resx(содержит мои строки для Клиента, который Французско-канадский и очень придирчивый;) - просто шутит)

В идеале "Strings.fr-ca-clientX" может указывать только строки, которые они хотят "переопределить". Другими словами, они могут просто захотеть изменить PageTitle и продолжить использование PageDescription из файла ресурсов "fr-ca".

Итак, как мне это сделать в .NET? В идеале я бы просто создал файл resx и задал культуру в своем "Web.config", и он должен работать...

<globalization uiCulture="fr-ca-clientX" culture="fr-ca-clientX" />

Однако это не работает. "Тег содержит недопустимое значение для атрибута" культура ". Это мой первый объект.

Спасибо,
Джастин

4b9b3361

Ответ 1

public void AddCustomCulture(string cultureName, string baseCulture)
    {
        var cultureBuilder = new CultureAndRegionInfoBuilder(cultureName, CultureAndRegionModifiers.None);

        cultureBuilder.LoadDataFromCultureInfo(new CultureInfo(baseCulture));

        var region = baseCulture.Substring(3, 2);

        cultureBuilder.LoadDataFromRegionInfo(new RegionInfo(region));

        cultureBuilder.Register();
    }

Ответ 2

Вы можете создать новую культуру со следующим кодом:

        //Get culture info based on Great Britain
        CultureInfo cultureInfo = new CultureInfo( "en-GB" );
        RegionInfo regionInfo = new RegionInfo( cultureInfo.Name );

        CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = new CultureAndRegionInfoBuilder( txtCultureName.Text, CultureAndRegionModifiers.None );

        cultureAndRegionInfoBuilder.LoadDataFromCultureInfo( cultureInfo );
        cultureAndRegionInfoBuilder.LoadDataFromRegionInfo( regionInfo );

        // Custom Changes
        cultureAndRegionInfoBuilder.CultureEnglishName = txtCultureName.Text;
        cultureAndRegionInfoBuilder.CultureNativeName = txtNativeName.Text;

        cultureAndRegionInfoBuilder.Register();

Я написал сообщение о создании приложения, чтобы сделать именно это.

http://wraithnath.blogspot.com/search/label/Globalization

Ответ 3

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

Вам не нужно изменять атрибут культуры, он должен оставаться в "fr-CA", так как атрибут uiCulture отвечает за загрузку строк из ресурсов.