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. Ein Beispiel für eine Ressource ist z. B. das Programmsymbol, das im Startmenü oder auf dem Desktop angezeigt wird.
Während das eigentliche Computerprogramm in einer Programmiersprache geschrieben ist, sind Ressourcen meist einfache Grafiken, Textdateien oder Tabellen.[1] Ein Vorteil dieser Trennung ist, dass Programm-Ressourcen auch von Menschen ohne Programmierkenntnisse erweitert oder verändert werden können. So kann man beispielsweise Linguisten an einem Wörterbuch als Ressource für ein Übersetzungsprogramm arbeiten lassen, ohne dass diese viel über das eigentliche Programm bzw. dessen Programmierung wissen müssen.
Microsoft Windows
[Bearbeiten | Quelltext bearbeiten]Identifikation einer Ressource
[Bearbeiten | Quelltext bearbeiten]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]
Typ | Format | Beschreibung |
---|---|---|
1 | Cursor-Eintrag | Mauszeiger in einer ganz bestimmten Auflösung und Farbtiefe |
2 | Bitmap | z. B. Bilder für Menüeinträge. |
3 | Icon-Eintrag | Symbole in einer ganz bestimmten Auflösung und Farbtiefe |
4 | Menü | Einträge einer Menüleiste oder eines Kontextmenüs |
5 | Dialog | Entwurf eines Fensters |
6 | String-Tabelle | Lokalisierbare 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] |
7 | Schriftartenordner | |
8 | Schriftart | Schriftschnitt |
9 | Tastenkombinationen | |
10 | RC Data | beliebige Daten |
11 | Nachrichten-Tabelle | Parametrisierbare Zeichenketten (z. B. für Fehlermeldungen). |
12 | Cursor-Gruppe | Liste mit Verweisen auf Cursor-Einträge |
13 | - | nicht belegt |
14 | Icon-Gruppe | Liste mit Verweisen auf Icon-Einträge |
15 | - | nicht belegt |
16 | Versionsinfo | Metadaten mit Programmname, Hersteller, Copyright, Versionsnummer usw., wird z. B. in den Eigenschaften der Programmdatei angezeigt |
17 | Dialog-Einbindung | z. B. Symbolleisten |
18 | - | nicht belegt |
19 | Plug & Play | |
20 | VxD | Virtuelle Gerätetreiber. |
21 | Animierter Cursor | Animierte Mauszeiger, wie beispielsweise eine Sanduhr oder ein sich drehender Kringel, um Warteprozesse zu visualisieren. |
22 | Animiertes Icon | Ähnlich wie animierte Mauszeiger, können auch Symbole animiert sein. Diese Funktion ist nur selten anzutreffen. |
23 | HTML | HTML-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.
|
24 | Manifest | Metadaten für Theming, GUI-Skalierung und Benutzerkontensteuerung |
Neben den numerischen Standardtypen existieren noch ein paar textbasierte Typen mit fester Bedeutung.
Typ | Format | Beschreibung |
---|---|---|
AVI | Animationen | Animationen 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] |
MUI | MUI-Daten | Informationen für ausgelagerte, mehrsprachige Ressourcenbibliotheken.[7] Sogenannte Satelliten-Assemblies. |
TYPELIB | Typbibliotheken | Schnittstellenbeschreibungen für COM-Elemente.[8] |
WAVE | WAVE-Sounds | Audiodateien 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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten]Im HFS Dateisystem unter Mac OS (Classic) bestehen Computerprogramme aus mehreren sogenannten Forks. Die data fork enthält das Programm selbst und die resource fork enthält Töne, Bilder, Texte und beliebige andere Elemente. Das hat den Vorteil, dass beispielsweise bei einer Lokalisierung eines Computerprogrammes zur Übersetzung nicht der eigentliche Programmcode, sondern nur die resource fork verändert werden muss.[13]
Android
[Bearbeiten | Quelltext bearbeiten]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.[14]
Typ | Format | Beschreibung |
---|---|---|
animator | Property-Animationen | XML-Dateien, mit denen alle Eigenschaften (englisch Properties) von beliebigen Objekten (z. B. Position, Größe, Drehung, Hintergrundfarbe etc.) über eine gewisse Zeitspanne hinweg verändert werden können.[15] |
anim | View-Animationen | XML-Dateien, mit denen bestimmte Eigenschaften von View-Objekten der grafischen Benutzeroberfläche über eine gewisse Zeitspanne hinweg verändert werden können. Das Verfahren eignet sich für Tweening.[16] Diese Art von Ressource ist weniger mächtig als Ressourcen vom Typ animator, dafür jedoch effizienter.[15] |
color | Farbschema | XML-Dateien mit Farbangaben für einzelne Steuerelemente in unterschiedlichen Zuständen.[17] Beispielsweise die Hintergrundfarbe für gedrückte Schaltflächen. |
drawable | Grafiken | Beliebige Raster- und Vektorgrafiken (ggf. in mehreren Auflösungen) |
mipmap | Launcher-Symbole | Icons in verschiedenen Auflösungen und Formen für App-Launcher. |
layout | Layouts | Entwürfe für die grafische Benutzeroberfläche von Aktivitäten. |
menu | Menü | XML-Dateien mit Menüeinträgen (z. B. für Kontextmenüs) |
raw | Daten | Beliebige (binäre) Daten, die als Datenstrom geladen werden können. |
values | Werte | XML-Dateien mit Name-Wert-Paaren. Jeder Eintrag ordnet einem eindeutigen Ressourcennamen einen Wert und den dazugehörigen Datentyp zu. |
xml | XML | Beliebige XML-Dateien. |
font | Schriftarten | Schriftdateien 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.[14]
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 im Querformat (englisch landscape) auf Bildschirmen mit hoher Punktdichte (240 DPI).
Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ 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).
- ↑ LCID Structure. In: learn.microsoft.com. 24. Juni 2021, abgerufen am 2. Februar 2023 (englisch).
- ↑ Jim Walker et al.: Ressourcentypen. In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
- ↑ res Protocol. In: learn.microsoft.com. 13. Juli 2016, abgerufen am 1. Februar 2023 (englisch).
- ↑ Jim Walker et al.: ACM_OPEN Nachricht. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
- ↑ Greg Knox: Windows shell32 animations. In: randomnoun.com. 27. Oktober 2013, abgerufen am 9. Mai 2022 (englisch).
- ↑ Karl Bridge et al.: MUI-Ressourcenverwaltung. In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
- ↑ Steven White, Michael Satran: Typbibliotheksanzeigen und Konvertierungstools. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
- ↑ Drew Batchelor et al.: Wiedergeben von WAVE-Ressourcen. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
- ↑ Jim Walker, Michael Satran: Informationen zu Ressourcendateien. In: learn.microsoft.com. 21. September 2022, abgerufen am 1. Februar 2023.
- ↑ Jim Walker et al.: Verwenden des Ressourcencompilers (RC-Befehlszeile). In: learn.microsoft.com. 23. September 2022, abgerufen am 1. Februar 2023.
- ↑ David Pine: Ressourcen in .NET-Apps. In: learn.microsoft.com. 10. Januar 2023, abgerufen am 1. Februar 2023.
- ↑ The Genius of Mac: ResEdit and resources. In: eclecticlight.co. 4. Juni 2016, abgerufen am 6. Mai 2024 (englisch).
- ↑ a b App resources overview. In: developer.android.com. Abgerufen am 1. Februar 2023 (englisch).
- ↑ a b Property Animation Overview. In: developer.android.com. Abgerufen am 16. Juli 2023 (englisch).
- ↑ View Animation. In: developer.android.com. Abgerufen am 16. Juli 2023 (englisch).
- ↑ Color state list resource. In: developer.android.com. Abgerufen am 1. Februar 2023 (englisch).