2009-07-30 7 views
0

Ich erstellte ein CustomCulture-Klassenformular CultureInfo.Benutzerdefinierte Kultur info in ASP.NET

Hier ist mein Code:

public class CustomCulture : CultureInfo 

{
private string _parent;
private Zeichenfolge _name;
private Zeichenfolge _description;

public CustomCulture(string parentCulture, string myCultureName) : base(parentCulture) 
    { 
     _parent = parentCulture; 
     _name = myCultureName; 
     _description = String.Format("custom culture({0})", _name); 
    } 
    public override string Name 
    { 
     get 
     { 
      return _parent + "-" + _name; 
     } 
    } 
    public override CultureInfo Parent 
    { 
     get 
     { 
      return new CultureInfo(_parent); 
     } 
    } 
    public override string EnglishName 
    { 
     get 
     { 
      return _description; 
     } 
    } 
    public override string NativeName 
    { 
     get 
     { 
      return _description; 
     } 
    } 

}

public partial class _Default : System.Web.UI.Page 

{ privat DefCulture.CustomCulture abc = new DefCulture.CustomCulture ("en-AU", "abc");

protected override void InitializeCulture() 
{ 
    Thread.CurrentThread.CurrentUICulture = abc; 
} 

....

Was ich erreichen möchte ist, zum Beispiel, wenn ich eine benutzerdefinierte Kultur en-AU-abc erstellen, die aktuelle Seite kann lokale Ressourcendatei Default.aspx verwenden. en-AU-abc.resx,

aber ich konnte es nicht, lädt die aktuelle Seite bekommen arbeiten immer Default.aspx.resx

+0

Was möchten Sie mit der benutzerdefinierten Kultur tun? Warum denkst du, dass du eins brauchst? –

+0

Kannst du deinen Code posten? ............ –

+0

Nur aus Neugier, welche Kultur hast du entdeckt/erfunden, die nicht angemessen durch eine der existierenden Kulturarten repräsentiert werden kann? –

Antwort

1

pb, Rex M: Zwei Kulturen nicht von .NET unterstützt, die sehr beliebt sind oft benötigt: en-ID, es-US. Ich liebe das, weil Sie diese Einschränkung von .NET nicht kennen, die Sie wählen, um eine herablassende Haltung einzunehmen - weil eindeutig eine Person, die eine Frage stellt, für die Sie keine Antwort haben, nicht wissen muss, was sie tut. Warum denken Sie, dass Microsoft die CultureAndRegionInfoBuilder-Klasse in .NET 2.0 eingeführt hat?

+0

Ich muss Ihrer Aussage zustimmen. CultureInfo ist in Sprache und Region unterteilt, einige der Kulturen sind jedoch regionalspezifisch. Japanisch ist ja. Was passiert, wenn Sie etwas anzeigen möchten, das Sprache (Japanisch) und Region (US) ist? – Jonathan

2

Versuchen Sie, die benutzerdefinierte Kultur zu installieren. Unter Microsoft Locale Builder können Sie eine MSI-Datei erstellen und sie ausführen, um Ihre benutzerdefinierte Ländereinstellung zu installieren (Vista oder höher erforderlich). Ich konnte es mit App_GlobalResources auf Vista arbeiten lassen.

BTW, benutzerdefinierte Gegenden mit Privatnutzungserweiterungen erfordern -x- zum Beispiel en-AU-x-abc. Siehe Constructing language tags

+0

Dieser Kommentar war sehr hilfreich, ich hatte diesen w3c-Leitfaden für Ländereinstellungen nicht gefunden. Ich hatte vorher mit der Idee gespielt, australische Regionen in den Staat zu bringen, wie die ISO-3166-2-Standards en-AU-VIC, en-AU-WA usw., in dem Wissen, dass ich eigentlich benutzerdefinierte Unterteilungen wie en wollte -U-WEST und en-AU-OST. Gut zu wissen, dass diese Tags als Private-Use-Tags mit dem -x-Teil hinzugefügt werden sollten. – misteraidan