diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2005-07-16 14:35:25 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2005-07-16 14:35:25 +0000 |
commit | f4ecaaed31db0aa5d71c05dd3f04dc2833ad29fe (patch) | |
tree | 362b09da27833d63b3ae7b8d9fd14a4b56e92243 | |
parent | 81a39c30755e9bb61a10a0edb16fec8996100024 (diff) | |
download | netsurf-f4ecaaed31db0aa5d71c05dd3f04dc2833ad29fe.tar.gz netsurf-f4ecaaed31db0aa5d71c05dd3f04dc2833ad29fe.tar.bz2 |
[project @ 2005-07-16 14:35:20 by jmb]
- Convert Messages files to UTF-8 encoding.
- Replace local_encoding_name() with platform specific
utf8_[to,from]_local_encoding() functions - this allows mapping of 8bit
characters 0x80->0x9f (inclusive).
- All text that is rendered by the RISC OS Wimp is now converted to the system
local encoding prior to display.
- Lose the horrendous hack that was messages_get_key()
- Menu text is now translated to system local encoding on the fly (if necessary)
rather than at menu creation time. This allows the system alphabet to change
under us and our menus remain usable.
- The Languages menu now lists all languages that are present in the LangNames
file. In the case of selecting the UI language, those languages which are not
available are shaded.
svn path=/import/netsurf/; revision=1796
-rw-r--r-- | !NetSurf/Resources/LangNames | 23 | ||||
-rw-r--r-- | !NetSurf/Resources/de/Messages | 680 | ||||
-rw-r--r-- | !NetSurf/Resources/en/Messages | 459 | ||||
-rw-r--r-- | !NetSurf/Resources/fr/Messages | 765 | ||||
-rw-r--r-- | !NetSurf/Resources/nl/Messages | 468 | ||||
-rw-r--r-- | desktop/browser.c | 18 | ||||
-rw-r--r-- | gtk/gtk_gui.c | 32 | ||||
-rw-r--r-- | riscos/dialog.c | 62 | ||||
-rw-r--r-- | riscos/download.c | 51 | ||||
-rw-r--r-- | riscos/gui.h | 2 | ||||
-rw-r--r-- | riscos/help.c | 24 | ||||
-rw-r--r-- | riscos/menus.c | 751 | ||||
-rw-r--r-- | riscos/save.c | 33 | ||||
-rw-r--r-- | riscos/ucstables.c | 281 | ||||
-rw-r--r-- | riscos/wimp.c | 78 | ||||
-rw-r--r-- | riscos/wimp.h | 2 | ||||
-rw-r--r-- | riscos/window.c | 23 | ||||
-rw-r--r-- | utils/messages.c | 19 | ||||
-rw-r--r-- | utils/messages.h | 1 | ||||
-rw-r--r-- | utils/url.c | 3 | ||||
-rw-r--r-- | utils/utf8.h | 6 | ||||
-rw-r--r-- | utils/utils.h | 1 |
22 files changed, 2709 insertions, 1073 deletions
diff --git a/!NetSurf/Resources/LangNames b/!NetSurf/Resources/LangNames index d4791fa4f..de7c76c65 100644 --- a/!NetSurf/Resources/LangNames +++ b/!NetSurf/Resources/LangNames @@ -1,24 +1,29 @@ +# Language names file for NetSurf +# +# IMPORTANT! - If you add/remove a language from this file, the +# languages menu definition in menus.c _must_ be updated correspondingly. +# lang_af:Afrikaans lang_bm:Bamanankan -lang_ca:Català +lang_ca:Català lang_cs:Cestina lang_cy:Cymraeg lang_da:Dansk lang_de:Deutsch lang_en:English -lang_es:Español +lang_es:Español lang_et:Eesti lang_eu:euskera lang_ff:Fulfulde lang_fi:suomi -lang_fr:français +lang_fr:français lang_ga:Gaeilge lang_gl:Galego lang_ha:Hausa lang_hr:Hrvatski lang_hu:Magyar lang_id:Bahasa indonesia -lang_is:Íslenska +lang_is:Ãslenska lang_it:italiano lang_lt:Lietuviskai lang_lv:Latviesu @@ -27,9 +32,9 @@ lang_mt:Malti lang_nl:Nederlands lang_no:Norsk lang_pl:Polski -lang_pt:português +lang_pt:português lang_rn:Kirundi -lang_ro:Româna +lang_ro:Româna lang_rw:Kinyarwanda lang_sk:Slovencina lang_sl:Slovenscina @@ -38,10 +43,10 @@ lang_sq:shqip lang_sr:Srpski lang_sv:svenska lang_sw:Kiswahili -lang_tr:Türkçe +lang_tr:Türkçe lang_uz:o'zbek -lang_vi:Tiêng Viêêt +lang_vi:Tiêng Viêêt lang_wo:Wolof lang_xs:isiXhosa -lang_yo:Yorùbá +lang_yo:Yorùbá lang_zu:isiZulu diff --git a/!NetSurf/Resources/de/Messages b/!NetSurf/Resources/de/Messages index 694345add..81033b3ba 100644 --- a/!NetSurf/Resources/de/Messages +++ b/!NetSurf/Resources/de/Messages @@ -1,142 +1,258 @@ # German messages for NetSurf +# ============================ +# +# Description +# ----------- +# +# This file contains lines of colon separated key-value pairs in the format: +# +# Key:Value +# +# Contents of Key _must_ be representable in the US-ASCII character set and +# should not be modified for translation purposes. +# +# Values must be UTF-8 encoded strings. When these strings are displayed in +# NetSurf's user interface, they are converted to the system's local character +# set. As a result of this conversion process, unrepresentable characters are +# stripped from the displayed string. +# +# Blank lines and lines starting with a # character are treated as comments and +# ignored. +# + # Menus +# ===== +# +# This section defines the title and entry text for NetSurf's menus. +# + +# Iconbar menu +# NetSurf:NetSurf Info:Info -Open:Öffnen -OpenURL:Öffne URL +Open:Öffnen AppHelp:Hilfe... F1 Choices:Einstellungen... Quit:Beenden +# Iconbar -> Open menu +# +OpenURL:Öffne URL + +# Main menu +# Page:Seite +Object:Objekt +Navigate:Navigieren +View:Anzeige +Utilities:Werkzeuge +Help:Hilfe + +# Main -> Page menu +# PageInfo:Info ^F1 Save:Speichern F3 -SaveComp:Alles speichern ‹F3 +SaveComp:Alles speichern ⇑F3 Export:Exportieren -ExportAs:Exportieren als -Draw:Draw ‹^F3 -Text:Text ^F3 SaveURL:URL speichern Print:Drucken DRUCK NewWindow:Neues Fenster ^N ViewSrc:Quellcode... F8 -Object:Objekt -ObjInfo:Info -ObjSave:Speichern -ObjReload:erneut laden + +# Main -> Page -> Export menu +# +Draw:Draw ⇑^F3 +Text:Text ^F3 + +# Main -> Page -> Save location menu +# URI:Acorn URI URL:ANT URL LinkText:Text -Selection:Auswahl -Copy:Auswahl kopieren ^C -SelectAll:Alles auswählen ^A -Clear:Auswahl aufheben ^Z -Navigate:Navigieren + +# Main -> Object menu +# +ObjInfo:Info +ObjSave:Speichern +ObjReload:erneut laden + +# Main -> Object -> Export menu +# +Sprite:Sprite + +# Main -> Navigate menu +# Home:Homepage -Back:Eine Seite zurück +Back:Eine Seite zurück Forward:Eine Seite vor Reload:Seite erneut laden ^F5 Stop:Ladevorgang abbrechen -View:Anzeige -ScaleView:Vergrößerung F11 + +# Main -> Display menu +# +ScaleView:Vergrößerung F11 Images:Bilder +Toolbars:Anzeigen und Leisten +Render:Rendern +OptDefault:als Standardeinstellung + +# Main -> Display -> Images menu +# ForeImg:Vordergrundbilder BackImg:Hintergrundbilder -AnimImg:Animationen -DitherImg:Bilder dithern -FilterImg:Bilder weichzeichnen -Toolbars:Anzeigen und Leisten + +# Main -> Display -> Toolbars menu +# ToolButtons:Knopfgrafiken ToolAddress:Adressleiste -ToolThrob:Ladeaktivität +ToolThrob:Ladeaktivität ToolStatus:Statusanzeige -Render:Rendern -RenderText:Text/Hintergrund Übergang weich + +# Main -> Display -> Render menu +# RenderAnims:Animationen zwischenspeichern RenderAll:Alles zwischenspeichern -OptDefault:als Standardeinstellung + +# Main -> Utilities menu +# +Hotlist:Hotlist +History:History +FindText:Text suchen F4 Window:Fenster -WindowSave:aktuelle Fensterposition speichern -WindowStagr:neue Fenster versetzen -WindowSize:Fenstergröße beibehalten -WindowReset:Fensterposition zurücksetzen -Utilities:Werkzeuge -HotlistAdd:Eintrag hinzufügen + +# Main -> Utilities -> Hotlist menu +# +HotlistAdd:Eintrag hinzufügen HotlistShow:Hotlist zeigen... F6 -History:History + +# Main -> Utilities -> History menu +# HistLocal:History (lokal) zeigen... F7 HistGlobal:History (global) zeigen... ^F7 -FindText:Text suchen F4 -Help:Hilfe + +# Main -> Utilities -> Window menu +# +WindowSave:aktuelle Fensterposition speichern +WindowStagr:neue Fenster versetzen +WindowSize:Fenstergröße beibehalten +WindowReset:Fensterposition zurücksetzen + +# Main -> Help menu +# HelpContent:Inhalt F1 HelpGuide:Handbuch HelpInfo:Nutzerinformation +HelpAbout:Ãœber NetSurf HelpInter:interaktive Hilfe -HelpAbout:Über NetSurf -Languages:Language +# Toolbar menu +# +Toolbar:Symbolleiste +EditToolbar:Symbolleiste bearbeiten + +# Generic tree menus (currently Hotlist and Global history) +# +Selection:Auswahl +SelectAll:Alles auswählen ^A +Clear:Auswahl aufheben ^Z + +# Selection Menu +# +Edit:Bearbeiten +Launch:Öffnen RETURN +Delete:Löschen ^X +ResetUsage:Statistik zurücksetzen + +# Hotlist/Global history menu +# +New:Neu +Expand:Expandieren +Collapse:Zusammenfalten + +# New hotlist entry menu +# +Folder:Verzeichnis +Link:Eintrag + +# Tree expand/collapse menu +# +All:Alles +Folders:Verzeichnisse +Links:Einträge + +# Other menus +# +# URL suggestion menu +URLSuggest:Aktuelle URL's +# Menus within the choices system +# +# Browser pane +Languages:Language +# +# Network pane ProxyAuth:Authentifizierung ProxyNone:Keine ProxyBasic:Basic ProxyNTLM:NTLM - -# Image redraw style +# +# Fonts pane +Fonts:Schriften +# +# Images pane Display:Ausgabe ImgStyle0:RISC OS nutzen ImgStyle1:Direktausgabe ImgStyle2:Dithern ImgStyle3:Error-Diffusion -# Toolbar menus -URLSuggest:Aktuelle URL's -Toolbar:Symbolleiste -EditToolbar:Symbolleiste bearbeiten -# Font menu -Fonts:Schriften +# Treeview interface tokens +# ========================= +# +# This section contains tokens which are used in the treeview +# component. (For example, in the main hotlist/global history windows) +# + +# Tree URL text +# +TreeAdded:eingetragen am: %s +TreeLast:letzter Besuch: %s +TreeVisited:gesehen am: %s +TreeVisits:Besuche gesamt: %i +TreeUnknown:Unbekannt +TreeImport:Importierte URL +TreeNewFolder:Neues Verzeichnis -# Hotlist menus -Hotlist:Hotlist -New:Neu -Expand:Expandieren -Collapse:Zusammenfalten -All:Alles -Folders:Verzeichnisse -Folder:Verzeichnis -Links:Einträge -Link:Eintrag -SaveSelect:Sichern -Launch:Öffnen RETURN -Edit:Bearbeiten -Delete:Löschen ^X -ResetUsage:Statistik zurücksetzen + +# Hotlist user interface tokens +# ============================= +# +# This section contains tokens which are used in various parts of +# the hotlist user interface. +# # Hotlist sub-window titles +# NewLink:Neuen Eintrag erstellen NewFolder:Verzeichnis anlegen EditLink:Eintrag bearbeiten EditFolder:Verzeichnis umbenennen -# Default hotlist +# Default hotlist page names +# HotlistHomepage:NetSurf Homepage HotlistTestBuild:NetSurf Testversionen -# Tree URL text -TreeAdded:eingetragen am: %s -TreeLast:letzter Besuch: %s -TreeVisited:gesehen am: %s -TreeVisits:Besuche gesamt: %i -TreeUnknown:Unbekannt -TreeImport:Importierte URL -TreeNewFolder:Neues Verzeichnis -# Tree export -TreeHotlist:NetSurf Hotlist -TreeHistory:NetSurf History +# Global history user interface tokens +# ==================================== +# +# This section contains tokens which are used in various parts of +# the global history user interface. +# -# Global history GlobalHistory:History (global) DateToday:Heute DateYesterday:Gestern @@ -144,56 +260,124 @@ Date1Week:vorige Woche Date2Week:vor 2 Wochen Date3Week:vor 3 Wochen -# Download window -Download:%s von %s %s/s noch %s -DownloadU:%s von unbekannt %s/s bisher %s -Downloaded:%s komplett etwa %s/s gesamt %s + +# Download user interface tokens +# ============================== +# +# This section contains tokens which are used in the download +# window. +# +Download:%s von %s • %s/s • noch %s +DownloadU:%s von unbekannt • %s/s • bisher %s +Downloaded:%s komplett • etwa %s/s • gesamt %s Unwritten:Schreiben der Datei ist fehlgeschlagen. -# Print dialog + +# Printing user interface tokens +# ============================== +# +# This section contains tokens which are used in the printing +# dialog box. +# + PrintSheetFilled:Druckseite PrintSheetsFilled:Druckseiten + +# Content +# ======= +# +# This section contains tokens used by contents +# + # Forms -Form_Submit:Übertragen +# +Form_Submit:Ãœbertragen Form_Reset:Reset Form_None: Form_Many:(Viele) Form_Drop:Datei hier hinziehen -FormSelect:Anklicken öffnet Auswahlmenü +FormSelect:Anklicken öffnet Auswahlmenü FormCheckbox:Anklicken um die Option an/abzuschalten -FormRadio:Anklicken wählt diese Option -FormSubmit:Daten übertragen an %s -FormBadSubmit:Achtung: Daten können nicht gesendet werden +FormRadio:Anklicken wählt diese Option +FormSubmit:Daten übertragen an %s +FormBadSubmit:Achtung: Daten können nicht gesendet werden FormTextarea:Anklicken zum Editieren FormTextbox:Anklicken zum Bearbeiten des Feldes FormReset:Reset form (not implemented) FormFile:Zum Upload Datei hierhin ziehen und fallenlassen +SelectMenu:Select + +# Content titles +# +DrawTitle:Draw Bild (%lux%lu, %lu bytes) +GIFTitle:GIF Bild (%lux%lu, %lu bytes) +JPEGTitle:JPEG Bild (%ux%u, %lu bytes) +PNGTitle:PNG Bild (%lux%lu, %lu bytes) +JNGTitle:JNG Bild (%lux%lu, %lu bytes) +MNGTitle:MNG Bild (%lux%lu, %lu bytes) +SpriteTitle:Sprite Bild (%lux%lu, %lu bytes) -Not2xx:Server meldet Fehler zurück +# HTML page character set +# +Encoding0:from HTTP headers +Encoding1:detected +Encoding2:from <meta> +EncodingUnk:Unknown + +# Cookies +# ======= +# +# Cookies related tokens. +# +# At present, this section simply stores the location of +# the cookie file. This should not be changed. +# cookiefile:Choices:WWW.NetSurf.Cookies cookiejar:<Choices$Write>.WWW.NetSurf.Cookies -ErrorPage:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Page error</title></head><body><h1>Sorry, NetSurf was unable to display this page</h1><p><strong>%s</strong></p></body></html> +# Errors +# ====== +# +# This section contains error and warning messages which +# are displayed to the user. +# + +# Fetching errors - displayed as an HTML page +# +Not2xx:Server meldet Fehler zurück InvalidURL:Die Adresse <em>%s</em> konnte nicht ausgewertet werden. -NoMemory:Zu wenig Speicher. Bitte mehr Speicher zur Verfügung stellen und erneut versuchen. -FontBadInst:Fehler bei der Font-Initialisierung wegen obsoleter Kopien von ROM Fonts auf dem lokalem Speichermedium. NetSurf wird beendet und ein Programm zur Fehlerbehebung gestartet. -FontError:Fehler beim Öffnen des Fonts "Homerton.Medium" (%s). -Resolvers:Es sind keine Domain Name Servers (DNS) konfiguriert. Nur lokale Dateien können geladen werden. DNS können in Konfiguration (!Boot doppelklicken) eingestellt werden. +# HTML error page +# +ErrorPage:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Page error</title></head><body><h1>Sorry, NetSurf was unable to display this page</h1><p><strong>%s</strong></p></body></html> + +# General errors - displayed in a dialog box +# +# These may be augmented with further relevant information, which +# is displayed after the contents of the relevant token. +# PathToURL:Fehler beim Konvertieren des Dateipfades in eine URL Adresse: SaveError:Die Datei konnte wegen eines Fehlers nicht gespeichert werden: LoadError:Die Datei konnte wegen eines Fehlers nicht geladen werden: -MenuError:Fehler beim Öffnen des Menüs: +MenuError:Fehler beim Öffnen des Menüs: DragError:Fehler beim Ziehen des Symboles: TbarError:Fehler beim Aufbau der Toolbar: WimpError:Unerwarteter Fehler im Window Manager: DownloadWarn:This download may not complete: -NoDiscSpace:Not enough space available on disc. -Template:Ein Template für ein Fenster fehlt in der Datei Templates. Bitte NetSurf neu installieren. MiscError:Unerwarteter Fehler: FileError:Datei existiert nicht: +PrintError:Ein Fehler trat während des Druckens auf: + +# Specific errors - displayed in a dialog box +# +NoMemory:Zu wenig Speicher. Bitte mehr Speicher zur Verfügung stellen und erneut versuchen. +FontBadInst:Fehler bei der Font-Initialisierung wegen obsoleter Kopien von ROM Fonts auf dem lokalem Speichermedium. NetSurf wird beendet und ein Programm zur Fehlerbehebung gestartet. +FontError:Fehler beim öffnen des Fonts "Homerton.Medium" (%s). +Resolvers:Es sind keine Domain Name Servers (DNS) konfiguriert. Nur lokale Dateien können geladen werden. DNS können in Konfiguration (!Boot doppelklicken) eingestellt werden. +NoDiscSpace:Not enough space available on disc. +Template:Ein Template für ein Fenster fehlt in der Datei Templates. Bitte NetSurf neu installieren. HotlistSaveError:Hotlist konnte nicht korrekt gespeichert werden. HotlistLoadError:Hotlist konnte nicht korrekt geladen werden. NoPathError:Symbol in ein Verzeichnisfenster ziehen um zu Speichern. @@ -201,28 +385,34 @@ NoNameError:Bitte einen Namen eingeben. NoURLError:Bitte eine URL Adresse eingeben. URIError:NetSurf konnte die URI Datei nicht lesen. Syntax Fehler. EmptyError:Datei ist leer. -PrintError:Ein Fehler trat während des Druckens auf: -PrintErrorRO2:Der Drucker scheint beschäftigt zu sein. +PrintErrorRO2:Der Drucker scheint beschäftigt zu sein. + + +# Queries +# ======= +# +# This section contains queries which are displayed to the user +# -# User queries AbortDownload:Soll das Herunterladen der Datei wirklich abgebrochen werden ? QuitDownload:Das Herunterladen ein oder mehrerer Dateien wurde noch nicht abgeschlossen. Soll NetSurf trotzdem beendet werden ? -# Some general purpose words and phrases -Bytes: B -kBytes: kB -MBytes: MB -GBytes: GB -# Progress +# Page fetching +# ============= +# +# This section contains messages which may be displayed whilst +# fetching a page or other content +# + +# Fetch status messages - displayed in status bar +# Progress:%s of %s ProgressU:%s Loading:Opening page... RecPercent:Received %s (%u%%) Received:Received %s Converting:Converting %lu bytes -BadRedirect:Bad redirect URL -FetchFailed:Unable to fetch document Complete:Page complete (%gs) Redirecting:Redirecting... Processing:Processing document @@ -232,6 +422,11 @@ FetchObjs2:Loading %u objects: %s Done:Document done FetchStyle:Loading %u stylesheets FetchStyle2:Loading %u stylesheets: %s + +# Fetch warning/error messages - displayed in status bar +# +BadRedirect:Bad redirect URL +FetchFailed:Unable to fetch document NotCSS:Warning: stylesheet is not CSS BadObject:Warning: bad object type ObjError:Error loading object: %s @@ -241,22 +436,16 @@ PNGError:PNG library error. MNGError:MNG library error. BadSprite:Invalid or corrupt Sprite data. -DrawTitle:Draw Bild (%lux%lu, %lu bytes) -GIFTitle:GIF Bild (%lux%lu, %lu bytes) -JPEGTitle:JPEG Bild (%ux%u, %lu bytes) -PNGTitle:PNG Bild (%lux%lu, %lu bytes) -JNGTitle:JNG Bild (%lux%lu, %lu bytes) -MNGTitle:MNG Bild (%lux%lu, %lu bytes) -SpriteTitle:Sprite Bild (%lux%lu, %lu bytes) -SelectMenu:Select - -SaveSource:Source -SaveDraw:Webpage -SaveText:Webpage -SaveObject:Object -SaveLink:Link +# User interface +# ============== +# +# This section contains messages to deal with user interface +# features. +# +# Scrollbars - displayed in status bar +# ScrollUp:Pfeil anklicken zum Hochscrollen ScrollPUp:Anklicken scrollt eine Seite hoch ScrollV:Ziehen der Leiste scrollt vertikal @@ -268,47 +457,79 @@ ScrollH:Ziehen der Leiste scrollt horizontal ScrollPRight:Anklicken scrollt eine Seite nach rechts ScrollRight:Pfeil anklicken scrollt rechts -Encoding0:from HTTP headers -Encoding1:detected -Encoding2:from <meta> -EncodingUnk:Unknown + +# Saving +# ====== +# +# Messages used when saving +# + +SaveSource:Source +SaveDraw:Webpage +SaveText:Webpage +SaveObject:Object +SaveLink:Link + + +# Themes +# ====== +# +# Messages used when installing new themes +# ThemeInstActive:Ein Thema wird gerade geladen oder installiert. Bitte vor Installation weiterer Themen diesen Vorgang abwarten oder beenden. -ThemeInstDown:Bitte warten bis das Thema vollständig heruntergeladen wurde. -ThemeInvalid:Das geladene Thema ist fehlerhaft oder benötigt eine neuere Version von NetSurf. +ThemeInstDown:Bitte warten bis das Thema vollständig heruntergeladen wurde. +ThemeInvalid:Das geladene Thema ist fehlerhaft oder benötigt eine neuere Version von NetSurf. ThemeInstall:Soll das Thema '%s' von %s installiert werden ? ThemeInstallErr:Beim Installieren des geladenen Themas trat ein Fehler auf. ThemeApplyErr:Beim Versuch der Anwendung eines geladenen Themas trat ein Fehler auf. + +# General +# ======= +# +# Some general purpose words and phrases +# + +Bytes: B +kBytes: kB +MBytes: MB +GBytes: GB + + # Interactive help -HelpToolbar0:Schaltet zurück auf die zuvor dargestellte Seite.|MDer Inhalt wird dabei nicht aktualisiert. -HelpToolbar1:Schaltet vorwärts auf die nächste Seite.|MDer Inhalt wird dabei nicht aktualisiert. +# ================ +# +# This section contains interactive help messages +# +HelpToolbar0:Schaltet zurück auf die zuvor dargestellte Seite.|MDer Inhalt wird dabei nicht aktualisiert. +HelpToolbar1:Schaltet vorwärts auf die nächste Seite.|MDer Inhalt wird dabei nicht aktualisiert. HelpToolbar2:Das ist der Stop Schaltknopf.|MUnterbricht den Ladvorgang. -HelpToolbar3:Aktualisiert den Seiteninhalt.|MKlicken mit AUSWAHL lädt die Seite neu.|MKlicken mit SPEZIAL lädt die Seite und alle zugehörigen Objekte neu. -HelpToolbar4:Lädt die Homepage. -HelpToolbar5:Das ist der Schaltknopf zur History-Funktion.|MKlicken mit AUSWAHL öffnet die lokale History.|MKlicken mit SPEZIAL öffnet das Fenster mit der globalen History. +HelpToolbar3:Aktualisiert den Seiteninhalt.|MKlicken mit AUSWAHL lädt die Seite neu.|MKlicken mit SPEZIAL lädt die Seite und alle zugehörigen Objekte neu. +HelpToolbar4:Lädt die Homepage. +HelpToolbar5:Das ist der Schaltknopf zur History-Funktion.|MKlicken mit AUSWAHL öffnet die lokale History.|MKlicken mit SPEZIAL öffnet das Fenster mit der globalen History. HelpToolbar6:Speichert das aktuelle Dokument als HTML Datei. -HelpToolbar7:Drucken der aktuellen Seite.|MAnklicken öffnet den 'Drucken' Dialog. -HelpToolbar8:Das ist der Hotlist Schaltknopf.|MKlicken mit AUSWAHL öffnet die Hotlist.|MKlicken mit SPEZIAL trägt die aktuelle Seite in die Hotlist ein. -HelpToolbar9:Anklicken öffnet den Vergrößerungs-Dialog.|MDie Vergrößerung betrifft Text und Bilder. -HelpToolbar10:Anklicken öffnet das Fenster zur Textsuche. -HelpToolbar11:Das ist die Adressleiste.|MHier die Adresse (URL) eingeben und Entertaste drücken, um eine neue Seite zu laden. -HelpToolbar12:Das ist die Ladeaktivitätsanzeige.|MSie wird animiert, wenn NetSurf aktiv ist. -HelpToolbar13:Das ist das URL-Schnellwahl Symbol.|MKlicken mit AUSWAHL öffnet eine Liste der zuletzt eingegebenen Web-Adressen. - -HelpStatus0:Das ist die Begrenzung der Statusanzeige.|MKlicken und Ziehen verändert die Länge der Statusanzeige. +HelpToolbar7:Drucken der aktuellen Seite.|MAnklicken öffnet den 'Drucken' Dialog. +HelpToolbar8:Das ist der Hotlist Schaltknopf.|MKlicken mit AUSWAHL öffnet die Hotlist.|MKlicken mit SPEZIAL trägt die aktuelle Seite in die Hotlist ein. +HelpToolbar9:Anklicken öffnet den Vergrößerungs-Dialog.|MDie Vergrößerung betrifft Text und Bilder. +HelpToolbar10:Anklicken öffnet das Fenster zur Textsuche. +HelpToolbar11:Das ist die Adressleiste.|MHier die Adresse (URL) eingeben und Entertaste drücken, um eine neue Seite zu laden. +HelpToolbar12:Das ist die Ladeaktivitätsanzeige.|MSie wird animiert, wenn NetSurf aktiv ist. +HelpToolbar13:Das ist das URL-Schnellwahl Symbol.|MKlicken mit AUSWAHL öffnet eine Liste der zuletzt eingegebenen Web-Adressen. + +HelpStatus0:Das ist die Begrenzung der Statusanzeige.|MKlicken und Ziehen verändert die Länge der Statusanzeige. HelpStatus1:Das ist die Statusanzeige|MSie zeigt an, was gerade im Browserfenster geschieht. HelpIconMenu0:Zeigt Informationen zu dieser Software. -HelpIconMenu1:Lädt die NetSurf Dokumentation in einem neuen Browserfenster. -HelpIconMenu2:Mauszeiger nach rechts bewegen, um ein Fenster zu öffnen. +HelpIconMenu1:Lädt die NetSurf Dokumentation in einem neuen Browserfenster. +HelpIconMenu2:Mauszeiger nach rechts bewegen, um ein Fenster zu öffnen. HelpIconMenu2-0:Erlaubt die Eingabe einer Web-Adresse. -HelpIconMenu2-1:Klicken mit AUSWAHL öffnet die Hotlist. -HelpIconMenu2-2:Klicken mit AUSWAHL öffnet das Fenster mit der globalen History. -HelpIconMenu3:Öffnet einen Dialog mit Einstellungen für NetSurf. +HelpIconMenu2-1:Klicken mit AUSWAHL öffnet die Hotlist. +HelpIconMenu2-2:Klicken mit AUSWAHL öffnet das Fenster mit der globalen History. +HelpIconMenu3:Öffnet einen Dialog mit Einstellungen für NetSurf. HelpIconMenu4:Beendet das Programm.|MAlle Browserfenster werden geschlossen. Downloads werden abgebrochen. -HelpBrowserMenu0:Untermenü Seite.|MMenüpunkte beziehen sich auf die angezeigte Seite. +HelpBrowserMenu0:Untermenü Seite.|MMenüpunkte beziehen sich auf die angezeigte Seite. HelpBrowserMenu0-0:Zeigt Informationen zur aktuellen Seite. HelpBrowserMenu0-1:Abspeichern der Seite als HTML Datei.|MGespeichert wird nur der HTML Quellcode (keine Bilder etc.). HelpBrowserMenu0-2:Abspeichern der kompletten Seite.|MDer HTML Quellcode sowie alle Bilder und StyleSheets werden gespeichert. @@ -320,9 +541,9 @@ HelpBrowserMenu0-4-0:Speichert die Adresse der Seite im Acorn URI Format. HelpBrowserMenu0-4-1:Speichert die Adresse der Seite im Ant URL Format. HelpBrowserMenu0-4-2:Speichert die Adresse der Seite als Text. HelpBrowserMenu0-5:Dialogfenster zum Drucken der Seite. -HelpBrowserMenu0-6:Öffnet die aktuelle Seite in einem neuen Fenster. -HelpBrowserMenu0-7:Lädt den Quellcode der Seite in einen Editor. -HelpBrowserMenu1:Untermenü Objekt.|MMenüpunkte beziehen sich auf das aktuelle Objekt. +HelpBrowserMenu0-6:Öffnet die aktuelle Seite in einem neuen Fenster. +HelpBrowserMenu0-7:Lädt den Quellcode der Seite in einen Editor. +HelpBrowserMenu1:Untermenü Objekt.|MMenöpunkte beziehen sich auf das aktuelle Objekt. HelpBrowserMenu1-0:Informationen zum aktuellen Objekt zeigen. HelpBrowserMenu1-1:Abspeichern des Objektes (Original). HelpBrowserMenu1-2:Optionen zum Export des aktuellen Objektes zeigen. @@ -332,115 +553,134 @@ HelpBrowserMenu1-3-0:Speichert die Adresse des Objektes im Acorn URI Format. HelpBrowserMenu1-3-1:Speichert die Adresse des Objektes im Ant URL Format. HelpBrowserMenu1-3-2:Speichert die Adresse des Objektes als Text. HelpBrowserMenu1-4:Anklicken mit AUSWAHL um alle Objekte der Seite erneut zu laden. -HelpBrowserMenu2:Untermenü Navigieren. -HelpBrowserMenu2-0:Öffnet die Homepage im aktuellen Fenster. -HelpBrowserMenu2-1:Schaltet zurück zur vorher dargestellten Seite.|MDie Seite wird dabei nicht aktualisiert. -HelpBrowserMenu2-2:Schaltet zur nächsten Seite in der lokalen History Liste.|MDie Seite wird dabei nicht aktualisiert. -HelpBrowserMenu2-3:Lädt die aktuelle Seite erneut.|MDie Seite wird aktualisiert. Ältere Informationen zu dieser Seite, die noch im lokalen Zwischenpuffer gespeichert sind, werden dabei überschrieben. +HelpBrowserMenu2:Untermenü Navigieren. +HelpBrowserMenu2-0:Öffnet die Homepage im aktuellen Fenster. +HelpBrowserMenu2-1:Schaltet zurück zur vorher dargestellten Seite.|MDie Seite wird dabei nicht aktualisiert. +HelpBrowserMenu2-2:Schaltet zur nächsten Seite in der lokalen History Liste.|MDie Seite wird dabei nicht aktualisiert. +HelpBrowserMenu2-3:Lädt die aktuelle Seite erneut.|MDie Seite wird aktualisiert. Ältere Informationen zu dieser Seite, die noch im lokalen Zwischenpuffer gespeichert sind, werden dabei überschrieben. HelpBrowserMenu2-4:Unterbricht den Ladevorgang und alle anderen Prozesse im aktuellen Browserfenster. -HelpBrowserMenu3:Untermenü Anzeige.|MFestlegen der Darstellungsparameter für das Browserfenster. -HelpBrowserMenu3-0:Ändern der Größe der Darstellung. Beeinflußt werden Text und Bilder. +HelpBrowserMenu3:Untermenü Anzeige.|MFestlegen der Darstellungsparameter für das Browserfenster. +HelpBrowserMenu3-0:Ändern der Größe der Darstellung. Beeinflußt werden Text und Bilder. HelpBrowserMenu3-1:Optionen zur Anzeige von Bildern. #HelpBrowserMenu3-1-0:Schaltet Vordergrundbilder ein/aus. HelpBrowserMenu3-1-1:Schaltet Hintergrundbilder ein/aus. HelpBrowserMenu3-1-2:Schaltet Animationen ein/aus.|MBei ausgeschalteter Animation, wird nur das erste Teilbild (Frame) angezeigt. HelpBrowserMenu3-2:Optionen zur Anzeige von Kontroll- und Steuerelementen. -HelpBrowserMenu3-2-0:Schaltet die Schaltknöpfe am oberen Fensterrand ein/aus.|MDie Länge der Adressleiste wird angepaßt. +HelpBrowserMenu3-2-0:Schaltet die Schaltknöpfe am oberen Fensterrand ein/aus.|MDie Länge der Adressleiste wird angepaßt. HelpBrowserMenu3-2-1:Schaltet die Adressleiste am oberen Fensterrand ein/aus. -HelpBrowserMenu3-2-2:Schaltet die Ladeaktivitätsanzeige am oberen Fensterrand ein/aus.|MDie Länge der Adressleiste wird angepaßt. -HelpBrowserMenu3-2-3:Schaltet die Statusanzeige am unteren Fensterrand ein/aus.|MDie Länge des horizontalen Schiebebalkens wird angepaßt. +HelpBrowserMenu3-2-2:Schaltet die Ladeaktivitätsanzeige am oberen Fensterrand ein/aus.|MDie Länge der Adressleiste wird angepaßt. +HelpBrowserMenu3-2-3:Schaltet die Statusanzeige am unteren Fensterrand ein/aus.|MDie Länge des horizontalen Schiebebalkens wird angepaßt. HelpBrowserMenu3-3:Einstellungen zur Berechnung der Seitendarstellung. -HelpBrowserMenu3-3-0:Schaltet den weichen Übergang zwischen Text und farbigem Hintergrund ein/aus. (Backgroundblending) +HelpBrowserMenu3-3-0:Schaltet den weichen Ãœbergang zwischen Text und farbigem Hintergrund ein/aus. (Backgroundblending) HelpBrowserMenu3-3-1:Schaltet das Puffern von Objekten ein/aus.|MNachzuzeichnende Objekte, z.B. Bildanimationen oder Textbereiche, werden zwischengespeichert um Flackern zu vermeiden. -HelpBrowserMenu3-3-2:Schaltet das Puffern der gesamten Seitenberechnung ein/aus.|MDie komplette Seite wird nach Berechnung und Aufbau zwischengespeichert. Das ist vorteilhaft bei großen Hintergrundbildern und vielen sich überschneidenden Seitenelementen. -HelpBrowserMenu3-4:Übernimmt die vorgenommenen Anzeigeeinstellungen als globale Standardwerte für die Darstellung aller weiteren Seiten. -HelpBrowserMenu4:Untermenü Werkzeuge.|MEnthält verschiedene nützliche Zusatz- und Sonderfunktionen. +HelpBrowserMenu3-3-2:Schaltet das Puffern der gesamten Seitenberechnung ein/aus.|MDie komplette Seite wird nach Berechnung und Aufbau zwischengespeichert. Das ist vorteilhaft bei großen Hintergrundbildern und vielen sich überschneidenden Seitenelementen. +HelpBrowserMenu3-4:Ãœbernimmt die vorgenommenen Anzeigeeinstellungen als globale Standardwerte für die Darstellung aller weiteren Seiten. +HelpBrowserMenu4:Untermenü Werkzeuge.|MEnthält verschiedene nützliche Zusatz- und Sonderfunktionen. HelpBrowserMenu4-0:Verwaltung der Hotlist. -HelpBrowserMenu4-0-0:Anklicken trägt die Adresse der aktuellen Seite in die Hotlist ein. -HelpBrowserMenu4-0-1:Öffnet die Hotlist. +HelpBrowserMenu4-0-0:Anklicken trägt die Adresse der aktuellen Seite in die Hotlist ein. +HelpBrowserMenu4-0-1:Öffnet die Hotlist. HelpBrowserMenu4-1:Zugriff auf die History Funktionen.|MIn die History werden bereits besuchte Webseiten eingetragen. Dies erlaubt das einfache Wiederfinden einmal gesehener Web-Inhalte. -HelpBrowserMenu4-1-0:Anklicken mit AUSWAHL öffnet das Fenster mit der lokalen History.|MIn der lokalen History werden alle Webseiten notiert, die mit dem aktuellen Browserfenster bereits besucht worden waren. -HelpBrowserMenu4-1-1:Anklicken mit AUSWAHL öffnet das Fenster mit der globalen History.|MIn der globalen History werden alle mit NetSurf besuchten Webseiten notiert. +HelpBrowserMenu4-1-0:Anklicken mit AUSWAHL öffnet das Fenster mit der lokalen History.|MIn der lokalen History werden alle Webseiten notiert, die mit dem aktuellen Browserfenster bereits besucht worden waren. +HelpBrowserMenu4-1-1:Anklicken mit AUSWAHL öffnet das Fenster mit der globalen History.|MIn der globalen History werden alle mit NetSurf besuchten Webseiten notiert. HelpBrowserMenu4-2:Erlaubt das Suchen einer Zeichenkette im Text des aktuellen Browserfensters. -HelpBrowserMenu4-3:Kontrolle über Anordnung und Positionierung neuer Fenster. -HelpBrowserMenu4-3-0:Die Position des aktuellen Fensters wird als globaler Standardwert übernommen. Alle nachfolgend neu geöffneten Fenster werden an dieser Position plaziert. -HelpBrowserMenu4-3-1:Neu geöffnete Fenster werden nicht alle an der Standardposition sondern zueinander leicht versetzt plaziert. -HelpBrowserMenu4-3-2:Neue Fenster behalten die Größe des Fensters, aus dem heraus sie geöffnet werden, bei. -HelpBrowserMenu4-3-3:Setzt die festgelegte Standardposition für Fenster auf einen in NetSurf voreingestellten Wert zurück. -HelpBrowserMenu5:Untermenü Hilfe.|MZeigt Informationen zu und über NetSurf. -HelpBrowserMenu5-0:Öffnet die NetSurf Dokumentation in einem neuen Browserfenster. -HelpBrowserMenu5-1:Öffnet das NetSurf Handbuch in einem neuen Browserfenster. -HelpBrowserMenu5-2:Öffnet eine Seite mit allgemeinen Informationen zu NetSurf in einem neuen Browserfenster. -HelpBrowserMenu5-3:Öffnet eine Seite mit Informationen zu Entwicklerteam und bei der Entwicklung genutzter Software in einem neuen Browserfenster. -HelpBrowserMenu5-4:Lädt die interaktive Hilfe. - -HelpBrowser-1:Das ist ein Browserfenster.|MEinen Link mit AUSWAHL anklicken, um ihm zu folgen.|MEinen Link mit SPEZIAL anklicken, um ihn in einem neuen Fenster zu öffnen. - -HelpIconbar:Das ist das NetSurf Icon.|MKlicken mit AUSWAHL öffnet ein neues Browserfenster.|MKlicken mit SPEZIAL öffnet die Hotlist. -HelpHistory:Die History zeigt alle in dieser Sitzung besuchten Seiten.|MKlicken mit AUSWAHL auf eine Symbolgrafik kehrt zurück zur jeweiligen Seite. +HelpBrowserMenu4-3:Kontrolle über Anordnung und Positionierung neuer Fenster. +HelpBrowserMenu4-3-0:Die Position des aktuellen Fensters wird als globaler Standardwert übernommen. Alle nachfolgend neu geöffneten Fenster werden an dieser Position plaziert. +HelpBrowserMenu4-3-1:Neu geöffnete Fenster werden nicht alle an der Standardposition sondern zueinander leicht versetzt plaziert. +HelpBrowserMenu4-3-2:Neue Fenster behalten die Größe des Fensters, aus dem heraus sie geöffnet werden, bei. +HelpBrowserMenu4-3-3:Setzt die festgelegte Standardposition für Fenster auf einen in NetSurf voreingestellten Wert zurück. +HelpBrowserMenu5:Untermenü Hilfe.|MZeigt Informationen zu und über NetSurf. +HelpBrowserMenu5-0:Öffnet die NetSurf Dokumentation in einem neuen Browserfenster. +HelpBrowserMenu5-1:Öffnet das NetSurf Handbuch in einem neuen Browserfenster. +HelpBrowserMenu5-2:Öffnet eine Seite mit allgemeinen Informationen zu NetSurf in einem neuen Browserfenster. +HelpBrowserMenu5-3:Öffnet eine Seite mit Informationen zu Entwicklerteam und bei der Entwicklung genutzter Software in einem neuen Browserfenster. +HelpBrowserMenu5-4:Lädt die interaktive Hilfe. + +HelpBrowser-1:Das ist ein Browserfenster.|MEinen Link mit AUSWAHL anklicken, um ihm zu folgen.|MEinen Link mit SPEZIAL anklicken, um ihn in einem neuen Fenster zu öffnen. + +HelpIconbar:Das ist das NetSurf Icon.|MKlicken mit AUSWAHL öffnet ein neues Browserfenster.|MKlicken mit SPEZIAL öffnet die Hotlist. +HelpHistory:Die History zeigt alle in dieser Sitzung besuchten Seiten.|MKlicken mit AUSWAHL auf eine Symbolgrafik kehrt zurück zur jeweiligen Seite. HelpSaveAs0:Symbol mit AUSWAHL festhalten und in ein Verzeichnisfenster ziehen, um die Datei zu speichern. HelpSaveAs1:Das ist der Name unter dem die Datei gespeichert wird. -HelpSaveAs2:Klicken mit AUSWAHL speichert die Datei unter angezeigtem Pfad und Namen.|MWird kein voller Dateipfad angezeigt, muß die Datei per Drag & Drop gespeichert werden. +HelpSaveAs2:Klicken mit AUSWAHL speichert die Datei unter angezeigtem Pfad und Namen.|MWird kein voller Dateipfad angezeigt, muß die Datei per Drag & Drop gespeichert werden. HelpSaveAs3:Klicken mit AUSWAHL um nicht zu speichern. -HelpScaleView:Mit diesem Dialog kann die Darstellung der Seite vergrößert oder verkleinert werden. -HelpScaleView1:Gewünschte Skalierung hier eingeben. +HelpScaleView:Mit diesem Dialog kann die Darstellung der Seite vergrößert oder verkleinert werden. +HelpScaleView1:Gewünschte Skalierung hier eingeben. HelpScaleView2:Klicken mit AUSWAHL um die Skalierung um 10% zu verringern. -HelpScaleView3:Klicken mit AUSWAHL um die Skalierung um 10% zu erhöhen. +HelpScaleView3:Klicken mit AUSWAHL um die Skalierung um 10% zu erhöhen. HelpScaleView5:Stellt einen Skalierungswert von 75% ein. HelpScaleView6:Stellt einen Skalierungswert von 100% ein. HelpScaleView7:Stellt einen Skalierungswert von 150% ein. HelpScaleView8:Stellt einen Skalierungswert von 200% ein. -HelpScaleView9:Klicken mit AUSWAHL um die Skalierung nicht durchzuführen.|MDas Dialogfenster wird geschlossen.|MDie Darstellung der Seite wird unverändert beibehalten. -HelpScaleView10:Klicken mit AUSWAHL um die Seite skaliert darzustellen.|MDie Seite wird in der gewählten Vergrößerung angezeigt. +HelpScaleView9:Klicken mit AUSWAHL um die Skalierung nicht durchzuführen.|MDas Dialogfenster wird geschlossen.|MDie Darstellung der Seite wird unverändert beibehalten. +HelpScaleView10:Klicken mit AUSWAHL um die Seite skaliert darzustellen.|MDie Seite wird in der gewählten Vergrößerung angezeigt. HelpHotFolder:Dieses Fenster verwenden, um den Verzeichnis-Namen festzulegen. HelpHotEntry:Dieses Fenster verwenden, um die Details des Eintrages festzulegen. HelpHotlist:Das ist das Hotlist Fenster. -HelpHotlist0:Klicken mit AUSWAHL öffnet das Verzeichnis. -HelpHotlist1:Klicken mit AUSWAHL schließt das Verzeichnis. +HelpHotlist0:Klicken mit AUSWAHL öffnet das Verzeichnis. +HelpHotlist1:Klicken mit AUSWAHL schließt das Verzeichnis. HelpHotlist2:Klicken mit AUSWAHL zeigt die Zusatzinformationen zu diesem Eintrag. -HelpHotlist3:Klicken mit AUSWAHL schließt die Zusatzanzeige. -HelpHotlist4:Klicken mit AUSWAHL markiert dieses Verzeichnis.|MDoppelklicken um das Verzeichnis zu öffnen. -HelpHotlist5:Klicken mit AUSWAHL markiert diesen Eintrag.|MDoppelklicken öffnet diesen Eintrag in einem neuen Browserfenster. -HelpHotlist6:Maustasten loslassen, um die Auswahl abzuschließen. -HelpHotlist7:Maustasten loslassen, um das Verschieben auszuführen. - -HelpHotToolbar0:Löscht die markierten Einträge und Verzeichnisse. -HelpHotToolbar1:Expandiert Einträge.|MKlicken mit AUSWAHL expandiert alle / alle markierten Einträge.|MKlicken mit SPEZIAL faltet alle / alle markierten Einträge zusammen.|MBei expandierten Einträgen werden zusätzliche Informationen angezeigt. -HelpHotToolbar2:Öffnet Verzeichnisse.|MKlicken mit AUSWAHL öffnet alle / alle markierten Verzeichnisse.|MKlicken mit SPEZIAL schließt alle / alle markierten Verzeichnisse. -HelpHotToolbar3:Lädt alle markierten Einträge in jeweils ein neues Browserfenster. -HelpHotToolbar4:Erzeugt neue Einträge oder Verzeichnisse.|MKlicken mit AUSWAHL erstellt ein neues Verzeichnis. - -HelpHotlistMenu0:Untermenü Hotlist. Bearbeiten der Hotlist. -HelpHotlistMenu0-0:Neues Element in die Hotlist einfügen. +HelpHotlist3:Klicken mit AUSWAHL schließt die Zusatzanzeige. +HelpHotlist4:Klicken mit AUSWAHL markiert dieses Verzeichnis.|MDoppelklicken um das Verzeichnis zu öffnen. +HelpHotlist5:Klicken mit AUSWAHL markiert diesen Eintrag.|MDoppelklicken öffnet diesen Eintrag in einem neuen Browserfenster. +HelpHotlist6:Maustasten loslassen, um die Auswahl abzuschließen. +HelpHotlist7:Maustasten loslassen, um das Verschieben auszuführen. + +HelpHotToolbar0:Löscht die markierten Einträge und Verzeichnisse. +HelpHotToolbar1:Expandiert Einträge.|MKlicken mit AUSWAHL expandiert alle / alle markierten Einträge.|MKlicken mit SPEZIAL faltet alle / alle markierten Einträge zusammen.|MBei expandierten Einträgen werden zusätzliche Informationen angezeigt. +HelpHotToolbar2:Öffnet Verzeichnisse.|MKlicken mit AUSWAHL öffnet alle / alle markierten Verzeichnisse.|MKlicken mit SPEZIAL schließt alle / alle markierten Verzeichnisse. +HelpHotToolbar3:Lädt alle markierten Einträge in jeweils ein neues Browserfenster. +HelpHotToolbar4:Erzeugt neue Einträge oder Verzeichnisse.|MKlicken mit AUSWAHL erstellt ein neues Verzeichnis. + +HelpHotlistMenu0:Untermenü Hotlist. Bearbeiten der Hotlist. +HelpHotlistMenu0-0:Neues Element in die Hotlist einfügen. HelpHotlistMenu0-0-0:Neues Verzeichnis anlegen. HelpHotlistMenu0-0-1:Neuen Eintrag erstellen. HelpHotlistMenu0-1:Die gesamte Hotlist als HTML Datei speichern. -HelpHotlistMenu0-2:Öffnen von Verzeichnissen und Anzeigen von Zusatzinformationen. -HelpHotlistMenu0-2-0:Öffnet alle Verzeichnisse und zeigt zu Einträgen die Zusatzinformationen an. -HelpHotlistMenu0-2-1:Öffnet alle Verzeichnisse. -HelpHotlistMenu0-2-2:Zeigt die Zusatzinformationen zu den Einträgen an. -HelpHotlistMenu0-3:Schließen von Verzeichnissen und Ausblenden der Zusatzinformationen. -HelpHotlistMenu0-3-0:Schließt alle Verzeichnisse und versteckt die Zusatzinformationen bei Einträgen. -HelpHotlistMenu0-3-1:Schließt alle Verzeichnisse. -HelpHotlistMenu0-3-2:Versteckt die Zusatzinformationen der Einträge. +HelpHotlistMenu0-2:Öffnen von Verzeichnissen und Anzeigen von Zusatzinformationen. +HelpHotlistMenu0-2-0:Öffnet alle Verzeichnisse und zeigt zu Einträgen die Zusatzinformationen an. +HelpHotlistMenu0-2-1:Öffnet alle Verzeichnisse. +HelpHotlistMenu0-2-2:Zeigt die Zusatzinformationen zu den Einträgen an. +HelpHotlistMenu0-3:Schließen von Verzeichnissen und Ausblenden der Zusatzinformationen. +HelpHotlistMenu0-3-0:Schließt alle Verzeichnisse und versteckt die Zusatzinformationen bei Einträgen. +HelpHotlistMenu0-3-1:Schließt alle Verzeichnisse. +HelpHotlistMenu0-3-2:Versteckt die Zusatzinformationen der Einträge. HelpHotlistMenu0-4:\Rcontrol the display of NetSurf's toolbars. HelpHotlistMenu0-4-0:\Stoggle the display of the toolbar buttons. -HelpHotlistMenu1:Untermenü Auswahl. Bearbeiten der markierten Hotlist Elemente. -HelpHotlistMenu1-0:Ändern des markierten Elementes in der Hotlist. -HelpHotlistMenu1-1:Öffnet markierte Einträge in je einem neuen Browserfenster. -HelpHotlistMenu1-2:Löscht markierte Elemente aus der Hotlist.|MAchtung: Verzeichnisse werden mit allen in ihnen enthaltenen Einträgen gelöscht. -HelpHotlistMenu1-3:Setzt für die markierten Einträge die Statistik, z.B. Anzahl der Seitenbesuche, zurück. +HelpHotlistMenu1:Untermenü Auswahl. Bearbeiten der markierten Hotlist Elemente. +HelpHotlistMenu1-0:Ändern des markierten Elementes in der Hotlist. +HelpHotlistMenu1-1:Öffnet markierte Einträge in je einem neuen Browserfenster. +HelpHotlistMenu1-2:Löscht markierte Elemente aus der Hotlist.|MAchtung: Verzeichnisse werden mit allen in ihnen enthaltenen Einträgen gelöscht. +HelpHotlistMenu1-3:Setzt für die markierten Einträge die Statistik, z.B. Anzahl der Seitenbesuche, zurück. HelpHotlistMenu2:Markiert alle Elemente der Hotlist. HelpHotlistMenu3:Deselektiert alle markierten Elemente. HelpGHistory:Das ist das Fenster der globalen History. -HelpGHistoryToolbar0:Entfernt markierte Bereiche.|MAnklicken mit AUSWAHL löscht die vorher markierten Bereiche aus der History. -HelpGHistoryToolbar1:Expandiert Einträge.|MAnklicken mit AUSWAHL expandiert alle Adressen.|MAnklicken mit SPEZIAL macht die Expansion aller Adressen rückgängig.|MIn expandierten Adressen werden Zusatzinformationen angezeigt. -HelpGHistoryToolbar2:Öffnet Verzeichnisse.|MAnklicken mit AUSWAHL öffnet alle Verzeichnisse.|MAnklicken mit SPEZIAL schließt alle geöffneten Verzeichnisse. -HelpGHistoryToolbar3:Lädt Webseiten.|MAnklicken mit AUSWAHL öffnet die markierten Webseiten in je einem neuen Browserfenster. +HelpGHistoryToolbar0:Entfernt markierte Bereiche.|MAnklicken mit AUSWAHL löscht die vorher markierten Bereiche aus der History. +HelpGHistoryToolbar1:Expandiert Einträge.|MAnklicken mit AUSWAHL expandiert alle Adressen.|MAnklicken mit SPEZIAL macht die Expansion aller Adressen rückgängig.|MIn expandierten Adressen werden Zusatzinformationen angezeigt. +HelpGHistoryToolbar2:Öffnet Verzeichnisse.|MAnklicken mit AUSWAHL öffnet alle Verzeichnisse.|MAnklicken mit SPEZIAL schließt alle geöffneten Verzeichnisse. +HelpGHistoryToolbar3:Lädt Webseiten.|MAnklicken mit AUSWAHL öffnet die markierten Webseiten in je einem neuen Browserfenster. + +HelpAppInfo:Das ist das Info-Fenster zu NetSurf.|MGenauere Angaben zu Autoren und Entwicklerteam, zu genutzten Libraries etc. gibt es bei "Ãœber NetSurf" im Untermenü Hilfe eines Browserfensters. + + +# Unused tokens +# ============= +# +# These tokens appear to be unused at the current time. +# + +# Tree export +TreeHotlist:NetSurf hotlist +TreeHistory:NetSurf history +SaveSelect:Sichern +ExportAs:Exportieren als +Copy:Auswahl kopieren ^C +AnimImg:Animationen +DitherImg:Bilder dithern +FilterImg:Bilder weichzeichnen +RenderText:Text/Hintergrund Ãœbergang weich -HelpAppInfo:Das ist das Info-Fenster zu NetSurf.|MGenauere Angaben zu Autoren und Entwicklerteam, zu genutzten Libraries etc. gibt es bei "Über NetSurf" im Untermenü Hilfe eines Browserfensters. diff --git a/!NetSurf/Resources/en/Messages b/!NetSurf/Resources/en/Messages index 8039ca70a..e93cc6a1e 100644 --- a/!NetSurf/Resources/en/Messages +++ b/!NetSurf/Resources/en/Messages @@ -1,142 +1,258 @@ # English messages for NetSurf +# ============================ +# +# Description +# ----------- +# +# This file contains lines of colon separated key-value pairs in the format: +# +# Key:Value +# +# Contents of Key _must_ be representable in the US-ASCII character set and +# should not be modified for translation purposes. +# +# Values must be UTF-8 encoded strings. When these strings are displayed in +# NetSurf's user interface, they are converted to the system's local character +# set. As a result of this conversion process, unrepresentable characters are +# stripped from the displayed string. +# +# Blank lines and lines starting with a # character are treated as comments and +# ignored. +# + # Menus +# ===== +# +# This section defines the title and entry text for NetSurf's menus. +# + +# Iconbar menu +# NetSurf:NetSurf Info:Info -Open:Open -OpenURL:Open URL AppHelp:Help... F1 +Open:Open Choices:Choices... Quit:Quit +# Iconbar -> Open menu +# +OpenURL:Open URL + +# Main menu +# Page:Page +Object:Object +Navigate:Navigate +View:Display +Utilities:Utilities +Help:Help + +# Main -> Page menu +# PageInfo:Info ^F1 Save:Save F3 -SaveComp:Full save ‹F3 +SaveComp:Full save ⇑F3 Export:Export -ExportAs:Export as -Draw:Draw ‹^F3 -Text:Text ^F3 SaveURL:Save location Print:Print PRINT NewWindow:New window ^N ViewSrc:View source... F8 -Object:Object -ObjInfo:Info -ObjSave:Save -ObjReload:Reload + +# Main -> Page -> Export menu +# +Draw:Draw ⇑^F3 +Text:Text ^F3 + +# Main -> Page -> Save location menu +# URI:Acorn URI URL:ANT URL LinkText:Text -Selection:Selection -Copy:Copy to clipboard ^C -SelectAll:Select all ^A -Clear:Clear selection ^Z -Navigate:Navigate + +# Main -> Object menu +# +ObjInfo:Info +ObjSave:Save +ObjReload:Reload + +# Main -> Object -> Export menu +# +Sprite:Sprite + +# Main -> Navigate menu +# Home:Home page Back:Back one page Forward:Forward one page Reload:Reload this page ^F5 Stop:Stop loading this page -View:Display + +# Main -> Display menu +# ScaleView:Scale view F11 Images:Images +Toolbars:Toolbars +Render:Render +OptDefault:Set as default + +# Main -> Display -> Images menu +# ForeImg:Foreground images BackImg:Background images -AnimImg:Animations -DitherImg:Dither images -FilterImg:Smooth images -Toolbars:Toolbars + +# Main -> Display -> Toolbars menu +# ToolButtons:Buttons ToolAddress:Address bar ToolThrob:Throbber ToolStatus:Status bar -Render:Render -RenderText:Blend text to background + +# Main -> Display -> Render menu +# RenderAnims:Buffer animations RenderAll:Buffer all rendering -OptDefault:Set as default + +# Main -> Utilities menu +# +Hotlist:Hotlist +History:History +FindText:Find text F4 Window:Window -WindowSave:Set as default position -WindowStagr:Stagger window position -WindowSize:Copy window position -WindowReset:Reset default position -Utilities:Utilities + +# Main -> Utilities -> Hotlist menu +# HotlistAdd:Add to hotlist HotlistShow:Show hotlist... F6 -History:History + +# Main -> Utilities -> History menu +# HistLocal:Show local history... F7 HistGlobal:Show global history... ^F7 -FindText:Find text F4 -Help:Help + +# Main -> Utilities -> Window menu +# +WindowSave:Set as default position +WindowStagr:Stagger window position +WindowSize:Copy window position +WindowReset:Reset default position + +# Main -> Help menu +# HelpContent:Contents F1 HelpGuide:User guide HelpInfo:User information -HelpInter:Interactive help HelpAbout:About NetSurf +HelpInter:Interactive help -Languages:Language +# Toolbar menu +# +Toolbar:Toolbar +EditToolbar:Edit toolbar + +# Generic tree menus (currently Hotlist and Global history) +# +Selection:Selection +SelectAll:Select all ^A +Clear:Clear selection ^Z + +# Selection Menu +# +Edit:Edit +Launch:Launch RETURN +Delete:Delete ^X +ResetUsage:Reset statistics +# Hotlist/Global history menu +# +New:New +Expand:Expand +Collapse:Collapse + +# New hotlist entry menu +# +Folder:Directory +Link:Address + +# Tree expand/collapse menu +# +All:All +Folders:Directories +Links:Addresses + +# Other menus +# +# URL suggestion menu +URLSuggest:Recent URLs + +# Menus within the choices system +# +# Browser pane +Languages:Language +# +# Network pane ProxyAuth:Authentication ProxyNone:None ProxyBasic:Basic ProxyNTLM:NTLM - -# Image redraw style +# +# Fonts pane +Fonts:Fonts +# +# Images pane Display:Display ImgStyle0:Use OS ImgStyle1:Direct to screen ImgStyle2:Dithered ImgStyle3:Error diffused -# Toolbar menus -URLSuggest:Recent URLs -Toolbar:Toolbar -EditToolbar:Edit toolbar -# Font menu -Fonts:Fonts +# Treeview interface tokens +# ========================= +# +# This section contains tokens which are used in the treeview +# component. (For example, in the main hotlist/global history windows) +# + +# Tree URL text +# +TreeAdded:Added: %s +TreeLast:Last visited: %s +TreeVisited:Visited: %s +TreeVisits:Visits: %i +TreeUnknown:Unknown +TreeImport:Imported URL +TreeNewFolder:New directory -# Hotlist menus -Hotlist:Hotlist -New:New -Expand:Expand -Collapse:Collapse -All:All -Folders:Directories -Folder:Directory -Links:Addresses -Link:Address -SaveSelect:Save -Launch:Launch RETURN -Edit:Edit -Delete:Delete ^X -ResetUsage:Reset statistics + +# Hotlist user interface tokens +# ============================= +# +# This section contains tokens which are used in various parts of +# the hotlist user interface. +# # Hotlist sub-window titles +# NewLink:Create new address NewFolder:Create new directory EditLink:Edit address EditFolder:Rename directory -# Default hotlist +# Default hotlist page names +# HotlistHomepage:NetSurf homepage HotlistTestBuild:NetSurf test builds -# Tree URL text -TreeAdded:Added: %s -TreeLast:Last visited: %s -TreeVisited:Visited: %s -TreeVisits:Visits: %i -TreeUnknown:Unknown -TreeImport:Imported URL -TreeNewFolder:New directory -# Tree export -TreeHotlist:NetSurf hotlist -TreeHistory:NetSurf history +# Global history user interface tokens +# ==================================== +# +# This section contains tokens which are used in various parts of +# the global history user interface. +# -# Global history GlobalHistory:Global history DateToday:Today DateYesterday:Yesterday @@ -144,17 +260,38 @@ Date1Week:Last week Date2Week:2 weeks ago Date3Week:3 weeks ago -# Download window -Download:%s of %s %s/s %s remaining -DownloadU:%s of unknown %s/s %s total -Downloaded:%s complete average %s/s %s total + +# Download user interface tokens +# ============================== +# +# This section contains tokens which are used in the download +# window. +# +Download:%s of %s • %s/s • %s remaining +DownloadU:%s of unknown • %s/s • %s total +Downloaded:%s complete • average %s/s • %s total Unwritten:Writing data to file failed. -# Print dialog + +# Printing user interface tokens +# ============================== +# +# This section contains tokens which are used in the printing +# dialog box. +# + PrintSheetFilled:sheet is filled PrintSheetsFilled:sheets are filled + +# Content +# ======= +# +# This section contains tokens used by contents +# + # Forms +# Form_Submit:Submit Form_Reset:Reset Form_None: @@ -169,19 +306,58 @@ FormTextarea:Click to edit the text FormTextbox:Click to edit this field FormReset:Reset form (not implemented) FormFile:Drop a file here to upload it +SelectMenu:Select + +# Content titles +# +DrawTitle:Draw image (%lux%lu, %lu bytes) +GIFTitle:GIF image (%lux%lu, %lu bytes) +JPEGTitle:JPEG image (%ux%u, %lu bytes) +PNGTitle:PNG image (%lux%lu, %lu bytes) +JNGTitle:JNG image (%lux%lu, %lu bytes) +MNGTitle:MNG image (%lux%lu, %lu bytes) +SpriteTitle:Sprite image (%lux%lu, %lu bytes) + +# HTML page character set +# +Encoding0:from HTTP headers +Encoding1:detected +Encoding2:from <meta> +EncodingUnk:Unknown -Not2xx:Server returned an error +# Cookies +# ======= +# +# Cookies related tokens. +# +# At present, this section simply stores the location of +# the cookie file. This should not be changed. +# cookiefile:Choices:WWW.NetSurf.Cookies cookiejar:<Choices$Write>.WWW.NetSurf.Cookies -ErrorPage:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Page error</title></head><body><h1>Sorry, NetSurf was unable to display this page</h1><p><strong>%s</strong></p></body></html> +# Errors +# ====== +# +# This section contains error and warning messages which +# are displayed to the user. +# + +# Fetching errors - displayed as an HTML page +# +Not2xx:Server returned an error InvalidURL:The address <em>%s</em> could not be understood. -NoMemory:NetSurf is running out of memory. Please free some memory and try again. -FontBadInst:An error occurred when initialising fonts due to the presence of obsolete copies of the ROM fonts on disc. NetSurf will exit and launch a program which will attempt to fix this. -FontError:Failed to open font "Homerton.Medium" (%s). -Resolvers:No domain name servers are configured, so only browsing local files will be possible. Use Configure to set your name server(s). +# HTML error page +# +ErrorPage:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Page error</title></head><body><h1>Sorry, NetSurf was unable to display this page</h1><p><strong>%s</strong></p></body></html> + +# General errors - displayed in a dialog box +# +# These may be augmented with further relevant information, which +# is displayed after the contents of the relevant token. +# PathToURL:An error occurred converting the file path to an URL: SaveError:The file could not be saved due to an error: LoadError:The file could not be loaded due to an error: @@ -190,10 +366,18 @@ DragError:An error occurred when dragging the icon: TbarError:An error occurred when constructing the toolbar: WimpError:An unexpected Window Manager error occurred: DownloadWarn:This download may not complete: -NoDiscSpace:Not enough space available on disc. -Template:A window template is missing from the Templates file. Please reinstall NetSurf. MiscError:An unexpected error occurred: FileError:File does not exist: +PrintError:An error occurred when printing: + +# Specific errors - displayed in a dialog box +# +NoMemory:NetSurf is running out of memory. Please free some memory and try again. +FontBadInst:An error occurred when initialising fonts due to the presence of obsolete copies of the ROM fonts on disc. NetSurf will exit and launch a program which will attempt to fix this. +FontError:Failed to open font "Homerton.Medium" (%s). +Resolvers:No domain name servers are configured, so only browsing local files will be possible. Use Configure to set your name server(s). +NoDiscSpace:Not enough space available on disc. +Template:A window template is missing from the Templates file. Please reinstall NetSurf. HotlistSaveError:The hotlist was unable to be correctly saved. HotlistLoadError:The hotlist was unable to be correctly loaded. NoPathError:To save, drag the icon to a directory display @@ -201,28 +385,34 @@ NoNameError:Please enter a name NoURLError:Please enter a URL URIError:NetSurf was unable to parse this URI file due to a syntax error. EmptyError:file is empty. -PrintError:An error occurred when printing: PrintErrorRO2:It appears that the printer is busy. -# User queries + +# Queries +# ======= +# +# This section contains queries which are displayed to the user +# + AbortDownload:Are you sure you wish to abort this download? QuitDownload:One or more downloads are still in progress. Are you sure you wish to quit? -# Some general purpose words and phrases -Bytes: B -kBytes: kB -MBytes: MB -GBytes: GB -# Progress +# Page fetching +# ============= +# +# This section contains messages which may be displayed whilst +# fetching a page or other content +# + +# Fetch status messages - displayed in status bar +# Progress:%s of %s ProgressU:%s Loading:Opening page... RecPercent:Received %s (%u%%) Received:Received %s Converting:Converting %lu bytes -BadRedirect:Bad redirect URL -FetchFailed:Unable to fetch document Complete:Page complete (%gs) Redirecting:Redirecting... Processing:Processing document @@ -232,6 +422,11 @@ FetchObjs2:Loading %u objects: %s Done:Document done FetchStyle:Loading %u stylesheets FetchStyle2:Loading %u stylesheets: %s + +# Fetch warning/error messages - displayed in status bar +# +BadRedirect:Bad redirect URL +FetchFailed:Unable to fetch document NotCSS:Warning: stylesheet is not CSS BadObject:Warning: bad object type ObjError:Error loading object: %s @@ -241,22 +436,16 @@ PNGError:PNG library error. MNGError:MNG library error. BadSprite:Invalid or corrupt Sprite data. -DrawTitle:Draw image (%lux%lu, %lu bytes) -GIFTitle:GIF image (%lux%lu, %lu bytes) -JPEGTitle:JPEG image (%ux%u, %lu bytes) -PNGTitle:PNG image (%lux%lu, %lu bytes) -JNGTitle:JNG image (%lux%lu, %lu bytes) -MNGTitle:MNG image (%lux%lu, %lu bytes) -SpriteTitle:Sprite image (%lux%lu, %lu bytes) - -SelectMenu:Select -SaveSource:Source -SaveDraw:Webpage -SaveText:Webpage -SaveObject:Object -SaveLink:Link +# User interface +# ============== +# +# This section contains messages to deal with user interface +# features. +# +# Scrollbars - displayed in status bar +# ScrollUp:Click the arrow to scroll up ScrollPUp:Click to scroll up one page ScrollV:Drag the bar to scroll vertically @@ -268,10 +457,25 @@ ScrollH:Drag the bar to scroll horizontally ScrollPRight:Click to scroll right one page ScrollRight:Click the arrow to scroll right -Encoding0:from HTTP headers -Encoding1:detected -Encoding2:from <meta> -EncodingUnk:Unknown + +# Saving +# ====== +# +# Messages used when saving +# + +SaveSource:Source +SaveDraw:Webpage +SaveText:Webpage +SaveObject:Object +SaveLink:Link + + +# Themes +# ====== +# +# Messages used when installing new themes +# ThemeInstActive:A theme is currently being downloaded or installed. Please wait for it to finish or cancel it before installing more themes. ThemeInstDown:Please wait for the theme to download. @@ -280,7 +484,24 @@ ThemeInstall:Would you like to install the theme '%s' by %s? ThemeInstallErr:An error occurred whilst trying to install the downloaded theme. ThemeApplyErr:An error occurred whilst trying to apply the downloaded theme. + +# General +# ======= +# +# Some general purpose words and phrases +# + +Bytes: B +kBytes: kB +MBytes: MB +GBytes: GB + + # Interactive help +# ================ +# +# This section contains interactive help messages +# HelpToolbar0:\Tback button.|M\Straverse back one page in the history tree.|MDoes not resubmit form information. HelpToolbar1:\Tforward button.|M\Straverse forward one page in the history tree.|MDoes not resubmit form information. HelpToolbar2:\Tstop button.|M\Sstop loading this page. @@ -444,3 +665,21 @@ HelpGHistoryToolbar2:\Topen directories button.|M\Sopen all directories in the h HelpGHistoryToolbar3:\Tlaunch button.|M\Slaunch the current selection. HelpAppInfo:\TNetSurf information \w.|MSee the about page for the contributor list and credits. + + +# Unused tokens +# ============= +# +# These tokens appear to be unused at the current time. +# + +# Tree export +TreeHotlist:NetSurf hotlist +TreeHistory:NetSurf history +SaveSelect:Save +ExportAs:Export as +Copy:Copy to clipboard ^C +AnimImg:Animations +DitherImg:Dither images +FilterImg:Smooth images +RenderText:Blend text to background diff --git a/!NetSurf/Resources/fr/Messages b/!NetSurf/Resources/fr/Messages index 68a51372d..0d6c96d56 100644 --- a/!NetSurf/Resources/fr/Messages +++ b/!NetSurf/Resources/fr/Messages @@ -1,255 +1,468 @@ # French messages for NetSurf +# =========================== +# +# Description +# ----------- +# +# This file contains lines of colon separated key-value pairs in the format: +# +# Key:Value +# +# Contents of Key _must_ be representable in the US-ASCII character set and +# should not be modified for translation purposes. +# +# Values must be UTF-8 encoded strings. When these strings are displayed in +# NetSurf's user interface, they are converted to the system's local character +# set. As a result of this conversion process, unrepresentable characters are +# stripped from the displayed string. +# +# Blank lines and lines starting with a # character are treated as comments and +# ignored. +# + # Menus +# ===== +# +# This section defines the title and entry text for NetSurf's menus. +# + +# Iconbar menu +# NetSurf:NetSurf Info:Info Open:Ouvrir -OpenURL:Ouvrir l'URL... AppHelp:Aide... -Choices:Préférences... +Choices:Préférences... Quit:Quitter +# Iconbar -> Open menu +# +OpenURL:Ouvrir l'URL... + +# Main menu +# Page:Page -PageInfo:Info... -Save:Sauver F3 -SaveComp:Sauvegarde Complète ‹F3 +Object:Objet +Navigate:Navigation +View:Affichage +Utilities:Utilitaires +Help:Aide + +# Main -> Page menu +# +PageInfo:Info ^F1 +Save:Sauver F3 +SaveComp:Sauvegarde Complète ⇑F3 Export:Exporter -ExportAs:Exporter sous -Draw:Draw ‹^F3 -Text:Texte ^F3 SaveURL:Sauver le lieu Print:Imprimer PRINT -NewWindow:Nouvelle fenêtre ^N +NewWindow:Nouvelle fenêtre ^N ViewSrc:Voir le source... F8 -Object:Objet -ObjInfo:Info -ObjSave:Sauver -ObjReload:Recharger + +# Main -> Page -> Export menu +# +Draw:Draw ⇑^F3 +Text:Texte ^F3 + +# Main -> Page -> Save location menu +# URI:Acorn URI URL:ANT URL LinkText:Texte -Selection:Sélection -Copy:Copier vers le presse-papier -SelectAll:Tout sélectionner -Clear:Effacer la sélection -Navigate:Navigation + +# Main -> Object menu +# +ObjInfo:Info +ObjSave:Sauver +ObjReload:Recharger + +# Main -> Object -> Export menu +# +Sprite:Sprite + +# Main -> Navigate menu +# Home:Page d'accueil Back:Retour Forward:Avancer -Reload:Recharger cette page ^R -Stop:Arrêter le chargement de la page -View:Affichage +Reload:Recharger cette page ^F5 +Stop:Arrêter le chargement de la page + +# Main -> Display menu +# ScaleView:Ajuster la vue F11 Images:Images +Toolbars:Barre d'outils +Render:Rendu +OptDefault:Définir par défaut + +# Main -> Display -> Images menu +# ForeImg:Images de premier plan BackImg:Images de fond -AnimImg:Animations -DitherImg:Tramage -FilterImg:Adoucir les images -Toolbars:Barre d'outils + +# Main -> Display -> Toolbars menu +# ToolButtons:Boutons ToolAddress:Barre d'adresse ToolThrob:Pulseur -ToolStatus:Barre d'état -Render:Rendu -RenderText:Panachage du texte sur le fond +ToolStatus:Barre d'état + +# Main -> Display -> Render menu +# RenderAnims:Tamponner les animations RenderAll:Tamponner tous les rendus -OptDefault:Définir par défaut -Window:Fenêtre -WindowSave:Définir comme position par défaut -WindowStagr:Décaler la position des nouv. fenêtres -WindowSize:Garder cette taille de fenêtre -WindowReset:RAZ de la position par défaut -Utilities:Utilitaires + +# Main -> Utilities menu +# +Hotlist:Favoris +History:Historique +FindText:Recherche de texte F4 +Window:Fenêtre + +# Main -> Utilities -> Hotlist menu +# HotlistAdd:Ajouter aux favoris HotlistShow:Montrer les favoris... F6 -History:Historique + +# Main -> Utilities -> History menu +# HistLocal:Montrer l'historique local... F7 HistGlobal:Montrer l'historique global... ^F7 -FindText:Recherche de texte F4 -Help:Aide + +# Main -> Utilities -> Window menu +# +WindowSave:Définir comme position par défaut +WindowStagr:Décaler la position des nouv. fenêtres +WindowSize:Garder cette taille de fenêtre +WindowReset:RAZ de la position par défaut + +# Main -> Help menu +# HelpContent:Contenus F1 HelpGuide:Guide de l'utilisateur HelpInfo:Information utilisateur +HelpAbout:À propos de NetSurf HelpInter:Aide interactive -HelpAbout:À propos de NetSurf -Languages:Langue +# Toolbar menu +# +Toolbar:Barre d'outils +EditToolbar:Barre de configuration + +# Generic tree menus (currently Hotlist and Global history) +# +Selection:Sélection +SelectAll:Tout sélectionner ^A +Clear:Effacer la sélection ^Z + +# Selection Menu +# +Edit:Éditer +Launch:Lancer RETURN +Delete:Supprimer ^X +ResetUsage:RAZ des statistiques + +# Hotlist/Global history menu +# +New:Nouveau +Expand:Déployer +Collapse:Regrouper + +# New hotlist entry menu +# +Folder:Dossier +Link:Adresse + +# Tree expand/collapse menu +# +All:Tout +Folders:Dossiers +Links:Adresses + +# Other menus +# +# URL suggestion menu +URLSuggest:URLs récentes +# Menus within the choices system +# +# Browser pane +Languages:Langue +# +# Network pane ProxyAuth:Authentification ProxyNone:Aucune ProxyBasic:Basique ProxyNTLM:NTLM - -# Image redraw style +# +# Fonts pane +Fonts:Fontes +# +# Images pane Display:Affichage ImgStyle0:Utiliser l'OS -ImgStyle1:Directement sur l'écran -ImgStyle2:Tramé +ImgStyle1:Directement sur l'écran +ImgStyle2:Tramé ImgStyle3:Avec diffusion d'erreur -# Toolbar menus -URLSuggest:URLs récentes -Toolbar:Barre d'outils -EditToolbar:Barre de configuration -# Font menu -Fonts:Fontes +# Treeview interface tokens +# ========================= +# +# This section contains tokens which are used in the treeview +# component. (For example, in the main hotlist/global history windows) +# -# Hotlist menus -Hotlist:Favoris -New:Nouveau -Expand:Déployer -Collapse:Regrouper -All:Tout -Folders:Dossiers -Folder:Dossier -Links:Adresses -Link:Adresse -SaveSelect:Sauver -Launch:Lancer RETURN -Edit:Éditer -Delete:Supprimer ^X -ResetUsage:RAZ des statistiques +# Tree URL text +# +TreeAdded:Ajoutée: %s +TreeLast:Dernière visitée: %s +TreeVisited:Visitées: %s +TreeVisits:Visites: %i +TreeUnknown:Inconnu +TreeImport:URL importée +TreeNewFolder:Nouv. répertoire -# Hotlist sub-window titles -NewLink:Créer une nouvelle adresse -NewFolder:Créer un nouveau dossier -EditLink:Éditer l'adresse -EditFolder:Éditer le dossier -# Default hotlist +# Hotlist user interface tokens +# ============================= +# +# This section contains tokens which are used in various parts of +# the hotlist user interface. +# + +# Hotlist sub-window titles +# +NewLink:Créer une nouvelle adresse +NewFolder:Créer un nouveau dossier +EditLink:Éditer l'adresse +EditFolder:Éditer le dossier + +# Default hotlist page names +# HotlistHomepage:Page d'accueil de NetSurf HotlistTestBuild:Versions test de NetSurf -# Tree URL text -TreeAdded:Ajoutée: %s -TreeLast:Dernière visitée: %s -TreeVisited:Visitées: %s -TreeVisits:Visites: %i -TreeUnknown:Inconnu -TreeImport:URL importée -TreeNewFolder:Nouv. répertoire -# Tree export -TreeHotlist:Favoris de NetSurf -TreeHistory:Historique de NetSurf +# Global history user interface tokens +# ==================================== +# +# This section contains tokens which are used in various parts of +# the global history user interface. +# -# Global history GlobalHistory:Historique globale DateToday:Aujourd'hui DateYesterday:Hier -Date1Week:La semaine dernière +Date1Week:La semaine dernière Date2Week:Il y a 2 semaines Date3Week:Il y a 3 semaines -# Download window -Download:%s de %s %s/s %s restants -DownloadU:%s sur inconnu %s/s %s total -Downloaded:%s effectués moyenne %s/s %s total -Unwritten:L'écriture de données dans le fichier a échoué. -# Print dialog +# Download user interface tokens +# ============================== +# +# This section contains tokens which are used in the download +# window. +# +Download:%s de %s • %s/s • %s restants +DownloadU:%s sur inconnu • %s/s • %s total +Downloaded:%s effectués • moyenne %s/s • %s total +Unwritten:L'écriture de données dans le fichier a échoué. + + +# Printing user interface tokens +# ============================== +# +# This section contains tokens which are used in the printing +# dialog box. +# + PrintSheetFilled:feuille remplie PrintSheetsFilled:feuilles remplies + +# Content +# ======= +# +# This section contains tokens used by contents +# + # Forms +# Form_Submit:Soumettre Form_Reset:Effacer Form_None: Form_Many:(Plusieurs) -Form_Drop:Déposer les fichiers ici +Form_Drop:Déposer les fichiers ici FormSelect:Cliquer pour choisir un item de formulaire FormCheckbox:Cliquer pour cocher cette option FormRadio:Cliquer pour choisir cette option -FormSubmit:Envoyer le formulaire à %s -FormBadSubmit:Alerte: le formulaire n'a pas pu être envoyé -FormTextarea:Cliquer pour éditer ce texte -FormTextbox:Cliquer pour éditer ce champ -FormReset:RAZ du formulaire (non implémenté) -FormFile:Déposer un fichier ici pour le télésauver +FormSubmit:Envoyer le formulaire à %s +FormBadSubmit:Alerte: le formulaire n'a pas pu être envoyé +FormTextarea:Cliquer pour éditer ce texte +FormTextbox:Cliquer pour éditer ce champ +FormReset:RAZ du formulaire (non implémenté) +FormFile:Déposer un fichier ici pour le télésauver +SelectMenu:Sélection + +# Content titles +# +DrawTitle:Image Draw (%lux%lu, %lu octets) +GIFTitle:Image GIF (%lux%lu, %lu octets) +JPEGTitle:Image JPEG (%ux%u, %lu octets) +PNGTitle:Image PNG (%lux%lu, %lu octets) +JNGTitle:Image JNG (%lux%lu, %lu octets) +MNGTitle:Image MNG (%lux%lu, %lu octets) +SpriteTitle:Image Sprite (%lux%lu, %lu octets) + +# HTML page character set +# +Encoding0:dans les entêtes HTTP +Encoding1:détecté +Encoding2:de <meta> +EncodingUnk:Inconnu -Not2xx:Le serveur a renvoyé une erreur +# Cookies +# ======= +# +# Cookies related tokens. +# +# At present, this section simply stores the location of +# the cookie file. This should not be changed. +# cookiefile:Choices:WWW.NetSurf.Cookies cookiejar:<Choices$Write>.WWW.NetSurf.Cookies -ErrorPage:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Erreur</title></head><body><h1>Désolé, NetSurf n'a pas pu afficher cette page</h1><p><strong>%s</strong></p></body></html> +# Errors +# ====== +# +# This section contains error and warning messages which +# are displayed to the user. +# + +# Fetching errors - displayed as an HTML page +# +Not2xx:Le serveur a renvoyé une erreur InvalidURL:L'adresse <em>%s</em> est incomprise. -NoMemory:NetSurf a besoin de plus de mémoire. Veuillez libérer de la mémoire et réessayer. -FontBadInst:Une erreur s'est produite lors de l'initialisation des fontes à cause de la présence de copies obsolètes de fontes ROM sur disque. NetSurf va sortir et lancer un programme qui va tenter de réparer cela. -FontError:Échec d'ouverture de la fonte "Homerton.Medium" (%s). -Resolvers:Aucun nom de domaine n'étant configuré, seul la consultation de fichiers locaux est possible. Utilisez Configure pour définir les serveurs de noms. +# HTML error page +# +ErrorPage:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Erreur</title></head><body><h1>Désolé, NetSurf n'a pas pu afficher cette page</h1><p><strong>%s</strong></p></body></html> + +# General errors - displayed in a dialog box +# +# These may be augmented with further relevant information, which +# is displayed after the contents of the relevant token. +# PathToURL:Une erreur s'est produite en convertissant le chemin du fichier en une URL: -SaveError:Le fichier n'a pas pu être sauvé suite à une erreur: -LoadError:Le fichier n'a pas pu être chargé à cause d'une erreur: +SaveError:Le fichier n'a pas pu être sauvé suite à une erreur: +LoadError:Le fichier n'a pas pu être chargé à cause d'une erreur: MenuError:Une erreur s'est produite lors de l'ouverture du menu: -DragError:Une erreur s'est produite lors du déplacement d'icône: +DragError:Une erreur s'est produite lors du déplacement d'icône: TbarError:Une erreur s'est produite lors de la construction de la barre d'outils: WimpError:Une erreur inattendue du Window Manager s'est produite: DownloadWarn:This download may not complete: -NoDiscSpace:Not enough space available on disc. -Template:Un modèle de fenêtre est absent du fichier Templates. Réinstallez NetSurf SVP. MiscError:Une erreur inattendue s'est produite: FileError:Le fichier n'existe pas: -HotlistSaveError:Les favoris n'ont pas pu être sauvés correctement. -HotlistLoadError:Les favoris n'ont pas pu être chargés correctement. -NoPathError:Pour sauver, lâcher cette icône dans une fenêtre de Filer +PrintError:Une erreur s'est produite lors de l'impression: + +# Specific errors - displayed in a dialog box +# +NoMemory:NetSurf a besoin de plus de mémoire. Veuillez libérer de la mémoire et réessayer. +FontBadInst:Une erreur s'est produite lors de l'initialisation des fontes à cause de la présence de copies obsolètes de fontes ROM sur disque. NetSurf va sortir et lancer un programme qui va tenter de réparer cela. +FontError:Échec d'ouverture de la fonte "Homerton.Medium" (%s). +Resolvers:Aucun nom de domaine n'étant configuré, seul la consultation de fichiers locaux est possible. Utilisez Configure pour définir les serveurs de noms. +NoDiscSpace:Not enough space available on disc. +Template:Un modèle de fenêtre est absent du fichier Templates. Réinstallez NetSurf SVP. +HotlistSaveError:Les favoris n'ont pas pu être sauvés correctement. +HotlistLoadError:Les favoris n'ont pas pu être chargés correctement. +NoPathError:Pour sauver, lâcher cette icône dans une fenêtre de Filer NoNameError:Entrez un nom SVP NoURLError:Entrez une URL SVP -URIError:NetSurf est incapable de traiter ce fichier URI à cause d'une erreur de syntaxe. +URIError:NetSurf est incapable de traiter ce fichier URI à cause d'une erreur de syntaxe. EmptyError:Le fichier est vide. -PrintError:Une erreur s'est produite lors de l'impression: -PrintErrorRO2:Il semble que l'imprimante soit occupée. +PrintErrorRO2:Il semble que l'imprimante soit occupée. -# User queries -AbortDownload:Étes-vous sûr de vouloir interrompre ce téléchargement ? -QuitDownload:Un ou plusieurs téléchargements sont en cours. Êtes-vous sûr de vouloir quitter ? -# Some general purpose words and phrases -Bytes: O -kBytes: KO -MBytes: MO -GBytes: GO +# Queries +# ======= +# +# This section contains queries which are displayed to the user +# -# Progress -Progress:%s reçus de %s +AbortDownload:Étes-vous sûr de vouloir interrompre ce téléchargement ? +QuitDownload:Un ou plusieurs téléchargements sont en cours. Êtes-vous sûr de vouloir quitter ? + + +# Page fetching +# ============= +# +# This section contains messages which may be displayed whilst +# fetching a page or other content +# + +# Fetch status messages - displayed in status bar +# +Progress:%s reçus de %s ProgressU:%s Loading:Ouverture de la page... RecPercent:%s (%u%%) -Received:%s reçus +Received:%s reçus Converting:Conversion de %lu octets -BadRedirect:Mauvais URL de redirection -FetchFailed:Récupération du fichier impossible -Complete:Page terminée (%gs) +Complete:Page terminée (%gs) Redirecting:Redirection en cours... Processing:Traitement du document Formatting:Formatage du document FetchObjs:Chargement de %u objets FetchObjs2:Chargement de %u objets: %s -Done:Document terminé +Done:Document terminé FetchStyle:Chargement de %u feuilles de styles FetchStyle2:Chargement de %u feuilles de styles: %s + +# Fetch warning/error messages - displayed in status bar +# +BadRedirect:Mauvais URL de redirection +FetchFailed:Récupération du fichier impossible NotCSS:Attention: feuille de style non CSS BadObject:Attention: mauvais type d'objet ObjError:Erreur lors du chargement de: %s -ParsingFail:L'analyse syntaxique du document a échoué. +ParsingFail:L'analyse syntaxique du document a échoué. BadGIF:Erreur de lecture de GIF. -PNGError:Erreur dans la bibliothèque PNG. -MNGError:Erreur dans la bibliothèque MNG. -BadSprite:Les données du sprite sont invalides ou corrompues. - -DrawTitle:Image Draw (%lux%lu, %lu octets) -GIFTitle:Image GIF (%lux%lu, %lu octets) -JPEGTitle:Image JPEG (%ux%u, %lu octets) -PNGTitle:Image PNG (%lux%lu, %lu octets) -JNGTitle:Image JNG (%lux%lu, %lu octets) -MNGTitle:Image MNG (%lux%lu, %lu octets) -SpriteTitle:Image Sprite (%lux%lu, %lu octets) - -SelectMenu:Sélection +PNGError:Erreur dans la bibliothèque PNG. +MNGError:Erreur dans la bibliothèque MNG. +BadSprite:Les données du sprite sont invalides ou corrompues. + + +# User interface +# ============== +# +# This section contains messages to deal with user interface +# features. +# + +# Scrollbars - displayed in status bar +# +ScrollUp:Cliquez sur la flèche pour faire défiler vers le haut +ScrollPUp:Cliquez pour faire défiler d'une page vers le haut +ScrollV:Tirez la barre pour la faire défiler verticalement +ScrollPDown:Cliquez pour faire défiler d'une page vers le bas +ScrollDown:Cliquez sur la flèche pour faire défiler vers le bas +ScrollLeft:Cliquez sur la flèche pour faire défiler vers la gauche +ScrollPLeft:Cliquez pour faire défiler d'une page vers la gauche +ScrollH:Tirez la barre pour la faire défiler horizontalement +ScrollPRight:Cliquez pour faire défiler d'une page vers la droite +ScrollRight:Cliquez sur la flèche pour faire défiler vers la droite + + +# Saving +# ====== +# +# Messages used when saving +# SaveSource:Source SaveDraw:PageWeb @@ -257,47 +470,55 @@ SaveText:PageWeb SaveObject:Objet SaveLink:Lien -ScrollUp:Cliquez sur la flèche pour faire défiler vers le haut -ScrollPUp:Cliquez pour faire défiler d'une page vers le haut -ScrollV:Tirez la barre pour la faire défiler verticalement -ScrollPDown:Cliquez pour faire défiler d'une page vers le bas -ScrollDown:Cliquez sur la flèche pour faire défiler vers le bas -ScrollLeft:Cliquez sur la flèche pour faire défiler vers la gauche -ScrollPLeft:Cliquez pour faire défiler d'une page vers la gauche -ScrollH:Tirez la barre pour la faire défiler horizontalement -ScrollPRight:Cliquez pour faire défiler d'une page vers la droite -ScrollRight:Cliquez sur la flèche pour faire défiler vers la droite - -Encoding0:dans les entêtes HTTP -Encoding1:détecté -Encoding2:de <meta> -EncodingUnk:Inconnu -ThemeInstActive:Un thème est en cours de téléchargement ou d'installation. Veuillez attendre que ce soit fini ou annulez l'opération avant d'installer de nouveaux thèmes. -ThemeInstDown:Veuillez attendre le téléchargement du thème. -ThemeInvalid:Le thème téléchargé est invalide ou nécessite une version plus récente de NetSurf. -ThemeInstall:Voulez-vous installer le thème '%s' par %s? -ThemeInstallErr:Une erreur s'est produite pendant l'installation du thème téléchargé. -ThemeApplyErr:Une erreur s'est produite en essayant d'appliquer le thème téléchargé. +# Themes +# ====== +# +# Messages used when installing new themes +# + +ThemeInstActive:Un thème est en cours de téléchargement ou d'installation. Veuillez attendre que ce soit fini ou annulez l'opération avant d'installer de nouveaux thèmes. +ThemeInstDown:Veuillez attendre le téléchargement du thème. +ThemeInvalid:Le thème téléchargé est invalide ou nécessite une version plus récente de NetSurf. +ThemeInstall:Voulez-vous installer le thème '%s' par %s? +ThemeInstallErr:Une erreur s'est produite pendant l'installation du thème téléchargé. +ThemeApplyErr:Une erreur s'est produite en essayant d'appliquer le thème téléchargé. + + +# General +# ======= +# +# Some general purpose words and phrases +# + +Bytes: O +kBytes: KO +MBytes: MO +GBytes: GO + # Interactive help -HelpToolbar0:\Tle bouton de retour.|M\Srevenir d'une page en arrière dans l'historique.|MNe renvoie pas l'information de formulaire. +# ================ +# +# This section contains interactive help messages +# +HelpToolbar0:\Tle bouton de retour.|M\Srevenir d'une page en arrière dans l'historique.|MNe renvoie pas l'information de formulaire. HelpToolbar1:\Tle bouton d'avance.|M\Savancer d'une page dans l'historique.|MNe renvoie pas l'information de formulaire. -HelpToolbar2:\Tle bouton Stop.|M\Sarrêter le chargement de la page. +HelpToolbar2:\Tle bouton Stop.|M\Sarrêter le chargement de la page. HelpToolbar3:\Tle bouton de recharge.|M\Srecharger cette page.|M\Arecharger cette page et tous les objets qu'elle contient. -HelpToolbar4:\Tle bouton Accueil.|M\Saller à votre page d'accueil. +HelpToolbar4:\Tle bouton Accueil.|M\Saller à votre page d'accueil. HelpToolbar5:\Tle bouton d'historique.|M\Souvrir la \w d'historique locale.|M\Aopen the global history \w. HelpToolbar6:\Tle bouton de sauvegarde.|M\Ssauver le document en cours. HelpToolbar7:\Tle bouton d'impression.|M\Simprimer cette page.|MOuvre une boîte de dialogue pour l'impression. HelpToolbar8:\Tle bouton de favoris.|M\Souvrir la \w de gestion des favoris.|M\Aajouter cette adresse aux favoris. -HelpToolbar9:\Tle bouton de changement d'échelle.|M\Sredimensionner la page, texte et images comprises. +HelpToolbar9:\Tle bouton de changement d'échelle.|M\Sredimensionner la page, texte et images comprises. HelpToolbar10:\Tle bouton de recherche.|M\Sfind instances of a string of text on the page. -HelpToolbar11:\Tla barre d'URL.|MTapez l'adresse d'un site à visiter et appuyez sur Return pour y aller. +HelpToolbar11:\Tla barre d'URL.|MTapez l'adresse d'un site à visiter et appuyez sur Return pour y aller. HelpToolbar12:\Tle pulseur.|MIl s'anime lorsque cette \w est active. -HelpToolbar13:\Tl'icône de suggestion d'URL.|M\Souvrir une liste d'URLs tapées récemment. +HelpToolbar13:\Tl'icône de suggestion d'URL.|M\Souvrir une liste d'URLs tapées récemment. -HelpStatus0:\Tla glissière de la barre d'état.|MDéplacez-la pour changer la taille de la barre d'état. -HelpStatus1:\Tla barre d'état.|MElle affiche des informations sur ce que fait la \w de navigateur. +HelpStatus0:\Tla glissière de la barre d'état.|MDéplacez-la pour changer la taille de la barre d'état. +HelpStatus1:\Tla barre d'état.|MElle affiche des informations sur ce que fait la \w de navigateur. HelpIconMenu0:\Rvoir des informations sur ce logiciel. HelpIconMenu1:\Svoir la documentation de NetSurf. @@ -305,13 +526,13 @@ HelpIconMenu2:\Ropen a window. HelpIconMenu2-0:\Renter an address to visit. HelpIconMenu2-1:\Sopen the hotlist management \w. HelpIconMenu2-2:\Sopen the global history \w. -HelpIconMenu3:\Souvrir la boîte de dialogue des Préférences. +HelpIconMenu3:\Souvrir la boîte de dialogue des Préférences. HelpIconMenu3:\Squitter NetSurf. HelpBrowserMenu0:\Rvoir les options en rapport avec la page en cours. HelpBrowserMenu0-0:\Rvoir les informations concernant la page en cours. HelpBrowserMenu0-1:\Rsauver la page courante en fichier HTML. -HelpBrowserMenu0-2:\Rsauver la page courante y compris toutes les images et les feuilles de style utilisées. +HelpBrowserMenu0-2:\Rsauver la page courante y compris toutes les images et les feuilles de style utilisées. HelpBrowserMenu0-3:\Rvoir les options d'exportation. HelpBrowserMenu0-3-0:\Rexporter la page courante en Drawfile. HelpBrowserMenu0-3-1:\Rexporter la page courante en simple fichier texte. @@ -320,9 +541,9 @@ HelpBrowserMenu0-4-0:\Rsauver l'adresse en cours au format Acorn URI. HelpBrowserMenu0-4-1:\Rsauver l'adresse en cours au format Ant URL. HelpBrowserMenu0-4-2:\Rsauver l'adresse courante en simple texte. HelpBrowserMenu0-5:\Souvrir la boîte de dialogue d'impression. -HelpBrowserMenu0-6:\Souvrir la page courante dans une nouvelle fenêtre. -HelpBrowserMenu0-7:\Svoir le code source de la page courante dans un éditeur de texte. -HelpBrowserMenu1:\Rvoir les options correspondant à l'objet courant. +HelpBrowserMenu0-6:\Souvrir la page courante dans une nouvelle fenêtre. +HelpBrowserMenu0-7:\Svoir le code source de la page courante dans un éditeur de texte. +HelpBrowserMenu1:\Rvoir les options correspondant à l'objet courant. HelpBrowserMenu1-0:\Rvoir les informations sur l'objet en cours. HelpBrowserMenu1-1:\Rsauver l'objet courant. HelpBrowserMenu1-2:\Rvoir les options d'exportation. @@ -333,114 +554,132 @@ HelpBrowserMenu1-3-1:\Rsauver l'adresse de l'objet courant au format Ant URL. HelpBrowserMenu1-3-2:\Rsauver l'adresse de l'objet courant en texte simple. HelpBrowserMenu1-4:\Srecharger tous les objets de cete page. HelpBrowserMenu2:\Rvoir les options de navigation. -HelpBrowserMenu2-0:\Srevenir à la page d'accueil configurée. -HelpBrowserMenu2-1:\Sreculer d'une page dans l'historique local.|ML'information du formlaire n'est pas réenvoyée. -HelpBrowserMenu2-2:\Savancer d'une page dans l'historique local.|ML'information du formlaire n'est pas réenvoyée. +HelpBrowserMenu2-0:\Srevenir à la page d'accueil configurée. +HelpBrowserMenu2-1:\Sreculer d'une page dans l'historique local.|ML'information du formlaire n'est pas réenvoyée. +HelpBrowserMenu2-2:\Savancer d'une page dans l'historique local.|ML'information du formlaire n'est pas réenvoyée. HelpBrowserMenu2-3:\Srecommencer le chargement de la page courante. -HelpBrowserMenu2-4:\Sarrêter le chargement de la page par NetSurf. -HelpBrowserMenu3:\Rdéfinir les options d'affichage locales. +HelpBrowserMenu2-4:\Sarrêter le chargement de la page par NetSurf. +HelpBrowserMenu3:\Rdéfinir les options d'affichage locales. HelpBrowserMenu3-0:\Rredimensionner la page, y compris texte et images. -HelpBrowserMenu3-1:\Rdéfinir les options d'images locales. +HelpBrowserMenu3-1:\Rdéfinir les options d'images locales. #HelpBrowserMenu3-1-0:\Safficher ou pas des images de premier plan. HelpBrowserMenu3-1-1:\Safficher ou pas des images de fond. -HelpBrowserMenu3-1-2:\Safficher ou pas des animations.|MSi les animations ne sont pas montrées, seule la première image est affichée. +HelpBrowserMenu3-1-2:\Safficher ou pas des animations.|MSi les animations ne sont pas montrées, seule la première image est affichée. HelpBrowserMenu3-2:\Rcontroler l'affichage des barres d'outils de NetSurf. HelpBrowserMenu3-2-0:\Safficher ou pas les boutons de la barre d'outil.|MLa barre d'URL utilise l'espace restant. HelpBrowserMenu3-2-1:\Safficher ou pas la barre d'adresse (URL). HelpBrowserMenu3-2-2:\Safficher le pulseur ou pas.|MLa barre d'URL utilise l'espace restant. -HelpBrowserMenu3-2-3:\Safficher la barre d'état ou pas.|MLa barre de défilement horizontal utilise la largeur restante. -HelpBrowserMenu3-3:\Scontroler la façon d'afficher. -HelpBrowserMenu3-3-0:\Safficher le texte panaché avec le fond (text blend) ou pas. -HelpBrowserMenu3-3-1:\Sdécider si les animations sont affichées quand tous les calculs sont terminés (ou avant). -HelpBrowserMenu3-3-2:\Sdécider si tout doit être affiché quand tous les calculs sont terminés (ou avant). -HelpBrowserMenu3-4:\Spromouvoir vos options d'affichage locales en options par défaut pour NetSurf. -HelpBrowserMenu4:\Raccéder aux utilitaires intégrés à NetSurf.|MLes utilitaires sont des outils comme les favoris, l'historique arborescent et diverses options de configuration. -HelpBrowserMenu4-0:\Rgérer les favoris. +HelpBrowserMenu3-2-3:\Safficher la barre d'état ou pas.|MLa barre de défilement horizontal utilise la largeur restante. +HelpBrowserMenu3-3:\Scontroler la façon d'afficher. +HelpBrowserMenu3-3-0:\Safficher le texte panaché avec le fond (text blend) ou pas. +HelpBrowserMenu3-3-1:\Sdécider si les animations sont affichées quand tous les calculs sont terminés (ou avant). +HelpBrowserMenu3-3-2:\Sdécider si tout doit être affiché quand tous les calculs sont terminés (ou avant). +HelpBrowserMenu3-4:\Spromouvoir vos options d'affichage locales en options par défaut pour NetSurf. +HelpBrowserMenu4:\Raccéder aux utilitaires intégrés à NetSurf.|MLes utilitaires sont des outils comme les favoris, l'historique arborescent et diverses options de configuration. +HelpBrowserMenu4-0:\Rgérer les favoris. HelpBrowserMenu4-0-0:\Sajouter la page en cours aux favoris. HelpBrowserMenu4-0-1:\Souvrir la \w de gestion des favoris. HelpBrowserMenu4-1:\Rview the history options. HelpBrowserMenu4-1-0:\Souvrir la \w d'historique local. -HelpBrowserMenu4-1-1:\Souvrir la fenêtre d'historique global. +HelpBrowserMenu4-1-1:\Souvrir la fenêtre d'historique global. HelpBrowserMenu4-2:\Rchercher un fragment de texte sur la page. -HelpBrowserMenu4-3:\Rcontroler le positionnement de fenêtre par défaut. -HelpBrowserMenu4-3-0:\Spromouvoir la position de fenêtre courante en celle par défault. -HelpBrowserMenu4-3-1:\Sdécider si les fenêtres suivantes doivent être ouvertes en décalage à l'écran. -HelpBrowserMenu4-3-2:\Sdécider si les fenêtres-filles doivent être ouvertes à la même taille que celle de leurs parents. -HelpBrowserMenu4-3-3:\Srevenir au positionnement de fenêtre par défaut. +HelpBrowserMenu4-3:\Rcontroler le positionnement de fenêtre par défaut. +HelpBrowserMenu4-3-0:\Spromouvoir la position de fenêtre courante en celle par défault. +HelpBrowserMenu4-3-1:\Sdécider si les fenêtres suivantes doivent être ouvertes en décalage à l'écran. +HelpBrowserMenu4-3-2:\Sdécider si les fenêtres-filles doivent être ouvertes à la même taille que celle de leurs parents. +HelpBrowserMenu4-3-3:\Srevenir au positionnement de fenêtre par défaut. HelpBrowserMenu5:\Rvoir l'aide disponible. -HelpBrowserMenu5-0:\Souvrir la page de documentation dans une nouvelle fenêtre. -HelpBrowserMenu5-1:\Souvrir le guide de l'utilisateur dans une nouvelle fenêtre. -HelpBrowserMenu5-2:\Souvrir la page d'information de l'utilisateur dans une nouvelle fenêtre. -HelpBrowserMenu5-3:\Souvrir la page "À propos de" de NetSurf dans une nouvelle fenêtre. +HelpBrowserMenu5-0:\Souvrir la page de documentation dans une nouvelle fenêtre. +HelpBrowserMenu5-1:\Souvrir le guide de l'utilisateur dans une nouvelle fenêtre. +HelpBrowserMenu5-2:\Souvrir la page d'information de l'utilisateur dans une nouvelle fenêtre. +HelpBrowserMenu5-3:\Souvrir la page "À propos de" de NetSurf dans une nouvelle fenêtre. HelpBrowserMenu5-4:\Slancer Help. HelpBrowser-1:Cliquer \s sur un lien pour le suivre.|MCliquer \a sur un lien pour l'ouvrir dans une nouvelle \w. -HelpIconbar:\Tl'icône de NetSurf.|M\Souvrir une nouvelle \w de navigateur.|M\Aouvrir la fenêtre de gestion des favoris. -HelpHistory:Utiliser cette \w pour naviguer dans l'historique arborescent local.|M\Ssur une vignette pour revenir à cette page. +HelpIconbar:\Tl'icône de NetSurf.|M\Souvrir une nouvelle \w de navigateur.|M\Aouvrir la fenêtre de gestion des favoris. +HelpHistory:Utiliser cette \w pour naviguer dans l'historique arborescent local.|M\Ssur une vignette pour revenir à cette page. -HelpSaveAs0:Déposer cette icône dans le repertoire où vous voulez sauver le fichier. -HelpSaveAs1:Ceci est le nom de fichier sous lequel le document sera sauvé. -HelpSaveAs2:\Ssauver le fichier avec le nom de fichier en cours.|MSi le nom de chemin n'est pas complet, il vous faudra déposer l'icône dans un répertoire. +HelpSaveAs0:Déposer cette icône dans le repertoire où vous voulez sauver le fichier. +HelpSaveAs1:Ceci est le nom de fichier sous lequel le document sera sauvé. +HelpSaveAs2:\Ssauver le fichier avec le nom de fichier en cours.|MSi le nom de chemin n'est pas complet, il vous faudra déposer l'icône dans un répertoire. HelpSaveAs3:\Sfermer cette \w sans sauvegarder. -HelpScaleView:Utiliser cette \w pour changer l'échelle d'affichage. -HelpScaleView1:Saisissez l'échelle à laquelle vous voulez afficher cette page. -HelpScaleView2:\Sréduire l'échelle, par pas de 10%. -HelpScaleView3:\Saugmenter l'échelle, par pas de 10%. -HelpScaleView5:\Sdirectement choisir une échelle de 75%. -HelpScaleView6:\Sdirectement choisir une échelle de 100%. -HelpScaleView7:\Sdirectement choisir une échelle de 150%. -HelpScaleView8:\Sdirectement choisir une échelle de 200%. -HelpScaleView9:\Sannuler les changements.|ML'échelle en cours ne sera pas modifiée. -HelpScaleView10:\Svalider le changement d'échelle. - -HelpHotFolder:Utiliser cette \w pour définir le nom de répertoire. -HelpHotEntry:Utiliser cette \w pour définir les détails de cette entrée. -HelpHotlist:\Tla fenêtre de gestion des favoris. -HelpHotlist0:\Souvrir ce répertoire. -HelpHotlist1:\Sfermer ce répertoire. -HelpHotlist2:\Smontrer les détails de cette entrée. -HelpHotlist3:\Scacher les détails de cette entrée. -HelpHotlist4:\Ssélectionner ce répertoire.|MDouble-cliquer \s pour ouvrir ce répertoire. -HelpHotlist5:\Ssélectionner cette entrée.|MDouble-cliquer \s pour lancer cette URL. -HelpHotlist6:Lâcher les boutons de souris pour terminer votre sélection. -HelpHotlist7:Lâcher les boutons de souris pour déplacer votre sélection. - -HelpHotToolbar0:\Tle bouton Supprimer.|M\Ssupprimer la sélection courante. -HelpHotToolbar1:\Tle bouton de déploiement des entrées.|M\Sdéployer toutes les entrées ou seulement celle de la sélection courante.|M\ARegrouper toutes les entrées ou seulement celles de la sélection courante.|MLes entrées déployées affichent des infos supplémentaires, comme un compteur de visite. -HelpHotToolbar2:\Tle bouton d'ouverture de répertoires.|M\Souvrir tous les répertoires ou seulement ceux de la sélection courante.|M\Afermer tous les répertoires ou seulement ceux de la sélection courante. -HelpHotToolbar3:\Tle bouton de lancement.|M\Slancer (ouvrir) la sélection en cours. -HelpHotToolbar4:\Tle bouton Créer.|M\Scréer un nouveau répertoire. - -HelpHotlistMenu0:\Raccomplir une opération sur les favoris. -HelpHotlistMenu0-0:\Rcréer un nouvel item. -HelpHotlistMenu0-0-0:\Rcréer un nouveau répertoire. -HelpHotlistMenu0-0-1:\Rcréer une nouvelle adresse. +HelpScaleView:Utiliser cette \w pour changer l'échelle d'affichage. +HelpScaleView1:Saisissez l'échelle à laquelle vous voulez afficher cette page. +HelpScaleView2:\Sréduire l'échelle, par pas de 10%. +HelpScaleView3:\Saugmenter l'échelle, par pas de 10%. +HelpScaleView5:\Sdirectement choisir une échelle de 75%. +HelpScaleView6:\Sdirectement choisir une échelle de 100%. +HelpScaleView7:\Sdirectement choisir une échelle de 150%. +HelpScaleView8:\Sdirectement choisir une échelle de 200%. +HelpScaleView9:\Sannuler les changements.|ML'échelle en cours ne sera pas modifiée. +HelpScaleView10:\Svalider le changement d'échelle. + +HelpHotFolder:Utiliser cette \w pour définir le nom de répertoire. +HelpHotEntry:Utiliser cette \w pour définir les détails de cette entrée. +HelpHotlist:\Tla fenêtre de gestion des favoris. +HelpHotlist0:\Souvrir ce répertoire. +HelpHotlist1:\Sfermer ce répertoire. +HelpHotlist2:\Smontrer les détails de cette entrée. +HelpHotlist3:\Scacher les détails de cette entrée. +HelpHotlist4:\Ssélectionner ce répertoire.|MDouble-cliquer \s pour ouvrir ce répertoire. +HelpHotlist5:\Ssélectionner cette entrée.|MDouble-cliquer \s pour lancer cette URL. +HelpHotlist6:Lâcher les boutons de souris pour terminer votre sélection. +HelpHotlist7:Lâcher les boutons de souris pour déplacer votre sélection. + +HelpHotToolbar0:\Tle bouton Supprimer.|M\Ssupprimer la sélection courante. +HelpHotToolbar1:\Tle bouton de déploiement des entrées.|M\Sdéployer toutes les entrées ou seulement celle de la sélection courante.|M\ARegrouper toutes les entrées ou seulement celles de la sélection courante.|MLes entrées déployées affichent des infos supplémentaires, comme un compteur de visite. +HelpHotToolbar2:\Tle bouton d'ouverture de répertoires.|M\Souvrir tous les répertoires ou seulement ceux de la sélection courante.|M\Afermer tous les répertoires ou seulement ceux de la sélection courante. +HelpHotToolbar3:\Tle bouton de lancement.|M\Slancer (ouvrir) la sélection en cours. +HelpHotToolbar4:\Tle bouton Créer.|M\Scréer un nouveau répertoire. + +HelpHotlistMenu0:\Raccomplir une opération sur les favoris. +HelpHotlistMenu0-0:\Rcréer un nouvel item. +HelpHotlistMenu0-0-0:\Rcréer un nouveau répertoire. +HelpHotlistMenu0-0-1:\Rcréer une nouvelle adresse. HelpHotlistMenu0-1:\Rexporter les favoris en fichier HTML. -HelpHotlistMenu0-2:\Rdéployer les items dans la liste des favoris. -HelpHotlistMenu0-2-0:\Souvrir tous les répertoires et afficher tous les détails connus sur les entrées. -HelpHotlistMenu0-2-1:\Souvrir tous les répertoires. -HelpHotlistMenu0-2-2:\Smontrer tous les détails sur les entrées. +HelpHotlistMenu0-2:\Rdéployer les items dans la liste des favoris. +HelpHotlistMenu0-2-0:\Souvrir tous les répertoires et afficher tous les détails connus sur les entrées. +HelpHotlistMenu0-2-1:\Souvrir tous les répertoires. +HelpHotlistMenu0-2-2:\Smontrer tous les détails sur les entrées. HelpHotlistMenu0-3:\Rregrouper les items dans la liste des favoris. -HelpHotlistMenu0-3-0:\Sfermer tous les répertoires et cacher les détails sur les entrées. -HelpHotlistMenu0-3-1:\Sfermer tous les répertoires. -HelpHotlistMenu0-3-2:\Scacher tous les détails sur les entrées. +HelpHotlistMenu0-3-0:\Sfermer tous les répertoires et cacher les détails sur les entrées. +HelpHotlistMenu0-3-1:\Sfermer tous les répertoires. +HelpHotlistMenu0-3-2:\Scacher tous les détails sur les entrées. HelpHotlistMenu0-4:\Rcontrol the display of NetSurf's toolbars. HelpHotlistMenu0-4-0:\Stoggle the display of the toolbar buttons. -HelpHotlistMenu1:\Ragir sur la sélection en cours. -HelpHotlistMenu1-0:\Rééditer l'item en cours. -HelpHotlistMenu1-1:\Slancer la sélection courante. -HelpHotlistMenu1-2:\Ssupprimer la sélection courante de la liste des favoris. -HelpHotlistMenu1-3:\Sremettre à zéro les statistiques, comme le compteur de visite, pour les items sélectionnés. -HelpHotlistMenu2:\Ssélectionner tous les items de la liste des favoris. -HelpHotlistMenu3:\Sdésélectionner la sélection courante. - -HelpGHistory:\Tla fenêtre d'historique global. - -HelpGHistoryToolbar0:\Tle bouton de suppression.|M\Ssupprimer la sélection en cours. -HelpGHistoryToolbar1:\Tle bouton de déploiement des entrées.|M\Sdéployer toutes les adresses des favoris.|M\Aregrouper toutes les adresses des favoris.|MLes adresses déployées apportent des détails supplémentaires, comme un compteur de visites. -HelpGHistoryToolbar2:\Tle bouton d'ouverture de répertoires.|M\Souvrir tous les répertoires des favoris.|M\Afermer tous les répertoires des favoris. -HelpGHistoryToolbar3:\Tle bouton de lancement.|M\Slancer la sélection en cours. - -HelpAppInfo:\Tla \w d'information de NetSurf.|MVoir la page "À propos de" pour une liste des contributeurs et les remerciements. +HelpHotlistMenu1:\Ragir sur la sélection en cours. +HelpHotlistMenu1-0:\Rééditer l'item en cours. +HelpHotlistMenu1-1:\Slancer la sélection courante. +HelpHotlistMenu1-2:\Ssupprimer la sélection courante de la liste des favoris. +HelpHotlistMenu1-3:\Sremettre à zéro les statistiques, comme le compteur de visite, pour les items sélectionnés. +HelpHotlistMenu2:\Ssélectionner tous les items de la liste des favoris. +HelpHotlistMenu3:\Sdésélectionner la sélection courante. + +HelpGHistory:\Tla fenêtre d'historique global. + +HelpGHistoryToolbar0:\Tle bouton de suppression.|M\Ssupprimer la sélection en cours. +HelpGHistoryToolbar1:\Tle bouton de déploiement des entrées.|M\Sdéployer toutes les adresses des favoris.|M\Aregrouper toutes les adresses des favoris.|MLes adresses déployées apportent des détails supplémentaires, comme un compteur de visites. +HelpGHistoryToolbar2:\Tle bouton d'ouverture de répertoires.|M\Souvrir tous les répertoires des favoris.|M\Afermer tous les répertoires des favoris. +HelpGHistoryToolbar3:\Tle bouton de lancement.|M\Slancer la sélection en cours. + +HelpAppInfo:\Tla \w d'information de NetSurf.|MVoir la page "À propos de" pour une liste des contributeurs et les remerciements. + + +# Unused tokens +# ============= +# +# These tokens appear to be unused at the current time. +# + +# Tree export +TreeHotlist:Favoris de NetSurf +TreeHistory:Historique de NetSurf +SaveSelect:Sauver +ExportAs:Exporter sous +Copy:Copier vers le presse-papier ^C +AnimImg:Animations +DitherImg:Tramage +FilterImg:Adoucir les images +RenderText:Panachage du texte sur le fond diff --git a/!NetSurf/Resources/nl/Messages b/!NetSurf/Resources/nl/Messages index 1346a4bac..7b14b554a 100644 --- a/!NetSurf/Resources/nl/Messages +++ b/!NetSurf/Resources/nl/Messages @@ -1,142 +1,259 @@ -# Nederlandstalige meldingen voor NetSurf, gebaseerd op (Eng: 09/12/2004 en 01/01/2005) en (Ned.) 17/06/2005 - -# Menu's +# Nederlandstalige meldingen voor NetSurf +# ======================================= +# gebaseerd op (Eng: 09/12/2004 en 01/01/2005) en (Ned.) 17/06/2005 +# +# Description +# ----------- +# +# This file contains lines of colon separated key-value pairs in the format: +# +# Key:Value +# +# Contents of Key _must_ be representable in the US-ASCII character set and +# should not be modified for translation purposes. +# +# Values must be UTF-8 encoded strings. When these strings are displayed in +# NetSurf's user interface, they are converted to the system's local character +# set. As a result of this conversion process, unrepresentable characters are +# stripped from the displayed string. +# +# Blank lines and lines starting with a # character are treated as comments and +# ignored. +# + + +# Menus +# ===== +# +# This section defines the title and entry text for NetSurf's menus. +# + +# Iconbar menu +# NetSurf:NetSurf Info:Informatie -Open:Open -OpenURL:Open URL... AppHelp:Hulp... F1 +Open:Open Choices:Keuzes... Quit:Stop +# Iconbar -> Open menu +# +OpenURL:Open URL + +# Main menu +# Page:Pagina +Object:Object +Navigate:Navigeer +View:Weergave +Utilities:Utilities +Help:Hulp + +# Main -> Page menu +# PageInfo:Informatie ^F1 Save:Bewaar F3 -SaveComp:Bewaar alles ‹F3 +SaveComp:Bewaar alles ⇑F3 Export:Exporteer -ExportAs:Exporteer als -Draw:Draw ‹^F3 -Text:Tekst ^F3 SaveURL:Bewaar adres Print:Afdrukken PRINT NewWindow:Nieuw venster ^N ViewSrc:Bekijk HTML... F8 -Object:Object -ObjInfo:Informatie -ObjSave:Bewaar -ObjReload:Herlaad + +# Main -> Page -> Export menu +# +Draw:Draw ⇑^F3 +Text:Tekst ^F3 + +# Main -> Page -> Save location menu +# URI:Acorn URI URL:ANT URL LinkText:Tekst -Selection:Selectie -Copy:Copieer naar prikbord ^C -SelectAll:Selecteer alles ^A -Clear:Selectie opheffen ^Z -Navigate:Navigeer + +# Main -> Object menu +# +ObjInfo:Informatie +ObjSave:Bewaar +ObjReload:Herlaad + +# Main -> Object -> Export menu +# +Sprite:Sprite + +# Main -> Navigate menu +# Home:Startpagina Back:Vorige pagina Forward:Volgende pagina -Reload:Pagina opnieuw laden ^R +Reload:Pagina opnieuw laden ^F5 Stop:Pagina ophalen afbreken -View:Weergave + +# Main -> Display menu +# ScaleView:Pagina schalen F11 Images:Afbeeldingen +Toolbars:Werkbalk +Render:Weergeven +OptDefault:Als standaard instellen + +# Main -> Display -> Images menu +# ForeImg:Voorgrondafbeelding BackImg:Achtergrondafbeelding -AnimImg:Animatie -DitherImg:Dither afbeelding -FilterImg:Smooth afbeelding -Toolbars:Werkbalk + +# Main -> Display -> Toolbars menu +# ToolButtons:Knoppen ToolAddress:Adresbalk ToolThrob:Laadactiviteit ToolStatus:Status balk -Render:Weergeven -RenderText:Tekst met achtergrond mengen + +# Main -> Display -> Render menu +# RenderAnims:Buffer animaties RenderAll:Buffer alle weergaven -OptDefault:Als standaard instellen + +# Main -> Utilities menu +# +Hotlist:Bladwijzers +History:Historie +FindText:Tekst zoeken F4 Window:Venster -WindowSave:Als standaard positie opslaan -WindowStagr:Nieuw venster verplaatsen -WindowSize:Copieer venster positie -WindowReset:Venster positie terugzetten -Utilities:Utilities + +# Main -> Utilities -> Hotlist menu +# HotlistAdd:Toevoegen aan bladwijzers HotlistShow:Toon bladwijzers F6 -History:Historie + +# Main -> Utilities -> History menu +# HistLocal:Toon historie (lokaal)... F7 HistGlobal:Toon historie (globaal)... ^F7 -FindText:Tekst zoeken F4 -Help:Hulp + +# Main -> Utilities -> Window menu +# +WindowSave:Als standaard positie opslaan +WindowStagr:Nieuw venster verplaatsen +WindowSize:Copieer venster positie +WindowReset:Venster positie terugzetten + +# Main -> Help menu +# HelpContent:Inhoud F1 HelpGuide:Handboek HelpInfo:Gebruikers informatie -HelpInter:Interactieve hulp HelpAbout:Over NetSurf +HelpInter:Interactieve hulp -Languages:Taal +# Toolbar menu +# +Toolbar:Werkbalk +EditToolbar:Werkbalk aanpassen + +# Generic tree menus (currently Hotlist and Global history) +# +Selection:Selectie +SelectAll:Selecteer alles ^A +Clear:Selectie opheffen ^Z + +# Selection Menu +# +Edit:Bewerken +Launch:Openen RETURN +Delete:Verwijderen ^X +ResetUsage:Statistiek op nul zetten + +# Hotlist/Global history menu +# +New:Nieuw +Expand:Uitklappen +Collapse:Inklappen + +# New hotlist entry menu +# +Folder:Map +Link:Adres + +# Tree expand/collapse menu +# +All:Alles +Folders:Mappen +Links:Adressen + +# Other menus +# +# URL suggestion menu +URLSuggest:Recente URLs +# Menus within the choices system +# +# Browser pane +Languages:Taal +# +# Network pane ProxyAuth:Authentificatie ProxyNone:Geen ProxyBasic:Basis ProxyNTLM:NTLM - -# Image redraw style +# +# Fonts pane +Fonts:Lettertypen +# +# Images pane Display:Weergave ImgStyle0:RISC OS gebruiken ImgStyle1:Direct weergave ImgStyle2:Ditheren ImgStyle3:Error-diffusie -# Toolbar menus -URLSuggest:Recente URLs -Toolbar:Werkbalk -EditToolbar:Werkbalk aanpassen -# Font menu -Fonts:Lettertypen +# Treeview interface tokens +# ========================= +# +# This section contains tokens which are used in the treeview +# component. (For example, in the main hotlist/global history windows) +# -# Hotlist menus -Hotlist:Bladwijzers -New:Nieuw -Expand:Uitklappen -Collapse:Inklappen -All:Alles -Folders:Mappen -Folder:Map -Links:Adressen -Link:Adres -SaveSelect:Bewaar -Launch:Openen RETURN -Edit:Bewerken -Delete:Verwijderen ^X -ResetUsage:Statistiek op nul zetten +# Tree URL text +# +TreeAdded:Toegevoegd: %s +TreeLast:Laatst bezocht: %s +TreeVisited:Bezocht: %s +TreeVisits:Bezichtigd: %i keer +TreeUnknown:Onbekend +TreeImport:Ge-importeerde URL +TreeNewFolder:Nieuwe map + + +# Hotlist user interface tokens +# ============================= +# +# This section contains tokens which are used in various parts of +# the hotlist user interface. +# # Hotlist sub-window titles +# NewLink:Nieuw adres aanmaken NewFolder:Nieuwe map aanmaken EditLink:Bewerk adres EditFolder:Map hernoemen -# Default hotlist +# Default hotlist page names +# HotlistHomepage:NetSurf homepage HotlistTestBuild:NetSurf test versie -# Tree URL text -TreeAdded:Toegevoegd: %s -TreeLast:Laatst bezocht: %s -TreeVisited:Bezocht: %s -TreeVisits:Bezichtigd: %i keer -TreeUnknown:Onbekend -TreeImport:Ge-importeerde URL -TreeNewFolder:Nieuwe map -# Tree export -TreeHotlist:NetSurf bladwijzers -TreeHistory:NetSurf historie +# Global history user interface tokens +# ==================================== +# +# This section contains tokens which are used in various parts of +# the global history user interface. +# -# Global history GlobalHistory:Historie (globaal) DateToday:vandaag DateYesterday:gisteren @@ -144,17 +261,38 @@ Date1Week:vorige week Date2Week:2 weken geleden Date3Week:3 weken geleden -# Download window -Download:%s van %s %s/s nog %s -DownloadU:%s van onbekend %s/s %s totaal -Downloaded:%s compleet gemiddeld %s/s %s totaal + +# Download user interface tokens +# ============================== +# +# This section contains tokens which are used in the download +# window. +# +Download:%s van %s • %s/s • nog %s +DownloadU:%s van onbekend • %s/s • %s totaal +Downloaded:%s compleet • gemiddeld %s/s • %s totaal Unwritten:Data naar bestand schrijven ging fout. -# Print dialog + +# Printing user interface tokens +# ============================== +# +# This section contains tokens which are used in the printing +# dialog box. +# + PrintSheetFilled:pagina PrintSheetsFilled:pagina's + +# Content +# ======= +# +# This section contains tokens used by contents +# + # Forms +# Form_Submit:Versturen Form_Reset:Reset Form_None: @@ -169,19 +307,58 @@ FormTextarea:Klikken om tekst te bewerken FormTextbox:Klikken om dit veld te bewerken FormReset:Reset form (not implemented) FormFile:Plaats het bestand hier voor uploaden +SelectMenu:Select -Not2xx:Server retourneert een fout +# Content titles +# +DrawTitle:Draw image (%lux%lu, %lu bytes) +GIFTitle:GIF image (%lux%lu, %lu bytes) +JPEGTitle:JPEG image (%ux%u, %lu bytes) +PNGTitle:PNG image (%lux%lu, %lu bytes) +JNGTitle:JNG image (%lux%lu, %lu bytes) +MNGTitle:MNG image (%lux%lu, %lu bytes) +SpriteTitle:Sprite image (%lux%lu, %lu bytes) + +# HTML page character set +# +Encoding0:from HTTP headers +Encoding1:detected +Encoding2:from <meta> +EncodingUnk:Unknown + +# Cookies +# ======= +# +# Cookies related tokens. +# +# At present, this section simply stores the location of +# the cookie file. This should not be changed. +# cookiefile:Choices:WWW.NetSurf.Cookies cookiejar:<Choices$Write>.WWW.NetSurf.Cookies -ErrorPage:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Page error</title></head><body><h1>Sorry, NetSurf was unable to display this page</h1><p><strong>%s</strong></p></body></html> +# Errors +# ====== +# +# This section contains error and warning messages which +# are displayed to the user. +# + +# Fetching errors - displayed as an HTML page +# +Not2xx:Server retourneert een fout InvalidURL:The address <em>%s</em> could not be understood. -NoMemory:NetSurf is running out of memory. Please free some memory and try again. -FontBadInst:An error occurred when initialising fonts due to the presence of obsolete copies of the ROM fonts on disc. NetSurf will exit and launch a program which will attempt to fix this. -FontError:Failed to open font "Homerton.Medium" (%s). -Resolvers:No domain name servers are configured, so only browsing local files will be possible. Use Configure to set your name server(s). +# HTML error page +# +ErrorPage:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Page error</title></head><body><h1>Sorry, NetSurf was unable to display this page</h1><p><strong>%s</strong></p></body></html> + +# General errors - displayed in a dialog box +# +# These may be augmented with further relevant information, which +# is displayed after the contents of the relevant token. +# PathToURL:An error occurred converting the file path to an URL: SaveError:The file could not be saved due to an error: LoadError:The file could not be loaded due to an error: @@ -190,10 +367,18 @@ DragError:An error occurred when dragging the icon: TbarError:An error occurred when constructing the toolbar: WimpError:An unexpected Window Manager error occurred: DownloadWarn:This download may not complete: -NoDiscSpace:Not enough space available on disc. -Template:A window template is missing from the Templates file. Please reinstall NetSurf. MiscError:An unexpected error occurred: FileError:File does not exist: +PrintError:An error occurred when printing: + +# Specific errors - displayed in a dialog box +# +NoMemory:NetSurf is running out of memory. Please free some memory and try again. +FontBadInst:An error occurred when initialising fonts due to the presence of obsolete copies of the ROM fonts on disc. NetSurf will exit and launch a program which will attempt to fix this. +FontError:Failed to open font "Homerton.Medium" (%s). +Resolvers:No domain name servers are configured, so only browsing local files will be possible. Use Configure to set your name server(s). +NoDiscSpace:Not enough space available on disc. +Template:A window template is missing from the Templates file. Please reinstall NetSurf. HotlistSaveError:The hotlist was unable to be correctly saved. HotlistLoadError:The hotlist was unable to be correctly loaded. NoPathError:To save, drag the icon to a directory display @@ -201,28 +386,34 @@ NoNameError:Please enter a name NoURLError:Please enter a URL URIError:NetSurf was unable to parse this URI file due to a syntax error. EmptyError:file is empty. -PrintError:An error occurred when printing: PrintErrorRO2:It appears that the printer is busy. -# User queries + +# Queries +# ======= +# +# This section contains queries which are displayed to the user +# + AbortDownload:Zeker weten dat u deze download af wilt breken? QuitDownload:Een of meer downloads zijn nog bezig. Toch afbreken? -# Some general purpose words and phrases -Bytes: B -kBytes: kB -MBytes: MB -GBytes: GB -# Progress +# Page fetching +# ============= +# +# This section contains messages which may be displayed whilst +# fetching a page or other content +# + +# Fetch status messages - displayed in status bar +# Progress:%s van %s ProgressU:%s Loading:pagina ophalen... RecPercent:ontvangen %s (%u%%) Received:ontvangen %s Converting:converteren van %lu bytes -BadRedirect:foutief doorverwijzen naar URL -FetchFailed:kan dit document niet ophalen Complete:pagina verwerkt (%gs) Redirecting:doorverwijzen... Processing:verwerking van document @@ -232,6 +423,11 @@ FetchObjs2:laden van %u objecten: %s Done:klaar FetchStyle:laden van %u stylesheets FetchStyle2:laden van %u stylesheets: %s + +# Fetch warning/error messages - displayed in status bar +# +BadRedirect:foutief doorverwijzen naar URL +FetchFailed:kan dit document niet ophalen NotCSS:melding: stylesheet is geen CSS BadObject:melding: fout object type ObjError:fout bij laden object: %s @@ -241,22 +437,16 @@ PNGError:PNG library fout. MNGError:MNG library fout. BadSprite:foutief sprite bestand. -DrawTitle:Draw image (%lux%lu, %lu bytes) -GIFTitle:GIF image (%lux%lu, %lu bytes) -JPEGTitle:JPEG image (%ux%u, %lu bytes) -PNGTitle:PNG image (%lux%lu, %lu bytes) -JNGTitle:JNG image (%lux%lu, %lu bytes) -MNGTitle:MNG image (%lux%lu, %lu bytes) -SpriteTitle:Sprite image (%lux%lu, %lu bytes) - -SelectMenu:Select -SaveSource:Source -SaveDraw:Webpage -SaveText:Webpage -SaveObject:Object -SaveLink:Link +# User interface +# ============== +# +# This section contains messages to deal with user interface +# features. +# +# Scrollbars - displayed in status bar +# ScrollUp:Click the arrow to scroll up ScrollPUp:Click to scroll up one page ScrollV:Drag the bar to scroll vertically @@ -268,10 +458,25 @@ ScrollH:Drag the bar to scroll horizontally ScrollPRight:Click to scroll right one page ScrollRight:Click the arrow to scroll right -Encoding0:from HTTP headers -Encoding1:detected -Encoding2:from <meta> -EncodingUnk:Unknown + +# Saving +# ====== +# +# Messages used when saving +# + +SaveSource:Source +SaveDraw:Webpage +SaveText:Webpage +SaveObject:Object +SaveLink:Link + + +# Themes +# ====== +# +# Messages used when installing new themes +# ThemeInstActive:A theme is currently being downloaded or installed. Please wait for it to finish or cancel it before installing more themes. ThemeInstDown:Please wait for the theme to download. @@ -280,7 +485,24 @@ ThemeInstall:Would you like to install the theme '%s' by %s? ThemeInstallErr:An error occurred whilst trying to install the downloaded theme. ThemeApplyErr:An error occurred whilst trying to apply the downloaded theme. + +# General +# ======= +# +# Some general purpose words and phrases +# + +Bytes: B +kBytes: kB +MBytes: MB +GBytes: GB + + # Interactive help +# ================ +# +# This section contains interactive help messages +# HelpToolbar0:\Tback button.|M\Straverse back one page in the history tree.|MDoes not resubmit form information. HelpToolbar1:\Tforward button.|M\Straverse forward one page in the history tree.|MDoes not resubmit form information. HelpToolbar2:\Tstop button.|M\Sstop loading this page. @@ -444,3 +666,21 @@ HelpGHistoryToolbar2:\Topen directories button.|M\Sopen all directories in the h HelpGHistoryToolbar3:\Tlaunch button.|M\Slaunch the current selection. HelpAppInfo:\TNetSurf information \w.|MSee the about page for the contributor list and credits. + + +# Unused tokens +# ============= +# +# These tokens appear to be unused at the current time. +# + +# Tree export +TreeHotlist:NetSurf bladwijzers +TreeHistory:NetSurf historie +SaveSelect:Bewaar +ExportAs:Exporteer als +Copy:Copieer naar prikbord ^C +AnimImg:Animatie +DitherImg:Dither afbeelding +FilterImg:Smooth afbeelding +RenderText:Tekst met achtergrond mengen diff --git a/desktop/browser.c b/desktop/browser.c index d048e7ca5..335dd9954 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -480,30 +480,14 @@ void browser_window_stop_throbber(struct browser_window *bw) void browser_window_update(struct browser_window *bw, bool scroll_to_top) { - char *title_local_enc; struct box *pos; int x, y; - utf8_convert_ret err; if (!bw->current_content) return; if (bw->current_content->title != NULL) { - err = utf8_to_enc(bw->current_content->title, - local_encoding_name(), 0, &title_local_enc); - if (err != UTF8_CONVERT_OK) { - /* A bad encoding should never happen, - * so assert this */ - assert(err != UTF8_CONVERT_BADENC); - LOG(("utf8_to_enc failed")); - /* use utf-8 encoded title instead */ - gui_window_set_title(bw->window, - bw->current_content->title); - } - else { - gui_window_set_title(bw->window, title_local_enc); - free(title_local_enc); - } + gui_window_set_title(bw->window, bw->current_content->title); } else gui_window_set_title(bw->window, bw->current_content->url); diff --git a/gtk/gtk_gui.c b/gtk/gtk_gui.c index fe1db5042..151766aaf 100644 --- a/gtk/gtk_gui.c +++ b/gtk/gtk_gui.c @@ -5,6 +5,7 @@ * Copyright 2004 James Bursa <bursa@users.sourceforge.net> */ +#include <assert.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> @@ -21,6 +22,7 @@ #include "netsurf/render/form.h" #include "netsurf/render/html.h" #include "netsurf/utils/messages.h" +#include "netsurf/utils/utf8.h" #include "netsurf/utils/utils.h" @@ -163,4 +165,32 @@ void schedule_run(void) {} void global_history_add(struct gui_window *g) {} -const char *local_encoding_name(void) { return "UTF-8"; } +utf8_convert_ret utf8_to_local_encoding(const char *string, size_t len, + char **result) +{ + assert(string && result); + + if (len == 0) + len = strlen(string); + + *result = strndup(string, len); + if (!(*result)) + return UTF8_CONVERT_NOMEM; + + return UTF8_CONVERT_OK; +} + +utf8_convert_ret utf8_from_local_encoding(const char *string, size_t len, + char **result) +{ + assert(string && result); + + if (len == 0) + len = strlen(string); + + *result = strndup(string, len); + if (!(*result)) + return UTF8_CONVERT_NOMEM; + + return UTF8_CONVERT_OK; +} diff --git a/riscos/dialog.c b/riscos/dialog.c index 4baea65d0..505c09b4e 100644 --- a/riscos/dialog.c +++ b/riscos/dialog.c @@ -430,14 +430,14 @@ bool ro_gui_dialog_keypress(wimp_key *key) pointer.w = key->w; pointer.i = ICON_OPENURL_OPEN; pointer.buttons = wimp_CLICK_SELECT; - ro_gui_dialog_click_open_url(&pointer); + ro_gui_dialog_click_open_url(&pointer); } } #ifdef WITH_AUTH if (key->w == dialog_401li) return ro_gui_401login_keypress(key); #endif - + return false; } @@ -838,46 +838,44 @@ void ro_gui_save_options(void) void ro_gui_dialog_click_config_br(wimp_pointer *pointer) { switch (pointer->i) { - case ICON_CONFIG_BR_LANG_PICK: - /* drop through */ - case ICON_CONFIG_BR_ALANG_PICK: - config_br_icon = pointer->i; - ro_gui_popup_menu(languages_menu, dialog_config_br, - pointer->i); - break; + case ICON_CONFIG_BR_LANG_PICK: + ro_gui_menu_prepare_languages(false, ro_gui_choices_lang); + config_br_icon = pointer->i; + ro_gui_popup_menu(languages_menu, dialog_config_br, + pointer->i); + break; + case ICON_CONFIG_BR_ALANG_PICK: + ro_gui_menu_prepare_languages(true, ro_gui_choices_alang); + config_br_icon = pointer->i; + ro_gui_popup_menu(languages_menu, dialog_config_br, + pointer->i); + break; } } /** * Handle a selection from the language selection popup menu. * - * \param lang The language name (as returned by messages_get) + * \param lang The language messages key */ -void ro_gui_dialog_languages_menu_selection(char *lang) +void ro_gui_dialog_languages_menu_selection(const char *lang) { int offset = strlen("lang_"); - const char *temp = messages_get_key(lang); - if (temp == NULL) { - warn_user("MiscError", "Failed to retrieve message key"); - config_br_icon = -1; - return; - } - switch (config_br_icon) { - case ICON_CONFIG_BR_LANG_PICK: - ro_gui_choices_lang = temp + offset; - ro_gui_set_icon_string(dialog_config_br, - ICON_CONFIG_BR_LANG, - lang); - break; - case ICON_CONFIG_BR_ALANG_PICK: - ro_gui_choices_alang = temp + offset; - ro_gui_set_icon_string(dialog_config_br, - ICON_CONFIG_BR_ALANG, - lang); - break; + case ICON_CONFIG_BR_LANG_PICK: + ro_gui_choices_lang = lang + offset; + ro_gui_set_icon_string(dialog_config_br, ICON_CONFIG_BR_LANG, + messages_get(lang)); + ro_gui_menu_prepare_languages(false, ro_gui_choices_lang); + break; + case ICON_CONFIG_BR_ALANG_PICK: + ro_gui_choices_alang = lang + offset; + ro_gui_set_icon_string(dialog_config_br, + ICON_CONFIG_BR_ALANG, messages_get(lang)); + ro_gui_menu_prepare_languages(true, ro_gui_choices_alang); + break; } } @@ -1266,7 +1264,7 @@ void ro_gui_dialog_click_open_url(wimp_pointer *pointer) bool reopen_window = false; wimp_caret caret; os_error *error; - + if (pointer->i == ICON_OPENURL_MENU) { /* we can't have two open menus, so we close the iconbar menu * and detach our window from it */ @@ -1315,7 +1313,7 @@ void ro_gui_dialog_click_open_url(wimp_pointer *pointer) ro_gui_popup_menu(url_suggest_menu, dialog_openurl, ICON_OPENURL_MENU); - return; + return; } if ((pointer->i != ICON_OPENURL_OPEN) && diff --git a/riscos/download.c b/riscos/download.c index 3f64cd315..02c226c05 100644 --- a/riscos/download.c +++ b/riscos/download.c @@ -38,6 +38,7 @@ #include "netsurf/utils/log.h" #include "netsurf/utils/messages.h" #include "netsurf/utils/url.h" +#include "netsurf/utils/utf8.h" #include "netsurf/utils/utils.h" @@ -385,6 +386,8 @@ void ro_gui_download_update_status(struct gui_download_window *dw) float rate; os_error *error; int width; + char *local_status; + utf8_convert_ret err; gettimeofday(&t, 0); dt = (t.tv_sec + 0.000001 * t.tv_usec) - (dw->last_time.tv_sec + @@ -405,18 +408,47 @@ void ro_gui_download_update_status(struct gui_download_window *dw) left = (dw->total_size - dw->received) / rate; sprintf(time, "%u:%.2u", left / 60, left % 60); } - snprintf(dw->status, sizeof dw->status, + + /* convert to local encoding */ + err = utf8_to_local_encoding( + messages_get("Download"), 0, &local_status); + if (err != UTF8_CONVERT_OK) { + /* badenc should never happen */ + assert(err != UTF8_CONVERT_BADENC); + /* hide nomem error */ + snprintf(dw->status, sizeof dw->status, messages_get("Download"), received, total_size, speed, time); + } + else { + snprintf(dw->status, sizeof dw->status, + local_status, + received, total_size, speed, time); + free(local_status); + } f = (float) dw->received / (float) dw->total_size; width = download_progress_width * f; } else { left = t.tv_sec - dw->start_time.tv_sec; sprintf(time, "%u:%.2u", left / 60, left % 60); - snprintf(dw->status, sizeof dw->status, + + err = utf8_to_local_encoding( + messages_get("DownloadU"), 0, &local_status); + if (err != UTF8_CONVERT_OK) { + /* badenc should never happen */ + assert(err != UTF8_CONVERT_BADENC); + /* hide nomem error */ + snprintf(dw->status, sizeof dw->status, messages_get("DownloadU"), received, speed, time); + } + else { + snprintf(dw->status, sizeof dw->status, + local_status, + received, speed, time); + free(local_status); + } /* length unknown, stay at 0 til finished */ width = 0; @@ -428,9 +460,22 @@ void ro_gui_download_update_status(struct gui_download_window *dw) rate = (float) dw->received / (float) left; sprintf(time, "%u:%.2u", left / 60, left % 60); speed = human_friendly_bytesize(rate); - snprintf(dw->status, sizeof dw->status, + + err = utf8_to_local_encoding(messages_get("DownloadU"), 0, + &local_status); + if (err != UTF8_CONVERT_OK) { + /* badenc should never happen */ + assert(err != UTF8_CONVERT_BADENC); + /* hide nomem error */ + snprintf(dw->status, sizeof dw->status, messages_get("Downloaded"), total_size, speed, time); + } + else { + snprintf(dw->status, sizeof dw->status, local_status, + total_size, speed, time); + free(local_status); + } /* all done */ width = download_progress_width; diff --git a/riscos/gui.h b/riscos/gui.h index 2ab7f7084..3b24d0738 100644 --- a/riscos/gui.h +++ b/riscos/gui.h @@ -115,7 +115,7 @@ void ro_gui_dialog_close(wimp_w close); void ro_gui_dialog_open_config(void); void ro_gui_dialog_proxyauth_menu_selection(int item); void ro_gui_dialog_image_menu_selection(int item); -void ro_gui_dialog_languages_menu_selection(char *lang); +void ro_gui_dialog_languages_menu_selection(const char *lang); void ro_gui_dialog_font_menu_selection(int item); void ro_gui_dialog_redraw(wimp_draw *redraw); diff --git a/riscos/help.c b/riscos/help.c index bc5494c45..50f6912ce 100644 --- a/riscos/help.c +++ b/riscos/help.c @@ -9,6 +9,7 @@ * Interactive help (implementation). */ +#include <assert.h> #include <stdbool.h> #include <stdio.h> #include "oslib/help.h" @@ -24,6 +25,7 @@ #include "netsurf/riscos/wimp.h" #include "netsurf/utils/messages.h" #include "netsurf/utils/log.h" +#include "netsurf/utils/utf8.h" #include "netsurf/utils/utils.h" @@ -158,7 +160,7 @@ void ro_gui_interactive_help_request(wimp_message *message) { sprintf(message_token, "HelpToolbar%i", (int)icon); } else if ((g = ro_gui_status_lookup(window)) != NULL) sprintf(message_token, "HelpStatus%i", (int)icon); - + /* change toolbars to editors where appropriate */ if ((toolbar) && (toolbar->editor)) sprintf(message_token, "HelpEditToolbar%i", (int)icon); @@ -233,7 +235,9 @@ static void ro_gui_interactive_help_broadcast(wimp_message *message, const char *translated_token; help_full_message_reply *reply; char *base_token; + char *local_token; os_error *error; + utf8_convert_ret err; /* start off with an empty reply */ reply = (help_full_message_reply *)message; @@ -260,8 +264,20 @@ static void ro_gui_interactive_help_broadcast(wimp_message *message, /* copy our message string */ if (translated_token != token) { - reply->reply[235] = 0; - strncpy(reply->reply, translated_token, 235); + /* convert to local encoding */ + err = utf8_to_local_encoding(translated_token, 0, + &local_token); + if (err != UTF8_CONVERT_OK) { + /* badenc should never happen */ + assert(err != UTF8_CONVERT_BADENC); + /* simply use UTF-8 string */ + strncpy(reply->reply, translated_token, 235); + } + else { + strncpy(reply->reply, local_token, 235); + free(local_token); + } + reply->reply[235] = '\0'; } /* broadcast the help reply */ @@ -303,7 +319,7 @@ bool ro_gui_interactive_help_available(void) { error->errnum, error->errmess)); warn_user("MiscError", error->errmess); } - + /* we can't just use strcmp due to string termination issues */ if (!strncmp(task.name, "Help", 4) && (task.name[4] < 32)) diff --git a/riscos/menus.c b/riscos/menus.c index 86272a112..c294b9869 100644 --- a/riscos/menus.c +++ b/riscos/menus.c @@ -12,10 +12,13 @@ * Menu creation and handling (implementation). */ +#include <ctype.h> #include <stdlib.h> #include <string.h> #include "oslib/os.h" +#include "oslib/osbyte.h" #include "oslib/osgbpb.h" +#include "oslib/territory.h" #include "oslib/wimp.h" #include "netsurf/desktop/gui.h" #include "netsurf/render/box.h" @@ -56,11 +59,14 @@ struct ns_menu { struct menu_definition_entry { menu_action action; /**< menu action */ wimp_menu_entry *menu_entry; /**< corresponding menu entry */ + const char *entry_key; /**< Messages key for entry text */ struct menu_definition_entry *next; /**< next menu entry */ }; struct menu_definition { wimp_menu *menu; /**< corresponding menu */ + const char *title_key; /**< Messages key for title text */ + int current_encoding; /**< Identifier for current text encoding of menu text (as per OS_Byte,71,127) */ struct menu_definition_entry *entries; /**< menu entries */ struct menu_definition *next; /**< next menu */ }; @@ -68,7 +74,8 @@ struct menu_definition { static wimp_menu *ro_gui_menu_define_menu(struct ns_menu *menu); static void ro_gui_menu_define_menu_add(struct menu_definition *definition, - struct ns_menu *menu, int depth, wimp_menu_entry *link, + struct ns_menu *menu, int depth, + wimp_menu_entry *parent_entry, int first, int last, const char *prefix, int prefix_length); static struct menu_definition *ro_gui_menu_find_menu(wimp_menu *menu); static struct menu_definition_entry *ro_gui_menu_find_entry(wimp_menu *menu, @@ -87,6 +94,7 @@ static bool ro_gui_menu_prepare_url_suggest(void); static void ro_gui_menu_prepare_pageinfo(struct gui_window *g); static void ro_gui_menu_prepare_objectinfo(struct box *box); static void ro_gui_menu_refresh_toolbar(struct toolbar *toolbar); +static bool ro_gui_menu_translate(struct menu_definition *menu); /* default menu item flags */ @@ -119,18 +127,16 @@ wimp_menu *iconbar_menu, *browser_menu, *hotlist_menu, *global_history_menu, static wimp_MENU(GLOBAL_HISTORY_RECENT_URLS) url_suggest; wimp_menu *url_suggest_menu = (wimp_menu *)&url_suggest; +/* the values given in PRM 3-157 for how to check menus/windows are + * incorrect so we use a hack of checking if the sub-menu is within + * 256KB of its parent */ +#define IS_MENU(menu, submenu) (abs((int)(submenu) - (int)(menu)) < 0x40000) /** * Create menu structures. */ -void ro_gui_menu_init(void) { - int context = 0, read_count, entries = 0; - os_error *error; - osgbpb_INFO(100) info; - char lang[8] = {0}; - char *lang_name; - void *temp; - +void ro_gui_menu_init(void) +{ /* iconbar menu */ NS_MENU(9) iconbar_definition = { "NetSurf", { @@ -162,7 +168,7 @@ void ro_gui_menu_init(void) { { "Page.SaveURL.URI", BROWSER_SAVE_URL_URI, dialog_saveas }, { "Page.SaveURL.URL", BROWSER_SAVE_URL_URL, dialog_saveas }, { "Page.SaveURL.LinkText", BROWSER_SAVE_URL_TEXT, dialog_saveas }, - { "Page.Print_", BROWSER_PRINT, dialog_print }, + { "_Page.Print", BROWSER_PRINT, dialog_print }, { "Page.NewWindow", BROWSER_NEW_WINDOW, 0 }, { "Page.ViewSrc", BROWSER_VIEW_SOURCE, 0 }, { "Object", BROWSER_OBJECT, 0 }, @@ -170,7 +176,7 @@ void ro_gui_menu_init(void) { { "Object.ObjSave", BROWSER_OBJECT_SAVE, dialog_saveas }, { "Object.Export", NO_ACTION, 0 }, { "Object.Export.Sprite", BROWSER_OBJECT_EXPORT_SPRITE, dialog_saveas }, - { "Object.SaveURL_", NO_ACTION, 0 }, + { "_Object.SaveURL", NO_ACTION, 0 }, { "Object.SaveURL.URI", BROWSER_OBJECT_SAVE_URL_URI, dialog_saveas }, { "Object.SaveURL.URL", BROWSER_OBJECT_SAVE_URL_URL, dialog_saveas }, { "Object.SaveURL.LinkText", BROWSER_OBJECT_SAVE_URL_TEXT, dialog_saveas }, @@ -178,7 +184,7 @@ void ro_gui_menu_init(void) { { "Navigate", NO_ACTION, 0 }, { "Navigate.Home", BROWSER_NAVIGATE_HOME, 0 }, { "Navigate.Back", BROWSER_NAVIGATE_BACK, 0 }, - { "Navigate.Forward_", BROWSER_NAVIGATE_FORWARD, 0 }, + { "_Navigate.Forward", BROWSER_NAVIGATE_FORWARD, 0 }, { "Navigate.Reload", BROWSER_NAVIGATE_RELOAD_ALL, 0 }, { "Navigate.Stop", BROWSER_NAVIGATE_STOP, 0 }, { "View", NO_ACTION, 0 }, @@ -190,9 +196,9 @@ void ro_gui_menu_init(void) { { "View.Toolbars.ToolButtons", TOOLBAR_BUTTONS, 0 }, { "View.Toolbars.ToolAddress", TOOLBAR_ADDRESS_BAR, 0 }, { "View.Toolbars.ToolThrob", TOOLBAR_THROBBER, 0 }, - { "View.Toolbars.ToolStatus_", TOOLBAR_STATUS_BAR, 0 }, + { "_View.Toolbars.ToolStatus", TOOLBAR_STATUS_BAR, 0 }, { "View.Toolbars.EditToolbar", TOOLBAR_EDIT, 0 }, - { "View.Render_", NO_ACTION, 0 }, + { "_View.Render", NO_ACTION, 0 }, { "View.Render.RenderAnims", BROWSER_BUFFER_ANIMS, 0 }, { "View.Render.RenderAll", BROWSER_BUFFER_ALL, 0 }, { "View.OptDefault", BROWSER_SAVE_VIEW, 0 }, @@ -207,13 +213,13 @@ void ro_gui_menu_init(void) { { "Utilities.Window", NO_ACTION, 0 }, { "Utilities.Window.WindowSave", BROWSER_WINDOW_DEFAULT, 0 }, { "Utilities.Window.WindowStagr", BROWSER_WINDOW_STAGGER, 0 }, - { "Utilities.Window.WindowSize_", BROWSER_WINDOW_COPY, 0 }, + { "_Utilities.Window.WindowSize", BROWSER_WINDOW_COPY, 0 }, { "Utilities.Window.WindowReset", BROWSER_WINDOW_RESET, 0 }, { "Help", HELP_OPEN_CONTENTS, 0 }, { "Help.HelpContent", HELP_OPEN_CONTENTS, 0 }, { "Help.HelpGuide", HELP_OPEN_GUIDE, 0 }, - { "Help.HelpInfo_", HELP_OPEN_INFORMATION, 0 }, - { "Help.HelpAbout_", HELP_OPEN_ABOUT, 0 }, + { "_Help.HelpInfo", HELP_OPEN_INFORMATION, 0 }, + { "_Help.HelpAbout", HELP_OPEN_ABOUT, 0 }, { "Help.HelpInter", HELP_LAUNCH_INTERACTIVE, 0 }, {NULL, 0, 0} } @@ -228,7 +234,7 @@ void ro_gui_menu_init(void) { { "Hotlist.New", NO_ACTION, 0 }, { "Hotlist.New.Folder", TREE_NEW_FOLDER, dialog_folder }, { "Hotlist.New.Link", TREE_NEW_LINK, dialog_entry }, - { "Hotlist.Export_", HOTLIST_EXPORT, dialog_saveas }, + { "_Hotlist.Export", HOTLIST_EXPORT, dialog_saveas }, { "Hotlist.Expand", TREE_EXPAND_ALL, 0 }, { "Hotlist.Expand.All", TREE_EXPAND_ALL, 0 }, { "Hotlist.Expand.Folders", TREE_EXPAND_FOLDERS, 0 }, @@ -238,7 +244,7 @@ void ro_gui_menu_init(void) { { "Hotlist.Collapse.Folders", TREE_COLLAPSE_FOLDERS, 0 }, { "Hotlist.Collapse.Links", TREE_COLLAPSE_LINKS, 0 }, { "Hotlist.Toolbars", NO_ACTION, 0 }, - { "Hotlist.Toolbars.ToolButtons_", TOOLBAR_BUTTONS, 0 }, + { "_Hotlist.Toolbars.ToolButtons", TOOLBAR_BUTTONS, 0 }, { "Hotlist.Toolbars.EditToolbar", TOOLBAR_EDIT, 0 }, { "Selection", TREE_SELECTION, 0 }, { "Selection.Edit", TREE_SELECTION_EDIT, (wimp_w)1 }, @@ -257,7 +263,7 @@ void ro_gui_menu_init(void) { NS_MENU(19) global_history_definition = { "History", { { "History", NO_ACTION, 0 }, - { "History.Export_", HISTORY_EXPORT, dialog_saveas }, + { "_History.Export", HISTORY_EXPORT, dialog_saveas }, { "History.Expand", TREE_EXPAND_ALL, 0 }, { "History.Expand.All", TREE_EXPAND_ALL, 0 }, { "History.Expand.Folders", TREE_EXPAND_FOLDERS, 0 }, @@ -267,7 +273,7 @@ void ro_gui_menu_init(void) { { "History.Collapse.Folders", TREE_COLLAPSE_FOLDERS, 0 }, { "History.Collapse.Links", TREE_COLLAPSE_LINKS, 0 }, { "History.Toolbars", NO_ACTION, 0 }, - { "History.Toolbars.ToolButtons_", TOOLBAR_BUTTONS, 0 }, + { "_History.Toolbars.ToolButtons", TOOLBAR_BUTTONS, 0 }, { "History.Toolbars.EditToolbar",TOOLBAR_EDIT, 0 }, { "Selection", TREE_SELECTION, 0 }, { "Selection.Launch", TREE_SELECTION_LAUNCH, 0 }, @@ -343,56 +349,62 @@ void ro_gui_menu_init(void) { url_suggest_menu->height = wimp_MENU_ITEM_HEIGHT; url_suggest_menu->gap = wimp_MENU_ITEM_GAP; - /* language menu */ - languages_menu = calloc(1, wimp_SIZEOF_MENU(1)); - if (!languages_menu) - die("Insufficient memory for languages menu."); - languages_menu->title_data.indirected_text.text = - messages_get("Languages"); - languages_menu->title_fg = wimp_COLOUR_BLACK; - languages_menu->title_bg = wimp_COLOUR_LIGHT_GREY; - languages_menu->work_fg = wimp_COLOUR_BLACK; - languages_menu->work_bg = wimp_COLOUR_WHITE; - languages_menu->width = 200; - languages_menu->height = wimp_MENU_ITEM_HEIGHT; - languages_menu->gap = wimp_MENU_ITEM_GAP; - - while (context != -1) { - error = xosgbpb_dir_entries_info("<NetSurf$Dir>.Resources", - (osgbpb_info_list*)&info, 1, context, - sizeof(info), 0, &read_count, &context); - if (error) - die(error->errmess); - if ((read_count == 0) || (info.obj_type != fileswitch_IS_DIR)) - continue; - - snprintf(lang, sizeof lang, "lang_%2s", info.name); - /* we can't duplicate the string returned from our messages as - * it causes value->key lookups to fail */ - lang_name = messages_get(lang); - if ((lang_name == lang) || (strlen(info.name) != 2)) - continue; - - temp = realloc(languages_menu, wimp_SIZEOF_MENU(entries + 1)); - if (!temp) - die("Insufficient memory for languages menu"); - - languages_menu = temp; - languages_menu->entries[entries].menu_flags = 0; - languages_menu->entries[entries].sub_menu = wimp_NO_SUB_MENU; - languages_menu->entries[entries].icon_flags = DEFAULT_FLAGS | - wimp_ICON_INDIRECTED; - languages_menu->entries[entries].data.indirected_text.text = - lang_name; - languages_menu->entries[entries].data.indirected_text. - validation = (char *)-1; - languages_menu->entries[entries].data.indirected_text.size = - strlen(lang_name) + 1; - entries++; - } + /* Note: This table *must* be kept in sync with the LangNames file */ + NS_MENU(48) lang_definition = { + "Languages", { + { "lang_af", NO_ACTION, 0 }, + { "lang_bm", NO_ACTION, 0 }, + { "lang_ca", NO_ACTION, 0 }, + { "lang_cs", NO_ACTION, 0 }, + { "lang_cy", NO_ACTION, 0 }, + { "lang_da", NO_ACTION, 0 }, + { "lang_de", NO_ACTION, 0 }, + { "lang_en", NO_ACTION, 0 }, + { "lang_es", NO_ACTION, 0 }, + { "lang_et", NO_ACTION, 0 }, + { "lang_eu", NO_ACTION, 0 }, + { "lang_ff", NO_ACTION, 0 }, + { "lang_fi", NO_ACTION, 0 }, + { "lang_fr", NO_ACTION, 0 }, + { "lang_ga", NO_ACTION, 0 }, + { "lang_gl", NO_ACTION, 0 }, + { "lang_ha", NO_ACTION, 0 }, + { "lang_hr", NO_ACTION, 0 }, + { "lang_hu", NO_ACTION, 0 }, + { "lang_id", NO_ACTION, 0 }, + { "lang_is", NO_ACTION, 0 }, + { "lang_it", NO_ACTION, 0 }, + { "lang_lt", NO_ACTION, 0 }, + { "lang_lv", NO_ACTION, 0 }, + { "lang_ms", NO_ACTION, 0 }, + { "lang_mt", NO_ACTION, 0 }, + { "lang_nl", NO_ACTION, 0 }, + { "lang_no", NO_ACTION, 0 }, + { "lang_pl", NO_ACTION, 0 }, + { "lang_pt", NO_ACTION, 0 }, + { "lang_rn", NO_ACTION, 0 }, + { "lang_ro", NO_ACTION, 0 }, + { "lang_rw", NO_ACTION, 0 }, + { "lang_sk", NO_ACTION, 0 }, + { "lang_sl", NO_ACTION, 0 }, + { "lang_so", NO_ACTION, 0 }, + { "lang_sq", NO_ACTION, 0 }, + { "lang_sr", NO_ACTION, 0 }, + { "lang_sv", NO_ACTION, 0 }, + { "lang_sw", NO_ACTION, 0 }, + { "lang_tr", NO_ACTION, 0 }, + { "lang_uz", NO_ACTION, 0 }, + { "lang_vi", NO_ACTION, 0 }, + { "lang_wo", NO_ACTION, 0 }, + { "lang_xs", NO_ACTION, 0 }, + { "lang_yo", NO_ACTION, 0 }, + { "lang_zu", NO_ACTION, 0 }, + { NULL, 0, 0 } + } + }; - languages_menu->entries[0].menu_flags |= wimp_MENU_TITLE_INDIRECTED; - languages_menu->entries[entries-1].menu_flags |= wimp_MENU_LAST; + languages_menu = ro_gui_menu_define_menu( + (struct ns_menu *)&lang_definition); } @@ -406,6 +418,17 @@ void ro_gui_menu_create(wimp_menu *menu, int x, int y, wimp_w w) { os_error *error; int i; menu_action action; + struct menu_definition *definition; + + /* translate menu, if necessary (this returns quickly + * if there's nothing to be done) */ + definition = ro_gui_menu_find_menu(menu); + if (definition) { + if (!ro_gui_menu_translate(definition)) { + warn_user("NoMemory", 0); + return; + } + } /* read the object under the pointer for a new gui_window menu */ if ((!current_menu) && (menu == browser_menu)) { @@ -555,8 +578,9 @@ void ro_gui_menu_selection(wimp_selection *selection) { wimp_menu *menu; os_error *error; - /* if we are using gui_multitask then menu selection events may be delivered - * after the menu has been closed. As such, we simply ignore these events. */ + /* if we are using gui_multitask then menu selection events + * may be delivered after the menu has been closed. As such, + * we simply ignore these events. */ if (!current_menu) return assert(current_menu_window); @@ -595,9 +619,18 @@ void ro_gui_menu_selection(wimp_selection *selection) { } else if (current_menu == image_quality_menu) { ro_gui_dialog_image_menu_selection(selection->items[0]); } else if (current_menu == languages_menu) { - ro_gui_dialog_languages_menu_selection(languages_menu-> - entries[selection->items[0]]. - data.indirected_text.text); + struct menu_definition *desc; + struct menu_definition_entry *entry; + + /* find the relevant menu definition entry */ + desc = ro_gui_menu_find_menu(current_menu); + for (entry = desc->entries; entry; entry = entry->next) + if (entry->menu_entry == menu_entry) + break; + if (entry) + /* found it, so handle the seletion */ + ro_gui_dialog_languages_menu_selection( + entry->entry_key); } else if (current_menu == font_menu) { ro_gui_dialog_font_menu_selection(selection->items[0]); } else if ((current_menu == gui_form_select_menu) && @@ -660,7 +693,6 @@ void ro_gui_menu_warning(wimp_message_menu_warning *warning) { wimp_menu_entry *menu_entry; wimp_menu *sub_menu; os_error *error; - int menu_check; assert(current_menu); assert(current_menu_window); @@ -673,11 +705,7 @@ void ro_gui_menu_warning(wimp_message_menu_warning *warning) { menu_entry = &menu_entry->sub_menu-> entries[warning->selection.items[i]]; - /* the values given in PRM 3-157 for how to check menus/windows are - * incorrect so we use a hack of checking if the sub-menu is within - * 256KB of its parent */ - menu_check = abs((int)menu_entry->sub_menu - (int)menu_entry); - if (menu_check < 0x40000) { + if (IS_MENU(menu_entry, menu_entry->sub_menu)) { sub_menu = menu_entry->sub_menu; i = 0; do { @@ -778,9 +806,11 @@ void ro_gui_prepare_navigate(struct gui_window *gui) { ro_gui_menu_prepare_action(gui->window, HOTLIST_SHOW, false); ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_STOP, false); - ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_RELOAD_ALL, false); + ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_RELOAD_ALL, + false); ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_BACK, false); - ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_FORWARD, false); + ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_FORWARD, + false); ro_gui_menu_prepare_action(gui->window, HOTLIST_SHOW, false); ro_gui_menu_prepare_action(gui->window, BROWSER_SAVE, false); ro_gui_menu_prepare_action(gui->window, BROWSER_PRINT, false); @@ -894,6 +924,40 @@ void ro_gui_menu_prepare_objectinfo(struct box *box) { /** + * Prepare languages menu for use + * + * \param accept For Accept-Languages selection + * \param lang Currently selected language + */ +void ro_gui_menu_prepare_languages(bool accept, const char *lang) +{ + struct menu_definition *menu; + struct menu_definition_entry *entry; + char path_buf[40]; + int offset = strlen("lang_"); + + menu = ro_gui_menu_find_menu(languages_menu); + for (entry = menu->entries; entry; entry = entry->next) { + if (!accept) { + snprintf(path_buf, sizeof path_buf, + "<NetSurf$Dir>.Resources.%.2s", + entry->entry_key + offset); + + entry->menu_entry->icon_flags |= is_dir(path_buf) ? + 0 : wimp_ICON_SHADED; + } + else + entry->menu_entry->icon_flags &= ~wimp_ICON_SHADED; + + /* set ticked status */ + if (strncmp(lang, entry->entry_key + offset, 2) == 0) + entry->menu_entry->menu_flags |= wimp_MENU_TICKED; + else + entry->menu_entry->menu_flags &= ~wimp_MENU_TICKED; + } +} + +/** * Display a menu of options for a form select control. * * \param bw browser window containing form control @@ -902,7 +966,7 @@ void ro_gui_menu_prepare_objectinfo(struct box *box) { void gui_create_form_select_menu(struct browser_window *bw, struct form_control *control) { unsigned int i = 0, j; - char *text_convert; + char *text_convert, *temp, *s; struct form_option *option; wimp_pointer pointer; os_error *error; @@ -911,7 +975,8 @@ void gui_create_form_select_menu(struct browser_window *bw, assert(control); - for (option = control->data.select.items; option; option = option->next) + for (option = control->data.select.items; option; + option = option->next) i++; if (i == 0) { ro_gui_menu_closed(); @@ -926,6 +991,7 @@ void gui_create_form_select_menu(struct browser_window *bw, wimp_MENU_LAST) break; } + free(gui_form_select_menu->title_data.indirected_text.text); free(gui_form_select_menu); gui_form_select_menu = 0; } @@ -938,8 +1004,18 @@ void gui_create_form_select_menu(struct browser_window *bw, ro_gui_menu_closed(); return; } + err = utf8_to_local_encoding(messages_get("SelectMenu"), 0, + &text_convert); + if (err != UTF8_CONVERT_OK) { + /* badenc should never happen */ + assert(err != UTF8_CONVERT_BADENC); + LOG(("utf8_to_local_encoding failed")); + warn_user("NoMemory", 0); + ro_gui_menu_closed(); + return; + } gui_form_select_menu->title_data.indirected_text.text = - messages_get("SelectMenu"); + text_convert; gui_form_select_menu->title_fg = wimp_COLOUR_BLACK; gui_form_select_menu->title_bg = wimp_COLOUR_LIGHT_GREY; gui_form_select_menu->work_fg = wimp_COLOUR_BLACK; @@ -963,8 +1039,24 @@ void gui_create_form_select_menu(struct browser_window *bw, wimp_ICON_FG_COLOUR_SHIFT) | (wimp_COLOUR_WHITE << wimp_ICON_BG_COLOUR_SHIFT); - err = utf8_to_enc(option->text, - local_encoding_name(), 0, &text_convert); + temp = cnv_space2nbsp(option->text); + if (!temp) { + LOG(("cnv_space2nbsp failed")); + warn_user("NoMemory", 0); + ro_gui_menu_closed(); + return; + } + + /* convert spaces to hard spaces to stop things + * like 'Go Home' being treated as if 'Home' is a + * keyboard shortcut and right aligned in the menu. + */ + for (s = temp; *s != '\0'; s++) + if (*s == 0x20) + *s = 0xa0; + + err = utf8_to_local_encoding(option->text, + 0, &text_convert); if (err != UTF8_CONVERT_OK) { /* A bad encoding should never happen, * so assert this */ @@ -975,15 +1067,11 @@ void gui_create_form_select_menu(struct browser_window *bw, return; } + free(temp); + gui_form_select_menu->entries[i].data.indirected_text.text = text_convert; - /* convert spaces to hard spaces to stop things like 'Go Home' - * being treated as if 'Home' is a keyboard shortcut and right - * aligned in the menu. */ - text_convert -= 1; - while (*++text_convert != '\0') - if (*text_convert == 0x20) - *text_convert = 0xa0; + gui_form_select_menu->entries[i].data.indirected_text. validation = (char *)-1; gui_form_select_menu->entries[i].data.indirected_text.size = @@ -1029,22 +1117,45 @@ wimp_menu *ro_gui_menu_define_menu(struct ns_menu *menu) { definition->next = ro_gui_menu_definitions; ro_gui_menu_definitions = definition; + /* count number of menu entries */ + for (entry = 0; menu->entries[entry].text; entry++) + /* do nothing */; + /* create our definitions */ - for (entry = 0; menu->entries[entry].text; entry++); ro_gui_menu_define_menu_add(definition, menu, 0, NULL, 0, entry, NULL, 0); + + /* and translate menu into current encoding */ + if (!ro_gui_menu_translate(definition)) + die("No memory to translate menu."); + return definition->menu; } +/** + * Create a wimp menu tree from ns_menu data. + * This function does *not* deal with the menu textual content - it simply + * creates and populates the appropriate structures. Textual content is + * generated by ro_gui_menu_translate_menu() + * + * \param definition Top level menu definition + * \param menu Menu declaration data + * \param depth Depth of menu we're currently building + * \param parent_entry Entry in parent menu, or NULL if root menu + * \param first First index in declaration data that is used by this menu + * \param last Last index in declaration data that is used by this menu + * \param prefix Prefix pf menu declaration string already seen + * \param prefix_length Length of prefix + */ void ro_gui_menu_define_menu_add(struct menu_definition *definition, - struct ns_menu *menu, int depth, wimp_menu_entry *link, - int first, int last, const char *prefix, int prefix_length) { - int entry, id, cur_depth, new_prefix_length; + struct ns_menu *menu, int depth, + wimp_menu_entry *parent_entry, int first, int last, + const char *prefix, int prefix_length) { + int entry, id, cur_depth; int entries = 0; int matches[last - first + 1]; const char *match; - char *text, *menu_text, *search; - char *title, *translated; + const char *text, *menu_text; wimp_menu *new_menu; struct menu_definition_entry *definition_entry; @@ -1052,33 +1163,49 @@ void ro_gui_menu_define_menu_add(struct menu_definition *definition, for (entry = first; entry < last; entry++) { cur_depth = 0; match = menu->entries[entry].text; + + /* skip specials at start of string */ + while (!isalnum(*match)) + match++; + + /* attempt prefix match */ if ((prefix) && (strncmp(match, prefix, prefix_length))) continue; + + /* Find depth of this entry */ while (*match) if (*match++ == '.') cur_depth++; + if (depth == cur_depth) matches[entries++] = entry; } matches[entries] = last; - /* step 2: build and link the menu. we must use realloc to stop - * our memory fragmenting so we can test for sub-menus easily */ + /* no entries, so exit */ if (entries == 0) return; + + /* step 2: build and link the menu. we must use realloc to stop + * our memory fragmenting so we can test for sub-menus easily */ new_menu = (wimp_menu *)malloc(wimp_SIZEOF_MENU(entries)); if (!new_menu) die("No memory to create menu."); - if (link) { - title = link->data.indirected_text.text; - link->sub_menu = new_menu; + + if (parent_entry) { + /* Fix up sub menu pointer */ + parent_entry->sub_menu = new_menu; } else { - title = messages_get(menu->title); - if (!title) - die("No memory to translate root menu title"); + /* Root menu => fill in definition struct */ + definition->title_key = menu->title; + definition->current_encoding = 0; definition->menu = new_menu; } - new_menu->title_data.indirected_text.text = title; + + /* this is fixed up in ro_gui_menu_translate() */ + new_menu->title_data.indirected_text.text = NULL; + + /* fill in menu flags */ new_menu->title_fg = wimp_COLOUR_BLACK; new_menu->title_bg = wimp_COLOUR_LIGHT_GREY; new_menu->work_fg = wimp_COLOUR_BLACK; @@ -1086,71 +1213,70 @@ void ro_gui_menu_define_menu_add(struct menu_definition *definition, new_menu->width = 200; new_menu->height = wimp_MENU_ITEM_HEIGHT; new_menu->gap = wimp_MENU_ITEM_GAP; + + /* and then create the entries */ for (entry = 0; entry < entries; entry++) { /* add the entry */ id = matches[entry]; - text = strdup(menu->entries[id].text); - if (!text) - die("No memory to examine menu text"); - search = menu_text = text; - while (*search) - if (*search++ == '.') - menu_text = search; + + text = menu->entries[id].text; + + /* fill in menu flags from specials at start of string */ new_menu->entries[entry].menu_flags = 0; - search = menu_text; - while (*search) - if (*search++ == '_') { + while (!isalnum(*text)) { + if (*text == '_') new_menu->entries[entry].menu_flags |= - wimp_MENU_SEPARATE; - search[-1] = 0; - break; - } + wimp_MENU_SEPARATE; + text++; + } + + /* get messages key for menu entry */ + menu_text = strrchr(text, '.'); + if (!menu_text) + /* no '.' => top-level entry */ + menu_text = text; + else + menu_text++; /* and move past the '.' */ + + /* fill in submenu data */ if (menu->entries[id].sub_window) - new_menu->entries[entry].sub_menu = (wimp_menu *)menu-> - entries[id].sub_window; + new_menu->entries[entry].sub_menu = + (wimp_menu *)menu->entries[id].sub_window; else new_menu->entries[entry].sub_menu = wimp_NO_SUB_MENU; + + /* icon flags */ new_menu->entries[entry].icon_flags = DEFAULT_FLAGS | wimp_ICON_INDIRECTED; - translated = messages_get(menu_text); - if (translated != menu_text) - free(text); - new_menu->entries[entry].data.indirected_text.text = translated; - new_menu->entries[entry].data.indirected_text.validation = - (char *)-1; - new_menu->entries[entry].data.indirected_text.size = - strlen(translated); - /* store action */ - if (menu->entries[id].action != NO_ACTION) { - definition_entry = malloc( - sizeof(struct menu_definition_entry)); - if (!definition_entry) - die("Unable to create menu definition entry"); - definition_entry->action = menu->entries[id].action; - definition_entry->menu_entry = - &new_menu->entries[entry]; - definition_entry->next = definition->entries; - definition->entries = definition_entry; - } + /* this is fixed up in ro_gui_menu_translate() */ + new_menu->entries[entry].data.indirected_text.text = NULL; + + /* create definition entry */ + definition_entry = + malloc(sizeof(struct menu_definition_entry)); + if (!definition_entry) + die("Unable to create menu definition entry"); + definition_entry->action = menu->entries[id].action; + definition_entry->menu_entry = &new_menu->entries[entry]; + definition_entry->entry_key = menu_text; + definition_entry->next = definition->entries; + definition->entries = definition_entry; /* recurse */ if (new_menu->entries[entry].sub_menu == wimp_NO_SUB_MENU) { - new_prefix_length = strlen(menu->entries[id].text); - if (menu->entries[id].text[new_prefix_length - 1] == '_') - new_prefix_length--; - ro_gui_menu_define_menu_add(definition, menu, depth + 1, - &new_menu->entries[entry], + ro_gui_menu_define_menu_add(definition, menu, + depth + 1, &new_menu->entries[entry], matches[entry], matches[entry + 1], - menu->entries[id].text, - new_prefix_length); + text, strlen(text)); } /* give menu warnings */ if (new_menu->entries[entry].sub_menu != wimp_NO_SUB_MENU) new_menu->entries[entry].menu_flags |= - wimp_MENU_GIVE_WARNING; + wimp_MENU_GIVE_WARNING; } + new_menu->entries[0].menu_flags |= wimp_MENU_TITLE_INDIRECTED; new_menu->entries[entries - 1].menu_flags |= wimp_MENU_LAST; } @@ -1268,7 +1394,8 @@ void ro_gui_menu_set_entry_ticked(wimp_menu *menu, menu_action action, * \param windows_at_pointer whether to open any windows at the pointer location */ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, - bool windows_at_pointer) { + bool windows_at_pointer) +{ wimp_window_state state; struct gui_window *g = NULL; struct browser_window *bw = NULL; @@ -1296,7 +1423,8 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, ro_gui_open_help_page("info"); return true; case HELP_OPEN_ABOUT: - browser_window_create("file:/<NetSurf$Dir>/Docs/about", + browser_window_create( + "file:/<NetSurf$Dir>/Docs/about", 0, 0); return true; case HELP_LAUNCH_INTERACTIVE: @@ -1307,7 +1435,8 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, case HISTORY_SHOW_LOCAL: if ((!bw) || (!bw->history)) return false; - ro_gui_history_open(bw, bw->history, windows_at_pointer); + ro_gui_history_open(bw, bw->history, + windows_at_pointer); return true; case HISTORY_SHOW_GLOBAL: ro_gui_tree_show(global_history_tree); @@ -1323,7 +1452,8 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, return false; } node = tree_create_URL_node(hotlist_tree->root, - c->title, norm_url, ro_content_filetype(c), + c->title, norm_url, + ro_content_filetype(c), time(NULL), -1, 0); free(norm_url); if (node) { @@ -1346,15 +1476,15 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, if (!c) return false; ro_gui_menu_prepare_action(owner, action, true); - ro_gui_dialog_open_persistent(g->window, dialog_pageinfo, - windows_at_pointer); + ro_gui_dialog_open_persistent(g->window, + dialog_pageinfo, windows_at_pointer); return true; case BROWSER_PRINT: if (!c) return false; ro_gui_menu_prepare_action(owner, action, true); - ro_gui_dialog_open_persistent(g->window, dialog_print, - windows_at_pointer); + ro_gui_dialog_open_persistent(g->window, + dialog_print, windows_at_pointer); return true; case BROWSER_NEW_WINDOW: if (!c) @@ -1372,8 +1502,8 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, if (!current_menu_object_box) return false; ro_gui_menu_prepare_action(owner, action, true); - ro_gui_dialog_open_persistent(g->window, dialog_objinfo, - windows_at_pointer); + ro_gui_dialog_open_persistent(g->window, + dialog_objinfo, windows_at_pointer); return true; case BROWSER_OBJECT_RELOAD: if (!current_menu_object_box) @@ -1410,8 +1540,10 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, case BROWSER_NAVIGATE_HOME: if (!bw) return false; - if ((option_homepage_url) && (option_homepage_url[0])) { - browser_window_go(g->bw, option_homepage_url, 0); + if ((option_homepage_url) && + (option_homepage_url[0])) { + browser_window_go(g->bw, + option_homepage_url, 0); } else { snprintf(url, sizeof url, "file:/<NetSurf$Dir>/Docs/intro_%s", @@ -1459,24 +1591,27 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, if (!c || c->type != CONTENT_HTML) return false; ro_gui_menu_prepare_action(owner, action, true); - ro_gui_dialog_open_persistent(g->window, dialog_search, - windows_at_pointer); + ro_gui_dialog_open_persistent(g->window, + dialog_search, windows_at_pointer); return true; case BROWSER_IMAGES_BACKGROUND: if (!g) return false; - g->option.background_images = !g->option.background_images; + g->option.background_images = + !g->option.background_images; gui_window_redraw_window(g); return true; case BROWSER_BUFFER_ANIMS: if (!g) return false; - g->option.buffer_animations = !g->option.buffer_animations; + g->option.buffer_animations = + !g->option.buffer_animations; break; case BROWSER_BUFFER_ALL: if (!g) return false; - g->option.buffer_everything = !g->option.buffer_everything; + g->option.buffer_everything = + !g->option.buffer_everything; break; case BROWSER_SAVE_VIEW: if (!bw) @@ -1493,13 +1628,16 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, error = xwimp_get_window_state(&state); if (error) { LOG(("xwimp_get_window_state: 0x%x: %s", - error->errnum, error->errmess)); + error->errnum, + error->errmess)); warn_user("WimpError", error->errmess); } option_window_x = state.visible.x0; option_window_y = state.visible.y0; - option_window_width = state.visible.x1 - state.visible.x0; - option_window_height = state.visible.y1 - state.visible.y0; + option_window_width = + state.visible.x1 - state.visible.x0; + option_window_height = + state.visible.y1 - state.visible.y0; return true; case BROWSER_WINDOW_STAGGER: option_window_stagger = !option_window_stagger; @@ -1610,7 +1748,9 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, * \param action the action to prepare * \param windows whether to update sub-windows */ -void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) { +void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, + bool windows) +{ struct menu_definition_entry *entry; struct gui_window *g; struct browser_window *bw; @@ -1631,8 +1771,10 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) /* help actions */ case HELP_LAUNCH_INTERACTIVE: result = ro_gui_interactive_help_available(); - ro_gui_menu_set_entry_shaded(current_menu, action, result); - ro_gui_menu_set_entry_ticked(current_menu, action, result); + ro_gui_menu_set_entry_shaded(current_menu, + action, result); + ro_gui_menu_set_entry_ticked(current_menu, + action, result); break; /* history actions */ @@ -1655,39 +1797,49 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) case HOTLIST_SHOW: ro_gui_menu_set_entry_shaded(current_menu, action, !hotlist_tree); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, - ICON_TOOLBAR_BOOKMARK, !hotlist_tree); + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, + ICON_TOOLBAR_BOOKMARK, + !hotlist_tree); break; /* page actions */ case BROWSER_PAGE_INFO: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((windows) && (c)) ro_gui_menu_prepare_pageinfo(g); break; case BROWSER_PRINT: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((t) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_PRINT, !c); if ((windows) && (c)) ro_gui_print_prepare(g); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_PRINT, !c); break; case BROWSER_PAGE: case BROWSER_NEW_WINDOW: case BROWSER_VIEW_SOURCE: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); break; /* object actions */ case BROWSER_OBJECT: c = current_menu_object_box ? current_menu_object_box->object : NULL; - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); break; case BROWSER_OBJECT_INFO: if ((windows) && (current_menu_object_box)) @@ -1702,37 +1854,45 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) case BROWSER_OBJECT_SAVE: c = current_menu_object_box ? current_menu_object_box->object : NULL; - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_OBJECT_ORIG, c); break; case BROWSER_OBJECT_EXPORT_SPRITE: c = current_menu_object_box ? current_menu_object_box->object : NULL; - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_OBJECT_NATIVE, c); break; case BROWSER_SAVE: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_SOURCE, c); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_SAVE, !c); break; case BROWSER_SAVE_COMPLETE: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_COMPLETE, c); break; case BROWSER_EXPORT_DRAW: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_DRAW, c); break; case BROWSER_EXPORT_TEXT: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_TEXT, c); break; @@ -1740,7 +1900,8 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) c = current_menu_object_box ? current_menu_object_box->object : NULL; case BROWSER_SAVE_URL_URI: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_LINK_URI, c); break; @@ -1748,7 +1909,8 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) c = current_menu_object_box ? current_menu_object_box->object : NULL; case BROWSER_SAVE_URL_URL: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_LINK_URL, c); break; @@ -1756,7 +1918,8 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) c = current_menu_object_box ? current_menu_object_box->object : NULL; case BROWSER_SAVE_URL_TEXT: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_save_prepare(GUI_SAVE_LINK_TEXT, c); break; @@ -1775,34 +1938,46 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) case BROWSER_NAVIGATE_BACK: result = (!bw || !bw->history || !history_back_available(bw->history)); - ro_gui_menu_set_entry_shaded(current_menu, action, result); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + ro_gui_menu_set_entry_shaded(current_menu, + action, result); + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_BACK, result); break; case BROWSER_NAVIGATE_FORWARD: result = (!bw || !bw->history || !history_forward_available(bw->history)); - ro_gui_menu_set_entry_shaded(current_menu, action, result); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + ro_gui_menu_set_entry_shaded(current_menu, + action, result); + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_FORWARD, result); break; case BROWSER_NAVIGATE_RELOAD: case BROWSER_NAVIGATE_RELOAD_ALL: result = (bw->current_content && !bw->loading_content); - ro_gui_menu_set_entry_shaded(current_menu, action, !result); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + ro_gui_menu_set_entry_shaded(current_menu, + action, !result); + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_RELOAD, !result); break; case BROWSER_NAVIGATE_STOP: result = (bw->loading_content || (bw->current_content && (bw->current_content->status != CONTENT_STATUS_DONE))); - ro_gui_menu_set_entry_shaded(current_menu, action, !result); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + ro_gui_menu_set_entry_shaded(current_menu, + action, !result); + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_STOP, !result); break; case BROWSER_NAVIGATE_URL: @@ -1812,44 +1987,53 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) /* display actions */ case BROWSER_SCALE_VIEW: - ro_gui_menu_set_entry_shaded(current_menu, action, !c); + ro_gui_menu_set_entry_shaded(current_menu, + action, !c); if ((c) && (windows)) ro_gui_dialog_prepare_zoom(g); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_SCALE, !c); break; case BROWSER_FIND_TEXT: result = !c || c->type != CONTENT_HTML; - ro_gui_menu_set_entry_shaded(current_menu, action, result); + ro_gui_menu_set_entry_shaded(current_menu, + action, result); if ((c) && (windows)) ro_gui_search_prepare(g); - if ((t) && (!t->editor) && (t->type == THEME_BROWSER_TOOLBAR)) - ro_gui_set_icon_shaded_state(t->toolbar_handle, + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_SEARCH, result); break; case BROWSER_IMAGES_FOREGROUND: - ro_gui_menu_set_entry_shaded(current_menu, action, true); - ro_gui_menu_set_entry_ticked(current_menu, action, true); + ro_gui_menu_set_entry_shaded(current_menu, + action, true); + ro_gui_menu_set_entry_ticked(current_menu, + action, true); break; case BROWSER_IMAGES_BACKGROUND: if (g) - ro_gui_menu_set_entry_ticked(current_menu, action, - g->option.background_images); + ro_gui_menu_set_entry_ticked(current_menu, + action, g->option.background_images); break; case BROWSER_BUFFER_ANIMS: if (g) { - ro_gui_menu_set_entry_shaded(current_menu, action, - g->option.buffer_everything); - ro_gui_menu_set_entry_ticked(current_menu, action, + ro_gui_menu_set_entry_shaded(current_menu, + action, g->option.buffer_everything); + ro_gui_menu_set_entry_ticked(current_menu, + action, g->option.buffer_animations || g->option.buffer_everything); } break; case BROWSER_BUFFER_ALL: if (g) - ro_gui_menu_set_entry_ticked(current_menu, action, - g->option.buffer_everything); + ro_gui_menu_set_entry_ticked(current_menu, + action, g->option.buffer_everything); break; case BROWSER_WINDOW_STAGGER: ro_gui_menu_set_entry_shaded(current_menu, action, @@ -1881,19 +2065,23 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) case TREE_COLLAPSE_FOLDERS: case TREE_COLLAPSE_LINKS: if ((tree) && (tree->root)) - ro_gui_menu_set_entry_shaded(current_menu, action, - !tree->root->child); + ro_gui_menu_set_entry_shaded(current_menu, + action, !tree->root->child); break; case TREE_SELECTION: if ((!tree) || (!tree->root)) break; if (tree->root->child) result = tree_has_selection(tree->root->child); - ro_gui_menu_set_entry_shaded(current_menu, action, !result); - if ((t) && (!t->editor) && (t->type != THEME_BROWSER_TOOLBAR)) { - ro_gui_set_icon_shaded_state(t->toolbar_handle, + ro_gui_menu_set_entry_shaded(current_menu, + action, !result); + if ((t) && (!t->editor) && + (t->type != THEME_BROWSER_TOOLBAR)) { + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_DELETE, !result); - ro_gui_set_icon_shaded_state(t->toolbar_handle, + ro_gui_set_icon_shaded_state( + t->toolbar_handle, ICON_TOOLBAR_LAUNCH, !result); } break; @@ -1921,7 +2109,8 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) break; if (tree->root->child) result = tree_has_selection(tree->root->child); - ro_gui_menu_set_entry_shaded(current_menu, action, !result); + ro_gui_menu_set_entry_shaded(current_menu, + action, !result); break; case TREE_SELECT_ALL: ro_gui_menu_set_entry_shaded(current_menu, action, @@ -1932,33 +2121,39 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool windows) break; if (tree->root->child) result = tree_has_selection(tree->root->child); - ro_gui_menu_set_entry_shaded(current_menu, action, !result); + ro_gui_menu_set_entry_shaded(current_menu, + action, !result); break; /* toolbar actions */ case TOOLBAR_BUTTONS: - ro_gui_menu_set_entry_shaded(current_menu, action, (!t || - (t->editor))); - ro_gui_menu_set_entry_ticked(current_menu, action, (t && + ro_gui_menu_set_entry_shaded(current_menu, + action, (!t || (t->editor))); + ro_gui_menu_set_entry_ticked(current_menu, + action, (t && ((t->display_buttons) || (t->editor)))); break; case TOOLBAR_ADDRESS_BAR: - ro_gui_menu_set_entry_shaded(current_menu, action, !t); + ro_gui_menu_set_entry_shaded(current_menu, + action, !t); ro_gui_menu_set_entry_ticked(current_menu, action, (t && t->display_url)); break; case TOOLBAR_THROBBER: - ro_gui_menu_set_entry_shaded(current_menu, action, !t); + ro_gui_menu_set_entry_shaded(current_menu, + action, !t); ro_gui_menu_set_entry_ticked(current_menu, action, (t && t->display_throbber)); break; case TOOLBAR_STATUS_BAR: - ro_gui_menu_set_entry_shaded(current_menu, action, !t); + ro_gui_menu_set_entry_shaded(current_menu, + action, !t); ro_gui_menu_set_entry_ticked(current_menu, action, (t && t->display_status)); break; case TOOLBAR_EDIT: - ro_gui_menu_set_entry_shaded(current_menu, action, !t); + ro_gui_menu_set_entry_shaded(current_menu, + action, !t); ro_gui_menu_set_entry_ticked(current_menu, action, (t && t->editor)); break; @@ -2053,3 +2248,79 @@ int ro_gui_menu_get_checksum(void) { return checksum; } + +/** + * Translate a menu's textual content into the system local encoding + * + * \param menu The menu to translate + * \return false if out of memory, true otherwise + */ +bool ro_gui_menu_translate(struct menu_definition *menu) +{ + os_error *error; + int alphabet; + struct menu_definition_entry *entry; + char *translated; + utf8_convert_ret err; + + /* read current alphabet */ + error = xosbyte1(osbyte_ALPHABET_NUMBER, 127, 0, &alphabet); + if (error) { + LOG(("failed reading alphabet: 0x%x: %s", + error->errnum, error->errmess)); + /* assume Latin1 */ + alphabet = territory_ALPHABET_LATIN1; + } + + if (menu->current_encoding == alphabet) + /* menu text is already in the correct encoding */ + return true; + + /* translate root menu title text */ + free(menu->menu->title_data.indirected_text.text); + err = utf8_to_local_encoding(messages_get(menu->title_key), + 0, &translated); + if (err != UTF8_CONVERT_OK) { + assert(err != UTF8_CONVERT_BADENC); + LOG(("utf8_to_enc failed")); + return false; + } + + /* and fill in WIMP menu field */ + menu->menu->title_data.indirected_text.text = translated; + + /* now the menu entries */ + for (entry = menu->entries; entry; entry = entry->next) { + wimp_menu *submenu = entry->menu_entry->sub_menu; + + /* tranlate menu entry text */ + free(entry->menu_entry->data.indirected_text.text); + err = utf8_to_local_encoding(messages_get(entry->entry_key), + 0, &translated); + if (err != UTF8_CONVERT_OK) { + assert(err != UTF8_CONVERT_BADENC); + LOG(("utf8_to_enc failed")); + return false; + } + + /* fill in WIMP menu fields */ + entry->menu_entry->data.indirected_text.text = translated; + entry->menu_entry->data.indirected_text.validation = + (char *) -1; + entry->menu_entry->data.indirected_text.size = + strlen(translated); + + /* child menu title - this is the same as the text of + * the parent menu entry, so just copy the pointer */ + if (submenu != wimp_NO_SUB_MENU && + IS_MENU(entry->menu_entry, submenu)) { + submenu->title_data.indirected_text.text = + translated; + } + } + + /* finally, set the current encoding of the menu */ + menu->current_encoding = alphabet; + + return true; +} diff --git a/riscos/save.c b/riscos/save.c index 0c4f8ea0b..807b45549 100644 --- a/riscos/save.c +++ b/riscos/save.c @@ -37,6 +37,7 @@ #include "netsurf/utils/log.h" #include "netsurf/utils/messages.h" #include "netsurf/utils/url.h" +#include "netsurf/utils/utf8.h" #include "netsurf/utils/utils.h" @@ -192,7 +193,8 @@ void ro_gui_save_prepare(gui_save_type save_type, struct content *c) ro_gui_save_set_state(c, save_type, name_buf, icon_buf); - ro_gui_set_icon_string(dialog_saveas, ICON_SAVE_ICON, icon_buf); + ro_gui_set_icon_sprite(dialog_saveas, ICON_SAVE_ICON, saveas_area, + icon_buf); ro_gui_set_icon_string(dialog_saveas, ICON_SAVE_PATH, name_buf); } @@ -435,6 +437,8 @@ void ro_gui_save_drag_end(wimp_dragged *drag) wimp_message message; os_error *error; char *dp, *ep; + char *local_name = NULL; + utf8_convert_ret err; if (using_dragasprite) { error = xdragasprite_stop(); @@ -466,8 +470,15 @@ void ro_gui_save_drag_end(wimp_dragged *drag) return; if (!saving_from_dialog) { - /* saving directly from browser window, choose a name based upon the URL */ - name = save_leafname; + /* saving directly from browser window, choose a + * name based upon the URL */ + err = utf8_to_local_encoding(save_leafname, 0, &local_name); + if (err != UTF8_CONVERT_OK) { + /* badenc should never happen */ + assert(err != UTF8_CONVERT_BADENC); + local_name = NULL; + } + name = local_name ? local_name : save_leafname; } else { char *dot; @@ -502,6 +513,8 @@ void ro_gui_save_drag_end(wimp_dragged *drag) wimp_send_message_to_window(wimp_USER_MESSAGE, &message, pointer.w, pointer.i); + + free(local_name); } @@ -871,6 +884,8 @@ void ro_gui_save_set_state(struct content *c, gui_save_type save_type, char *lea url_func_result res; bool done = false; char *nice = NULL; + utf8_convert_ret err; + char *local_name; /* parameters that we need to remember */ gui_save_current_type = save_type; @@ -886,8 +901,19 @@ void ro_gui_save_set_state(struct content *c, gui_save_type save_type, char *lea name = nice; else name = messages_get(name); + + /* filename is utf8 */ strcpy(leaf_buf, name); + err = utf8_to_local_encoding(name, 0, &local_name); + if (err != UTF8_CONVERT_OK) { + /* badenc should never happen */ + assert(err != UTF8_CONVERT_BADENC); + local_name = NULL; + } + + name = local_name ? local_name : name; + /* sprite name used for icon and dragging */ if (save_type == GUI_SAVE_COMPLETE) { int index; @@ -933,6 +959,7 @@ void ro_gui_save_set_state(struct content *c, gui_save_type save_type, char *lea } } + free(local_name); free(nice); } diff --git a/riscos/ucstables.c b/riscos/ucstables.c index b744e9c6a..ef103f367 100644 --- a/riscos/ucstables.c +++ b/riscos/ucstables.c @@ -6,12 +6,17 @@ */ /** \file - * UCS conversion tables + * UCS conversion tables and RISC OS-specific UTF-8 text handling */ +#include <assert.h> +#include <limits.h> +#include <string.h> #include "oslib/osbyte.h" #include "oslib/territory.h" + #include "netsurf/riscos/ucstables.h" +#include "netsurf/utils/utf8.h" #include "netsurf/utils/utils.h" /* Common values (ASCII) */ @@ -334,15 +339,16 @@ int *ucstable_from_alphabet(int alphabet) return ucstable; } + static const char *localencodings[] = { "ISO-8859-1", /* BFont - 100 - just use Latin1, instead */ - "ISO-8859-1", /* do we want to use Acorn Latin1, instead? */ + "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", - "ISO-8869-7", + "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-IR-182", @@ -354,21 +360,272 @@ static const char *localencodings[] = { "CP866" /* Cyrillic2 - 120 */ }; +static const struct special { + char local; /**< Local 8bit representation */ + char len; /**< Length (in bytes) of UTF-8 character */ + const char *utf; /**< UTF-8 representation */ +} special_chars[] = { + { 0x80, 3, "\xE2\x82\xAC" }, /* EURO SIGN */ + { 0x81, 2, "\xC5\xB4" }, /* LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ + { 0x82, 2, "\xC5\xB5" }, /* LATIN SMALL LETTER W WITH CIRCUMFLEX */ + { 0x84, 3, "\xE2\x9C\x98" }, /* HEAVY BALLOT X */ + { 0x85, 2, "\xC5\xB6" }, /* LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ + { 0x86, 2, "\xC5\xB7" }, /* LATIN SMALL LETTER Y WITH CIRCUMFLEX */ + { 0x88, 3, "\xE2\x87\x90" }, /* LEFTWARDS DOUBLE ARROW */ + { 0x89, 3, "\xE2\x87\x92" }, /* RIGHTWARDS DOUBLE ARROW */ + { 0x8a, 3, "\xE2\x87\x93" }, /* DOWNWARDS DOUBLE ARROW */ + { 0x8b, 3, "\xE2\x87\x91" }, /* UPWARDS DOUBLE ARROW */ + { 0x8c, 3, "\xE2\x80\xA6" }, /* HORIZONTAL ELLIPSIS */ + { 0x8d, 3, "\xE2\x84\xA2" }, /* TRADE MARK SIGN */ + { 0x8e, 3, "\xE2\x80\xB0" }, /* PER MILLE SIGN */ + { 0x8f, 3, "\xE2\x80\xA2" }, /* BULLET */ + { 0x90, 3, "\xE2\x80\x98" }, /* LEFT SINGLE QUOTATION MARK */ + { 0x91, 3, "\xE2\x80\x99" }, /* RIGHT SINGLE QUOTATION MARK */ + { 0x92, 3, "\xE2\x80\xB9" }, /* SINGLE LEFT-POINTING ANGLE QUOTATION MARK */ + { 0x93, 3, "\xE2\x80\xBA" }, /* SINGLE RIGHT-POINTING ANGLE QUOTATION MARK */ + { 0x94, 3, "\xE2\x80\x9C" }, /* LEFT DOUBLE QUOTATION MARK */ + { 0x95, 3, "\xE2\x80\x9D" }, /* RIGHT DOUBLE QUOTATION MARK */ + { 0x96, 3, "\xE2\x80\x9E" }, /* DOUBLE LOW-9 QUOTATION MARK */ + { 0x97, 3, "\xE2\x80\x93" }, /* EN DASH */ + { 0x98, 3, "\xE2\x80\x94" }, /* EM DASH */ + { 0x99, 3, "\xE2\x88\x92" }, /* MINUS SIGN */ + { 0x9a, 2, "\xC5\x92" }, /* LATIN CAPITAL LIGATURE OE */ + { 0x9b, 2, "\xC5\x93" }, /* LATIN SMALL LIGATURE OE */ + { 0x9c, 3, "\xE2\x80\xA0" }, /* DAGGER */ + { 0x9d, 3, "\xE2\x80\xA1" }, /* DOUBLE DAGGER */ + { 0x9e, 3, "\xEF\xAC\x81" }, /* LATIN SMALL LIGATURE FI */ + { 0x9f, 3, "\xEF\xAC\x82" } /* LATIN SMALL LIGATURE FL */ +}; + + /** - * Retrieve local encoding name, suitable for passing to iconv + * Convert a UTF-8 encoded string into the system local encoding + * + * \param string The string to convert + * \param len The length (in bytes) of the string, or 0 + * \param result Pointer to location in which to store result + * \return The appropriate utf8_convert_ret value */ -const char *local_encoding_name(void) +utf8_convert_ret utf8_to_local_encoding(const char *string, size_t len, + char **result) { os_error *error; - int alphabet; + int alphabet, i, offset_count = 0; + struct { + const struct special *local; /* local character */ + size_t offset; /* byte offset into string */ + } offsets[CHAR_MAX]; + size_t off; + char *temp; + const char *enc; + utf8_convert_ret err; + + assert(string && result); + + /* get length, if necessary */ + if (len == 0) + len = strlen(string); + /* read system alphabet */ error = xosbyte1(osbyte_ALPHABET_NUMBER, 127, 0, &alphabet); - if (!error) { - if (alphabet < 116) - return localencodings[alphabet - 100]; - else if (alphabet == 120) - return localencodings[16]; + if (error) + alphabet = territory_ALPHABET_LATIN1; + + /* UTF-8 -> simply copy string */ + if (alphabet == 111 /* UTF-8 */) { + *result = strndup(string, len); + return UTF8_CONVERT_OK; + } + + /* get encoding name */ + enc = (alphabet < 116 ? localencodings[alphabet - 100] + : (alphabet == 120 ? localencodings[16] + : localencodings[0])); + + /* populate offsets array with details of characters that + * will be stripped by iconv */ + for (off = 0; off < len; off = utf8_next(string, len, off)) { + if (string[off] != 0xE2 && + string[off] != 0xC5 && string[off] != 0xEF) + continue; + + for (i = 0; i != NOF_ELEMENTS(special_chars); i++) { + if (strncmp(string + off, special_chars[i].utf, + special_chars[i].len) == 0) { + /* ensure we don't overflow our buffer */ + assert(offset_count < CHAR_MAX - 1); + offsets[offset_count].local = + &special_chars[i]; + offsets[offset_count].offset = off; + offset_count++; + break; + } + } + } + + if (offset_count == 0) { + /* No substitutions are required, so exit here */ + return utf8_to_enc(string, enc, len, result); + } + + /* create output buffer */ + *(result) = malloc(len + 1); + if (!(*result)) + return UTF8_CONVERT_NOMEM; + *(*result) = '\0'; + + /* convert the chunks between offsets, then copy stripped + * character into output string */ + for (i = 0; i != offset_count; i++) { + off = (i > 0 ? offsets[i-1].offset + offsets[i-1].local->len + : 0); + + err = utf8_to_enc(string + off, enc, + offsets[i].offset - off, &temp); + if (err != UTF8_CONVERT_OK) { + assert(err != UTF8_CONVERT_BADENC); + free(*result); + return UTF8_CONVERT_NOMEM; + } + + strcat((*result), temp); + off = strlen(*result); + (*result)[off] = offsets[i].local->local; + (*result)[off+1] = '\0'; + + free(temp); + } + + /* handle last chunk */ + if (offsets[offset_count - 1].offset < len) { + off = offsets[offset_count - 1].offset + + offsets[offset_count - 1].local->len; + + err = utf8_to_enc(string + off, enc, len - off, &temp); + if (err != UTF8_CONVERT_OK) { + assert(err != UTF8_CONVERT_BADENC); + free(*result); + return UTF8_CONVERT_NOMEM; + } + + strcat((*result), temp); + + free(temp); + } + + return UTF8_CONVERT_OK; +} + +/** + * Convert a string encoded in the system local encoding to UTF-8 + * + * \param string The string to convert + * \param len The length (in bytes) of the string, or 0 + * \param result Pointer to location in which to store result + * \return The appropriate utf8_convert_ret value + */ +utf8_convert_ret utf8_from_local_encoding(const char *string, size_t len, + char **result) +{ + os_error *error; + int alphabet, i, offset_count = 0; + struct { + const struct special *local; /* utf character */ + size_t offset; /* byte offset into string */ + } offsets[CHAR_MAX]; + size_t off; + char *temp; + const char *enc; + utf8_convert_ret err; + + assert(string && result); + + /* get length, if necessary */ + if (len == 0) + len = strlen(string); + + /* read system alphabet */ + error = xosbyte1(osbyte_ALPHABET_NUMBER, 127, 0, &alphabet); + if (error) + alphabet = territory_ALPHABET_LATIN1; + + /* UTF-8 -> simply copy string */ + if (alphabet == 111 /* UTF-8 */) { + *result = strndup(string, len); + return UTF8_CONVERT_OK; + } + + /* get encoding name */ + enc = (alphabet < 116 ? localencodings[alphabet - 100] + : (alphabet == 120 ? localencodings[16] + : localencodings[0])); + + /* populate offsets array with details of characters that + * will be stripped by iconv */ + for (off = 0; off < len; off++) { + if (string[off] < 0x80 || string[off] > 0x9f) + continue; + + for (i = 0; i != NOF_ELEMENTS(special_chars); i++) { + if (string[off] == special_chars[i].local) { + /* ensure we don't overflow our buffer */ + assert(offset_count < CHAR_MAX - 1); + offsets[offset_count].local = + &special_chars[i]; + offsets[offset_count].offset = off; + offset_count++; + break; + } + } + } + + if (offset_count == 0) { + /* No substitutions are required, so exit here */ + return utf8_from_enc(string, enc, len, result); + } + + /* create output buffer (oversized, but not by much) */ + *(result) = malloc(len + (3 * offset_count) + 1); + if (!(*result)) + return UTF8_CONVERT_NOMEM; + *(*result) = '\0'; + + /* convert the chunks between offsets, then copy stripped + * UTF-8 character into output string */ + for (i = 0; i != offset_count; i++) { + off = (i > 0 ? offsets[i-1].offset + offsets[i-1].local->len + : 0); + + err = utf8_from_enc(string + off, enc, + offsets[i].offset - off, &temp); + if (err != UTF8_CONVERT_OK) { + assert(err != UTF8_CONVERT_BADENC); + free(*result); + return UTF8_CONVERT_NOMEM; + } + + strcat((*result), temp); + strcat((*result), offsets[i].local->utf); + + free(temp); + } + + /* handle last chunk */ + if (offsets[offset_count - 1].offset < len) { + off = offsets[offset_count - 1].offset + + offsets[offset_count - 1].local->len; + + err = utf8_from_enc(string + off, enc, len - off, &temp); + if (err != UTF8_CONVERT_OK) { + assert(err != UTF8_CONVERT_BADENC); + free(*result); + return UTF8_CONVERT_NOMEM; + } + + strcat((*result), temp); + + free(temp); } - return localencodings[0]; + return UTF8_CONVERT_OK; } diff --git a/riscos/wimp.c b/riscos/wimp.c index ec12545df..8d1c641d3 100644 --- a/riscos/wimp.c +++ b/riscos/wimp.c @@ -25,6 +25,7 @@ #include "netsurf/riscos/gui.h" #include "netsurf/riscos/wimp.h" #include "netsurf/utils/log.h" +#include "netsurf/utils/utf8.h" #include "netsurf/utils/utils.h" static void ro_gui_wimp_cache_furniture_sizes(wimp_w w); @@ -205,13 +206,15 @@ char *ro_gui_get_icon_string(wimp_w w, wimp_i i) { * * \param w window handle * \param i icon handle - * \param text string (copied) + * \param text string (UTF-8 encoded) (copied) */ void ro_gui_set_icon_string(wimp_w w, wimp_i i, const char *text) { wimp_caret caret; wimp_icon_state ic; os_error *error; int old_len, len; + char *local_text; + utf8_convert_ret err; /* get the icon data */ ic.w = w; @@ -224,17 +227,27 @@ void ro_gui_set_icon_string(wimp_w w, wimp_i i, const char *text) { return; } + /* convert text to local encoding */ + err = utf8_to_local_encoding(text, 0, &local_text); + if (err != UTF8_CONVERT_OK) { + /* A bad encoding should never happen, so assert this */ + assert(err != UTF8_CONVERT_BADENC); + LOG(("utf8_to_enc failed")); + return; + } + /* check that the existing text is not the same as the updated text * to stop flicker */ if (ic.icon.data.indirected_text.size && - !strncmp(ic.icon.data.indirected_text.text, text, + !strncmp(ic.icon.data.indirected_text.text, + local_text, (unsigned int)ic.icon.data.indirected_text.size - 1)) return; /* copy the text across */ old_len = strlen(ic.icon.data.indirected_text.text); if (ic.icon.data.indirected_text.size) { - strncpy(ic.icon.data.indirected_text.text, text, + strncpy(ic.icon.data.indirected_text.text, local_text, (unsigned int)ic.icon.data.indirected_text.size - 1); ic.icon.data.indirected_text.text[ ic.icon.data.indirected_text.size - 1] = '\0'; @@ -249,7 +262,7 @@ void ro_gui_set_icon_string(wimp_w w, wimp_i i, const char *text) { return; } if ((caret.w == w) && (caret.i == i)) { - len = strlen(text); + len = strlen(local_text); if ((caret.index > len) || (caret.index == old_len)) caret.index = len; error = xwimp_set_caret_position(w, i, caret.pos.x, caret.pos.y, @@ -261,6 +274,8 @@ void ro_gui_set_icon_string(wimp_w w, wimp_i i, const char *text) { } } ro_gui_redraw_icon(w, i); + + free(local_text); } @@ -374,6 +389,45 @@ void ro_gui_set_icon_button_type(wimp_w w, wimp_i i, int type) { /** + * Set an icon's sprite + * + * \param w window handle + * \param i icon handle + * \param area sprite area containing sprite + * \param name name of sprite in area (in local encoding) + */ +void ro_gui_set_icon_sprite(wimp_w w, wimp_i i, osspriteop_area *area, + const char *name) +{ + wimp_icon_state ic; + os_error *error; + + /* get the icon data */ + ic.w = w; + ic.i = i; + error = xwimp_get_icon_state(&ic); + if (error) { + LOG(("xwimp_get_icon_state: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + return; + } + + /* copy the name across */ + if (ic.icon.data.indirected_text.size) { + strncpy(ic.icon.data.indirected_text.text, name, + (unsigned int)ic.icon.data.indirected_text.size - 1); + ic.icon.data.indirected_text.text[ + ic.icon.data.indirected_text.size - 1] = '\0'; + } + + ic.icon.data.indirected_sprite.area = area; + + ro_gui_redraw_icon(w, i); +} + + +/** * Set a window title (does *not* redraw the title) * * \param w window handle @@ -382,6 +436,8 @@ void ro_gui_set_icon_button_type(wimp_w w, wimp_i i, int type) { void ro_gui_set_window_title(wimp_w w, const char *text) { wimp_window_info_base window; os_error *error; + char *title_local_enc; + utf8_convert_ret err; /* Get the window details */ @@ -394,9 +450,19 @@ void ro_gui_set_window_title(wimp_w w, const char *text) { return; } + /* convert text to local encoding */ + err = utf8_to_local_encoding(text, 0, &title_local_enc); + if (err != UTF8_CONVERT_OK) { + /* A bad encoding should never happen, + * so assert this */ + assert(err != UTF8_CONVERT_BADENC); + LOG(("utf8_to_enc failed")); + return; + } + /* Set the title string */ - strncpy(window.title_data.indirected_text.text, text, + strncpy(window.title_data.indirected_text.text, title_local_enc, (unsigned int)window.title_data.indirected_text.size - 1); window.title_data.indirected_text.text[ @@ -411,6 +477,8 @@ void ro_gui_set_window_title(wimp_w w, const char *text) { warn_user("WimpError", error->errmess); return; } + + free(title_local_enc); } diff --git a/riscos/wimp.h b/riscos/wimp.h index b26f8dc72..cc587c39b 100644 --- a/riscos/wimp.h +++ b/riscos/wimp.h @@ -37,6 +37,8 @@ bool ro_gui_get_icon_selected_state(wimp_w w, wimp_i i); void ro_gui_set_icon_shaded_state(wimp_w w, wimp_i i, bool state); bool ro_gui_get_icon_shaded_state(wimp_w w, wimp_i i); void ro_gui_set_icon_button_type(wimp_w w, wimp_i i, int type); +void ro_gui_set_icon_sprite(wimp_w w, wimp_i i, osspriteop_area *area, + const char *name); void ro_gui_set_window_title(wimp_w w, const char *title); void ro_gui_set_caret_first(wimp_w w); void ro_gui_open_window_centre(wimp_w parent, wimp_w child); diff --git a/riscos/window.c b/riscos/window.c index 8abc6c9ed..867382565 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -909,24 +909,11 @@ void gui_window_set_extent(struct gui_window *g, int width, int height) void gui_window_set_status(struct gui_window *g, const char *text) { - char *local_text; - utf8_convert_ret err; - if ((!g->toolbar) || (!g->toolbar->status_handle)) return; - /* convert text to local encoding */ - err = utf8_to_enc(text, local_encoding_name(), 0, &local_text); - if (err != UTF8_CONVERT_OK) { - /* A bad encoding should never happen, so assert this */ - assert(err != UTF8_CONVERT_BADENC); - LOG(("utf8_to_enc failed")); - return; - } - ro_gui_set_icon_string(g->toolbar->status_handle, - ICON_STATUS_TEXT, local_text); - free(local_text); + ICON_STATUS_TEXT, text); } @@ -1904,14 +1891,14 @@ bool ro_gui_window_keypress(struct gui_window *g, int key, bool toolbar) } return true; - case wimp_KEY_CONTROL + wimp_KEY_SHIFT + wimp_KEY_F9: - talloc_report_full(0, stderr); - return true; - case wimp_KEY_CONTROL + wimp_KEY_F9: /* Dump url_store. */ url_store_dump(); return true; + case wimp_KEY_CONTROL + wimp_KEY_SHIFT + wimp_KEY_F9: + talloc_report_full(0, stderr); + return true; + case wimp_KEY_F11: /* Zoom */ return ro_gui_menu_handle_action(g->window, BROWSER_SCALE_VIEW, false); diff --git a/utils/messages.c b/utils/messages.c index f2ed3e037..3b5b6d662 100644 --- a/utils/messages.c +++ b/utils/messages.c @@ -53,7 +53,7 @@ static unsigned int messages_hash(const char *s); void messages_load(const char *path) { - char s[300]; + char s[400]; FILE *fp; fp = fopen(path, "r"); @@ -121,23 +121,6 @@ const char *messages_get(const char *key) return entry->value; } -/** - * Retrieve the key associated with a value - * - * \param value The value as returned by messages_get - * \return The key associated with the value or NULL if not found - */ -const char *messages_get_key(const char *value) -{ - const char *key = value - MAX_KEY_LENGTH; - const char *temp_value = messages_get(key); - - if (strcmp(value, temp_value) == 0) - return key; - - return NULL; -} - /** * Hash function for keys. diff --git a/utils/messages.h b/utils/messages.h index 33b2fc3f4..4ca079293 100644 --- a/utils/messages.h +++ b/utils/messages.h @@ -23,7 +23,6 @@ void messages_load(const char *path); const char *messages_get(const char *key); -const char *messages_get_key(const char *value); void messages_dump(void); #endif diff --git a/utils/url.c b/utils/url.c index 69e3a9293..c602af912 100644 --- a/utils/url.c +++ b/utils/url.c @@ -567,10 +567,11 @@ url_func_result url_nice(const char *url, char **result) if (15 < k + i) break; if (k) - k++; + k+=2; strncpy(buf + k, rurl + j + so, i); k += i; buf[k] = 160; /* nbsp */ + buf[k+1] = 0xc2; /* as UTF-8 */ } j += match[0].rm_eo; diff --git a/utils/utf8.h b/utils/utf8.h index a77af29d0..a1a1c4e9a 100644 --- a/utils/utf8.h +++ b/utils/utf8.h @@ -31,6 +31,12 @@ utf8_convert_ret utf8_to_enc(const char *string, const char *encname, utf8_convert_ret utf8_from_enc(const char *string, const char *encname, size_t len, char **result); +/* These two are platform specific */ +utf8_convert_ret utf8_to_local_encoding(const char *string, size_t len, + char **result); +utf8_convert_ret utf8_from_local_encoding(const char *string, size_t len, + char **result); + void utf8_finalise(void); #endif diff --git a/utils/utils.h b/utils/utils.h index 27c4be7d6..50623670e 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -62,6 +62,5 @@ void die(const char * const error); void warn_user(const char *warning, const char *detail); query_id query_user(const char *query, const char *detail, const query_callback *cb, void *pw); void query_close(query_id); -const char *local_encoding_name(void); #endif |