Ressource (Software)

Die Ressourcen (englisch resource) einer Software sind die Dateien, die nicht den Ablauf (Algorithmus) des Programms festlegen, sondern das „Hintergrundwissen“ für den Ablauf speichern. Ressourcen sind beispielsweise Wörterbuch-Dateien bei Übersetzungsprogrammen oder die Listen der Namen und Eigenschaften der einzelnen Charaktere in Computerspielen. Bekanntestes Beispiel für eine Ressource ist das z. B. im Startmenü oder auf dem Desktop angezeigte Programmsymbol.

Während das eigentliche Computerprogramm in einer Programmiersprache geschrieben ist, sind Ressourcen meist einfache Grafiken, Textdateien oder Tabellen.[1] Der Vorteil ist dabei, dass sie auch von Menschen ohne Programmierkenntnisse erweitert oder verändert werden können. So kann man beispielsweise Linguisten als Fachleute an einem Wörterbuch als Ressource für ein Übersetzungsprogramm arbeiten lassen, ohne dass sie viel über das eigentliche Programm wissen müssen.

Microsoft Windows

Identifikation einer Ressource

Innerhalb eines Programms werden Ressourcen über eine Kombination aus Typ, Kennung und Sprache (siehe Locale)[2] eindeutig identifiziert. Hierbei handelt es sich jeweils um 16-Bit-Zahlen, wobei Typ und Kennung auch ein String sein können. Beim Typ stehen die Zahlen 1 bis 24 für Standardtypen:[3]

TypFormatBeschreibung
1Cursor-EintragMauszeiger in einer ganz bestimmten Auflösung und Farbtiefe
2Bitmapz. B. Bilder für Menüeinträge.
3Icon-EintragSymbole in einer ganz bestimmten Auflösung und Farbtiefe
4MenüEinträge einer Menüleiste oder eines Kontextmenüs
5DialogEntwurf eines Fensters
6String-TabelleLokalisierbare Zeichenketten. 16 Stück pro Ressource. Am häufigsten handelt es sich dabei um die Beschriftungen von Formularfeldern, aber beispielsweise auch um regionale Darstellungsformen von Datums- und Zeitangaben.[1]
7Schriftartenordner
8SchriftartSchriftschnitt
9Tastenkombinationen
10RC Databeliebige Daten
11Nachrichten-TabelleParametrisierbare Zeichenketten (z. B. für Fehlermeldungen).
12Cursor-GruppeListe mit Verweisen auf Cursor-Einträge
13-nicht belegt
14Icon-GruppeListe mit Verweisen auf Icon-Einträge
15-nicht belegt
16VersionsinfoMetadaten mit Programmname, Hersteller, Copyright, Versionsnummer usw., wird z. B. in den Eigenschaften der Programmdatei angezeigt
17Dialog-Einbindungz. B. Symbolleisten
18-nicht belegt
19Plug & Play
20VxDVirtuelle Gerätetreiber.
21Animierter CursorAnimierte Mauszeiger, wie beispielsweise eine Sanduhr oder ein sich drehender Kringel, um Warteprozesse zu visualisieren.
22Animiertes IconÄhnlich wie animierte Mauszeiger, können auch Symbole animiert sein. Diese Funktion ist nur selten anzutreffen.
23HTMLHTML-Dokumente und damit verknüpfte Dateien (CSS-Dateien, JS- und VBS-Dateien, Bilddateien, Videodateien etc.). Die Engine des Internet Explorers kann diese Inhalte über das res://-Protokoll abrufen und darstellen.[4] Ein Beispiel dafür sind die Fehlerseiten des Internet Explorers.
24ManifestMetadaten für Theming, GUI-Skalierung und Benutzerkontensteuerung

Neben den numerischen Standardtypen existieren noch ein paar textbasierte Typen mit fester Bedeutung.

TypFormatBeschreibung
AVIAnimationenAnimationen im AVI-Format.[5] Beispielsweise spielte der Dialog zur Visualisierung von Kopiervorgängen bis einschließlich Windows XP eine sich endlos wiederholende AVI-Animation ab, bei der Dateien von einem Ordner in einen anderen Ordner flattern.[6]
MUIMUI-DatenInformationen für ausgelagerte, mehrsprachige Ressourcenbibliotheken.[7] Sogenannte Satelliten-Assemblies.
TYPELIBTypbibliothekenSchnittstellenbeschreibungen für COM-Elemente.[8]
WAVEWAVE-SoundsAudiodateien im WAV-Format.[9]

Programme machen in unterschiedlichem Umfang von den Möglichkeiten Gebrauch, da die Daten auch in externen Dateien oder im Quellcode abgelegt sein können. Soll eine Programmdatei ein Symbol haben, muss sie das Icon jedoch in Ressourcen enthalten (es wird die lexikografisch erste Icongruppe-Ressource verwendet). Der in der Versionsinfo-Ressource enthaltene Programm- bzw. Firmenname wird häufig in Sicherheitssoftware angezeigt. Diese beiden Typen sind daher in nahezu jeder PE-Datei enthalten.

Resource Code

Resource Code wird als Skriptsprache bei der Entwicklung von Programmen unter OS/2 und Windows dazu genutzt, Elemente der grafischen Benutzeroberfläche und Textkonstanten zu definieren. Dadurch kann eine Trennung zwischen Programmcode und Benutzerschnittstelle erreicht werden.

RC-Datei

Eine Ressourcendatei (resource script file) enthält einen oder mehrere Ressourcenausdrücke (resource statements), welche jeweils den Typ, Kennung und den Datenwert festlegen. Es handelt sich um eine gewöhnliche Textdatei mit der Endung *.rc, wobei zusätzliche Dateien eingebunden werden können.[10]

Das folgende Beispiel zeigt eine Menü-Ressource (Typ 4). Die Menüleiste besitzt einen Eintrag namens „Datei“. Dem Eintrag auf der Menüleiste ist ein aufklappbares Untermenü (Popup) mit den Einträgen „Öffnen …“, „Drucken“ und „Beenden“ zugeordnet. Die Einträge sind jeweils mit einem horizontalen Strich getrennt. Der Menüpunkt „Drucken“ ist deaktiviert. Die Tastenkombinationen sind Teil der Beschriftung und werden vom Text mit einem Tabulatorzeichen (\t) getrennt. Die Zeichen nach einem Et-Zeichen (&) werden in der GUI unterstrichen dargestellt.

1 MENU DISCARDABLE 
BEGIN
	POPUP "&Datei"
	BEGIN
		MENUITEM "&Öffnen …\tCtrl+O",	101
		MENUITEM SEPARATOR
		MENUITEM "&Drucken\tCtrl+P",	102, INACTIVE
		MENUITEM SEPARATOR
		MENUITEM "&Beenden\tAlt+F4",	103
	END
END

Resourcecompiler

Der Ressourcencompiler übersetzt textbasierte Ressourcendateien (*.rc) in binäre Ressourcendateien (*.res). Je nachdem, ob sie im nächsten Schritt PE- (32 oder 64 Bit) oder NE-Dateien (16 Bit) hinzugefügt werden sollen, haben *.res-Dateien ein leicht anderes Dateiformat.[11]

.NET

Anwendungen, die auf .NET bzw. dem .Net-Framework beruhen, nutzen ein eigenes Format für mehrsprachige Ressourcen.[12] Das Format basiert auf XML und besitzt die Dateiendung *.resx.[1]

Mac OS

Android

Android Apps werden im APK-Format gespeichert. Dabei handelt es sich im Wesentlichen um ein ZIP-Archiv mit einer vorgegebenen Verzeichnisstruktur. Ressourcen werden dabei im res-Verzeichnis abgelegt.[13]

TypFormatBeschreibung
animatorProperty-Animationen
animView-Animationen
colorFarbschemaXML-Dateien mit Farbangaben für einzelne Steuerelemente in unterschiedlichen Zuständen.[14] Beispielsweise die Hintergrundfarbe für gedrückte Schaltflächen.
drawableGrafikenBeliebige Raster- und Vektorgrafiken (ggf. in mehreren Auflösungen)
mipmapLauncher-SymboleIcons in verschiedenen Auflösungen und Formen für App-Launcher.
layoutLayoutsEntwürfe für die grafische Benutzeroberfläche von Aktivitäten.
menuMenüXML-Dateien mit Menüeinträgen (z. B. für Kontextmenüs)
rawDatenBeliebige (binäre) Daten, die als Datenstrom geladen werden können.
valuesWerteXML-Dateien mit Name-Wert-Paaren. Jeder Eintrag ordnet einem eindeutigen Ressourcennamen einen Wert und den dazugehörigen Datentyp zu.
xmlXMLBeliebige XML-Dateien.
fontSchriftartenSchriftdateien und XML-Dateien mit Angaben zu Schriftfamilien.

Jedem dieser Verzeichnisse können noch design-, auflösungs- und sprachspezifische Qualifikatoren, jeweils mit einem Bindestrich getrennt, angehängt werden. Die Reihenfolge der Qualifikatoren ist allerdings nicht willkürlich.[13]

Beispiele für Qualifikatoren:

  • drawable
    Bilder für die Standardsprache der App. Fallback für alle nicht genauer festgelegten Bilder.
  • drawable-night
    Bilder für den Nachtmodus unabhängig von Sprache und Auflösung.
  • drawable-en
    Bilder für die Sprache Englisch, unabhängig von der Auflösung.
  • drawable-ldpi
    Bilder für Bildschirme mit niedriger Punktdichte (120 DPI), unabhängig von der Sprache.
  • drawable-zh-rCN-land-hdpi
    Bilder für vereinfachtes Chinesisch auf Bildschirmen mit hoher Punktdichte (240 DPI) im Querformat (englisch landscape).

Weblinks

Einzelnachweise

  1. a b c Nicholas Symmonds: Internationalization and Localization Using Microsoft .NET. 1. Auflage. Apress, Berkeley 2002, ISBN 1-59059-002-3, S. 5 f., 77 ff., 127 ff., doi:10.1007/978-1-4302-0827-3 (englisch).
  2. LCID Structure. In: learn.microsoft.com. 24. Juni 2021, abgerufen am 2. Februar 2023 (englisch).
  3. Jim Walker et al.: Ressourcentypen. In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
  4. res Protocol. In: learn.microsoft.com. 13. Juli 2016, abgerufen am 1. Februar 2023 (englisch).
  5. Jim Walker et al.: ACM_OPEN Nachricht. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
  6. Greg Knox: Windows shell32 animations. In: randomnoun.com. 27. Oktober 2013, abgerufen am 9. Mai 2022 (englisch).
  7. Karl Bridge et al.: MUI-Ressourcenverwaltung. In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
  8. Steven White, Michael Satran: Typbibliotheksanzeigen und Konvertierungstools. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
  9. Drew Batchelor et al.: Wiedergeben von WAVE-Ressourcen. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
  10. Jim Walker, Michael Satran: Informationen zu Ressourcendateien. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
  11. Jim Walker et al.: Verwenden des Ressourcencompilers (RC-Befehlszeile). In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
  12. David Pine: Ressourcen in .NET-Apps. In: learn.microsoft.com. 10. Januar 2023, abgerufen am 1. Februar 2023.
  13. a b App resources overview. In: developer.android.com. Abgerufen am 1. Februar 2023 (englisch).
  14. Color state list resource. In: developer.android.com. Abgerufen am 1. Februar 2023 (englisch).