tag route net form asp asp.net localization resources resx cultureinfo

asp.net - route - ¿Cuál es la forma recomendada de crear una cultura personalizada y archivos de recursos asociados para un Cliente específico?



form in asp net core (3)

Probablemente necesites crear tu propia cultura y registrarla. Encontrará un artículo de MSDN sobre ese tema here .

No es necesario modificar el atributo de cultura, debe permanecer en "fr-CA", ya que el atributo uiCulture es responsable de cargar las cadenas de los recursos.

Tengo un cliente que desea especificar su propia versión de contenido localizado para un subconjunto de mis recursos de cadena.

Por simplicidad aquí hay un ejemplo básico:
Digamos que tengo 2 cadenas localizadas (mostrando contenido en inglés)
PageTitle = "Hola Mundo"
PageDescription = "¡Esta es una versión más prolija de Hello World!"

Deseo localizarlos para tener archivos de recursos.

  • Strings.resx (contiene mi cadena en inglés)
  • Strings.fr-ca.resx (contiene mis cadenas franco-canadienses)
  • Strings.fr-ca-clientX.resx (contiene mis cadenas para un cliente que es franco-canadiense y por lo tanto muy delicado;) - solo bromeando)

Idealmente, "Strings.fr-ca-clientX" puede especificar solo las cadenas que desean "anular". En otras palabras, es posible que solo deseen cambiar el título de la página y continuar utilizando la descripción de la página desde el archivo de recursos "fr-ca".

Entonces, ¿cómo hago para esto en .NET? Lo ideal sería crear el archivo resx y especificar la cultura en mi "Web.config" y debería funcionar ...

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

Sin embargo, esto no funciona. "La etiqueta contiene un valor no válido para el atributo ''cultura''" es mi primer obstáculo.

Gracias,
Justin


Puedes crear una nueva cultura con el siguiente código:

//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();

He escrito un post sobre la creación de una aplicación para hacer precisamente eso.

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


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(); }