diff options
-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 |