Sql-und-Xml - Home

Server-Daten: Die Web - Datenbank als CRM - Lösung

Kultur-spezifische Ausgaben

Culture-Info: Detailinformationen zu den verschiedenen neutralen und spezifischen Kulturen

Innerhalb des Projektes server-daten kann auf Ausgabeseiten für Datums-, Zeit- und Zahlausgaben das Ausgabeformat festgelegt werden. Die Interpretation des festgelegten Musters hängt anschließend jedoch entweder von der Spracheinstellung des Clientbrowsers ab oder es wird eine Ausgabekultur fixiert, so daß alle Leser dieselbe Darstellung erhalten. Einige hierbei genutzte, allgemeine Prinzipien werden hier vorgestellt. Ferner finden sich hier die normativen Listen der erlaubten neutralen und spezifischen Kulturen. Erstere beschreiben - vereinfacht ausgedrückt - verschiedene Sprachen, zweitere ermöglichen die Berücksichtigung regionaler Besonderheiten und Regeln. Die meisten der hier mitgeteilten Informationen sind auch für Formatierungen innerhalb von Excel oder Access gültig. In Excel sind dies Formatangaben für Zellen (Format - Zellen - Zahlen - Kategorie: Benutzerdefiniert). In Access kann einzelnen Spalten bei der Erstellung von Tabellen (Spalten - Format) ein solches benutzerdefiniertes Format zugeordnet werden. Hier hängt die Ausgabekultur von dem gewählten Eintrag in der Systemsteuerung ab.

Falls Programmierer diese Quelle nutzen möchten, können sie die folgende Xml-Quelle herunterladen: sd-culture-info.xml (Datei darf verwendet und - in unveränderter Form - kostenlos weitergegeben werden - 12/2007).

1. Spracheinstellungen, neutrale und spezifische Kulturen

Sowohl aktuelle als auch ältere Browser kennen einen Menüpunkt, der Spracheinstellungen ermöglicht. Beim InternetExplorer finden sich diese unter Extras - Internetoptionen - Allgemein - Sprachen, beim FireFox unter Tools - Optionen - Allgemein (General) - Sprachen. Dort können einzelne Sprachen ausgewählt, der Liste hinzugefügt oder von dieser entfernt und geordnet werden. Mit dem Auswählen einer Sprache in einem dieser Menüs beeinflußt der Nutzer nicht die Menüsprache seines Browsers, sondern sendet die von ihm festgelegten Sprachkürzel bei jedem Abruf einer Webseite mit. Der Nutzer informiert den Webserver über seine 'bevorzugte Sprache', server-daten beachtet den dort als erste Sprache gelisteten Ausdruck für alle Sprachverzweigungen.

Die Kulturen sind in zwei Gruppen geordnet: Neutrale Kulturen (en, de, fr) fassen einige grundlegende Informationen zu einer Kultur zusammen. Ihnen ist eine Sprache, jedoch kein Land bzw. keine Region zugeordnet. Eine spezifische Kultur ist einer neutralen Kultur untergeordnet, übernimmt von dieser die Sprache und besitzt selbst einen Bezug auf ein Land bzw. auf eine Region. Zu jeder neutralen Kultur gibt es mindestens eine spezifische Kultur (en-US, en-GB). Verschiedene spezifische Kulturen nutzen in bezug auf Detaildarstellungen verschiedene Formate und können sich in bezug auf Datums- und Zeitformate, Währungen und anderen numerischen Darstellungen voneinander unterscheiden. Zu jeder neutralen Kultur gibt es in der hiesigen Darstellung eine eigene Seite, die über das links notierte Menü erreichbar ist. Der Dateiname ohne Endung ist gleich dem Namen der neutralen Kultur, so daß diese über den allgemeinen Pfad /server-daten/culture-info/<Name der Kultur>.html adressiert werden kann. Detailinformationen zu den spezifischen Kulturen sind auf der Seite der zugeordneten neutralen Kultur zu finden.

2. Hinweise zu den folgenden Auflistungen der neutralen Kulturen

Zu jeder neutralen Kultur gibt es eine eigene Seite mit vier Unterpunkten. Die Grunddaten nennen den in Ausgabeseiten verwendbaren Namen, den englischen Namen, den LCID ('culture identifier'), welcher in den meisten Fällen auf den korrespondierenden 'National Language Support (NLS) locale identifier' abgebildet wird sowie ISO- und Windows-API-Bezeichner für diese Kultur. Der LCID taucht innerhalb von Softwareinstallationen als Name des Unterordners für die sprachabhängigen Hilfstexte auf. Es folgt die Liste der spezifischen Kulturen zu dieser neutralen Kultur, ausgegeben sind die verwendbaren Kurznamen, der englische Name, LCID und der ThreeLetterWindowsLanguageName. Die ISO-Bezeichnungen sind nur für neutrale Kulturen definiert. Die folgenden Auflistungen von Datums- und Zeitformaten sowie von Numerischen Formaten sind zweigeteilt: Zunächst werden jene Eigenschaften gelistet, welche für alle spezifischen Kulturen denselben Wert haben. Anschließend folgen jene Eigenschaften mit verschiedenen Werten innerhalb dieser spezifischen Kulturen. Die Aufteilung in mehrere Tabellen erfolgt nur der Übersicht willen und hat keine inhaltliche Bedeutung, theoretisch würde eine (breite) Tabelle mit den spezifischen Kulturen in der ersten Spalte und den Eigenschaften als Spaltenüberschriften genügen. Bei neutralen Kulturen, für welche es nur eine einzige spezifische Kultur gibt, entfällt diese Zweiteilung. Hier genügt jeweils eine Tabelle für Datums-/Zeit- und für numerische Formate.

2.1 Eigenschaften von Datums- und Zeitformaten

Die folgende Tabelle erläutert die kulturspezifischen Eigenschaften von Datums- und Zeitformaten. Die markierten Kurzausdrücke bezeichnen die vordefinierten Standardmuster für Datums-/Zeitformate, wie sie in der zugeordneten Tabelle der Formatbezeichner für Datum- und Uhrzeit definiert sind.

EigenschaftErläuterung
AbbreviatedDayNamesAuflistung der abgekürzten Namen der Wochentage
AbbreviatedMonthNamesAuflistung der abgekürzten Namen der Monate
AMDesignatorBezeichner für Zeitangaben vor 12:00 mittags (ante meridiem - a.m.)
PMDesignatorBezeichner für Zeitangaben von 12:00 - 24:00 (post meridiem - p.m.)
DateSeparatorTrenner für Datumskomponenten Tag/Monat/Jahr
DayNamesListe der Namen der Wochentage
FirstDayOfWeekVon Sonntag (= 0) bis Samstag (= 6) ist jedem Wochentag eine Zahl zugewiesen. Die Eigenschaft legt fest, welcher Tag als erster Tag der Woche betrachtet wird: 0 - die Woche beginnt mit dem Sonntag, 1 - die Woche beginnt mit dem Montag.
FullDateTimePatternFormatmuster für den langen Datums- und Zeitwert (F)
LongDatePatternFormatmuster für das lange Datum (D)
LongTimePatternFormatmuster für den langen Zeitwert (T)
MonthDayPatternFormatmuster für die Kombination Monat/Tag (m, M)
MonthNamesListe der Monatsnamen
RFC1123PatternFormatmuster gemäß der RFC-Spezifikation 1123 (r, R)
ShortDatePatternFormatmuster für den kurzen Datumswert (d)
ShortTimePatternFormatmuster für den kurzen Zeitwert (t)
SortableDateTimePatternFormatmuster für eine sortierbare Darstellung von Datum und Uhrzeit (s)
TimeSeparatorZeichen, das Zeitangaben (Stunden, Minuten, Sekunden) trennt
UniversalSortableDateTimePatternFormatmuster für die universell sortierbare Datums/Uhrzeit-Darstellung (u, U)
YearMonthPatternFormatmuster für die Darstellung von Jahr und Monat (y, Y)

2.2 Eigenschaften von numerischen Formaten

EigenschaftErläuterung
CurrencyDecimalDigitsAnzahl der in Währungsangaben verwendeten Dezimalstellen
CurrencyDecimalSeparatorDezimaltrennzeichen in Währungsangaben
CurrencyGroupSeparatorGruppentrennzeichen für Währungsangaben
CurrencyGroupSizesZahl der Ziffern, nach welchen das Gruppentrennzeichen eingefügt wird
CurrencyNegativePatternFormatmuster für negative Währungsangaben
CurrencyPositivePatternFormatmuster für positive Währungsangaben
CurrencySymbolWährungssymbol
NaNSymbolZeichenfolge für den IEEE-NaN-Wert (Not a Number)
NegativeInfinitySymbolZeichenfolge für den Wert 'minus unendlich'
NegativeSignZeichen dafür, daß eine Zahl negativ ist
NumberDecimalDigitsAnzahl der in numerischen Werten verwendeten Dezimalstellen
NumberDecimalSeparatorDezimaltrennzeichen für numerische Werte
NumberGroupSeparatorGruppentrennzeichen für numerische Werte
NumberGroupSizesZahl der Ziffern für numerische Werte, nach welchen das Gruppentrennzeichen eingefügt wird
NumberNegativePatternFormatmuster für negative numerische Ausdrücke
PercentDecimalDigitsAnzahl der in Prozentangaben verwendeten Dezimalstellen
PercentDecimalSeparatorDezimaltrennzeichen für Prozentangaben
PercentGroupSeparatorGruppentrennzeichen für Prozentangaben
PercentGroupSizesZahl der Ziffern für Prozentangaben, nach welchen das Gruppentrennzeichen eingefügt wird
PercentNegativePatternFormatmuster für negative Prozentangaben
PercentPositivePatternFormatmuster für positive Prozentangaben
PercentSymbolProzentsymbol
PerMilleSymbolPromillesymbol
PositiveInfinitySymbolZeichenfolge für den Wert 'plus unendlich'
PositiveSignZeichen dafür, daß eine Zahl positiv ist

3. Eine Anmerkung zum Verhältnis der verschiedenen kulturspezifischen Werkzeuge

Die Tabellen Formatzeichen für Datum und Zeit sowie Formatzeichen für Zahlen definieren eine winzige Programmiersprache, um Datums-, Zeit- und numerische Formate festzulegen. Sie enthalten zwei Typen von Token: (I) Ausdrücke wie 'd', 'dd', 'yyyy' oder '#' werden später durch korrespondierende Zahlen oder Namen (Tage, Monate) ersetzt. (II) Ausdrücke wie '/' (Datumstrenner), '.' (Dezimaltrennzeichen) oder '%' (Prozentplatzhalter) werden später durch korrespondierende Werte aus der Kultur ersetzt, in welcher die Ausgabe erfolgen soll. Ferner gibt es vordefinierte Formatzeichen (d, D, F, G usw.) und zu diesen korrespondierende Beschreibungen (ShortDatePattern, LongDatePattern, FullDateTimePattern, General).

Jede spezifische Kultur belegt (1) alle Token vom zweiten Typ mit eigenen Werten und definiert (2) zu jedem vordefinierten Formatzeichen ein Muster in der 'winzigen Programmiersprache'. Hierbei werden (theoretisch) nur Token vom Typ I/II verwendet, nicht deren spätere kulturspezifische Ersetzung. (3) beinhaltet jede Kultur Listen von Namen (Tages- und Monatsnamen, Kurzversionen). Die Unterseiten zu diesem Kapitel listen zu allen speziellen Kulturen diese Werte auf, so daß aus diesen Darstellungen abgeleitet werden kann, mit welcher Ausgabe bei der Verwendung eines Musters zu rechnen ist, ohne diverse Kulturen einzeln durchprüfen zu müssen.

Bei der Ausgabe interagieren drei Komponenten: (i) Das konkret gewählte Formatmuster, (ii) der auszugebende Wert, (iii) die gewählte Ausgabekultur. Handelt es sich bei dem Formatmuster um ein vordefiniertes Formatzeichen, so wird es zunächst durch die kulturabhängige Langdarstellung ersetzt. Handelt es sich um ein benutzerdefiniertes Muster, so liegt es bereits in der Langdarstellung vor. Anschließend werden alle (I)-Token durch korrespondierende Zahlen bzw. Namen ersetzt sowie alle (II)-Token durch ihre Belegung innerhalb dieser Kultur.

4. Quelle der Daten

Die Unterseiten wurden erzeugt, indem aus der Liste aller in .NET definierten Kulturen (erstellbar mit CultureInfo.GetCultures(CultureTypes.AllCultures)) zunächst jede Kultur in eine einfache Xml-Darstellung transferiert wurde. Das so erzeugte Xml-Quelldokument wird anschließend für jede neutrale Kultur einmal aufgerufen und mit einer Xsl-Transformation in die Xml-Domainversion (/xml/server-daten/culture-info/<culture-name>.xml) transferiert. Aus dieser wird schließlich mittels des üblichen Xml-Batch-Converter die Html-Version (/server-daten/culture-info/<culture-name>.html) erstellt.

Die Ermittlung, ob alle spezifischen Kulturen nur einen einzigen Wert haben, so daß sie in die Tabelle Werte, die für alle spezifischen Kulturen einheitlich sind aufgenommen wird, wurde ausschließlich mit Xsl-Techniken ermittelt. Hierfür genügt es, die Zahl der spezifischen Kulturen zur aktuellen neutralen Kultur mittels count(<Knotenmenge>) zu zählen und diese mit der Zahl der spezifischen Kulturen zu vergleichen, deren Wert zu einem Attribut mit dem Wert der ersten spezifischen Kultur übereinstimmt.

5. Nutzung von neutralen und spezifischen Kulturen innerhalb von server-daten

5.1 Nutzung der Kulturen im Rahmen der Definition von Tabellen

Zunächst können zu einzelnen Spalten zusätzliche Multilang-Verzweigungen (mehrsprachliche Spalten) erstellt werden. Die Hauptspalte wird bsp. mit deutschen Beschriftungen gefüllt, Multilang-Spalten ergänzen diese um englische Einträge. Wird zu einer externen Sprache (hier: englisch) nur eine einzige Multilang-Spalte definiert, so sollte diese als 'en' (und nicht als 'en-GB', 'en-US' o.ä.) festgelegt werden. Damit erhalten alle Leser mit Einstellungen 'en-GB', 'en-US' und 'en' diesen Eintrag. Wird eine Spalte als 'en-US' definiert und fehlen Multilang-Verzweigungen für 'en-GB' und 'en', so wird an alle Leser mit 'en-GB' bzw. 'en' der (bsp. deutsche) Grundtext ausgeliefert. Nur in wenigen Fällen, in welchen Daten für verschiedene spezifische Kulturen verschieden sind, sollten Multilang-Spalten für spezifische Kulturen erstellt werden.

5.2 Nutzung der Kulturen innerhalb von Ausgabeseiten

  1. Sind Multilang-Spalten definiert und mit Werten zu aktuellen Datensätzen gefüllt, so werden diese im Rahmen der Standard-Tabellenbearbeitung bei passender Spracheinstellung ausgeliefert. Dies gilt für die Bearbeitung von Zellen, für die Sortierung sowie für die in Relationen angezeigten Einträge, falls die Relationen einen Ausdruck verwenden, der Spalten mit Multilang-Verzweigungen nutzt. All diese Dinge sind vom Ersteller der Ausgabeseite nicht beeinflußbar und werden serverseitig anhand der Client-Sprache verarbeitet.
  2. sd:choose-lang: Dieses Element kann in Ausgabeseiten genutzt werden, um verschiedenen Lesern verschiedene Texte auszugeben. Jedes sd:choose-lang-Element kann beliebig viele sd:span-Elemente enthalten, deren sd:lang-Attribute mit neutralen oder spezifischen Kulturen belegt werden dürfen. Zur Laufzeit wird geprüft, ob es ein passendes sd:span-Element gibt, falls ja, wird dessen Content ausgegeben. Hierbei wird die Hierarchie 'en-US', 'en' berücksichtigt. Für reine Sprachalternativen (englisch, französisch, deutsch) genügen neutrale Kulturen als Attributwerte. Nur falls innerhalb einer Sprache unterschiedliche Informationen ausgeliefert werden sollen, werden die speziellen Kulturen benötigt. Diese Technik ist immer auf die aktuelle Ausgabeseite beschränkt und erlaubt die Anpassung von 'begrüßenden Texten' und ähnlichem.
  3. Bei der Erstellung von Ausgabeseiten wird empfohlen, Datums-, Zeit- und numerische Formate kulturabhängig auszugeben, sie also in Abhängigkeit von der gewählten Sprache des Clientbrowsers zu generieren. Denn in der Regel ist es für Leser einer Seite schwierig, bsp. andersartig formatierte Datumsangaben zu identifizieren (10/26/2005 versus 26.10.2005). Wird diese Ausgabe in Abhängigkeit von der Browsereinstellung erzeugt, so erhält jeder Leser die für ihn gewohnte Darstellung. Diese Einstellung wird auch bei Dateneingaben berücksichtigt, so daß ein Leser, welcher 10/26/2005 liest, diesen Wert bsp. auf 10/25/2005 ändern und korrekt speichern kann.

    Die kulturabhängige Verarbeitung ist die Standardeinstellung bei Ausgabeseiten. Der Ersteller der Ausgabeseite schränkt diese ein, falls er Datums- und Zeitangaben absolut definiert, anstatt auf die vordefinierten Muster zurückzugreifen oder falls er in selbstdefinierten Mustern Trennzeichen mit '\' maskiert, so daß sie absolut ausgegeben werden. Die Einschränkung ist offenkundig, falls die Ausgabekultur mithilfe des sd:culture-Attributes fixiert wird. Dieses Attribut verarbeitet ausschließlich spezifische Kulturen. Denn nur zu einer spezifischen Kultur sind Datums-, Zeit- und Nummernformate definiert. Dieses Attribut kann deshalb nicht eine neutrale Kultur wie 'en', 'fr' erhalten, sondern muß immer mit spezifischen Kulturen wie 'en-GB', 'en-US' oder ähnlichem belegt werden.

© 2003-2014 Jürgen Auer, Berlin.