append v "Tcl version $tcl_patchLevel"
append v ", Tk version $tk_patchLevel"
}
- if {[info exists ui_comm_spell]} {
+ if {[info exists ui_comm_spell]
+ && [$ui_comm_spell version] ne {}} {
append v "\n"
append v [$ui_comm_spell version]
}
- # git-gui spellchecking support through aspell
+ # git-gui spellchecking support through ispell/aspell
# Copyright (C) 2008 Shawn Pearce
class spellcheck {
- field s_fd {} ; # pipe to aspell
- field s_version ; # aspell version string
- field s_lang ; # current language code
+ field s_fd {} ; # pipe to ispell/aspell
+ field s_version {} ; # ispell/aspell version string
+ field s_lang {} ; # current language code
+ field s_prog aspell; # are we actually old ispell?
+ field s_failed 0 ; # is $s_prog bogus and not working?
field w_text ; # text widget we are spelling
field w_menu ; # context menu for the widget
field s_menuidx 0 ; # last index of insertion into $w_menu
- field s_i ; # timer registration for _run callbacks
+ field s_i {} ; # timer registration for _run callbacks
field s_clear 0 ; # did we erase mispelled tags yet?
field s_seen [list] ; # lines last seen from $w_text in _run
field s_checked [list] ; # lines already checked
- field s_pending [list] ; # [$line $data] sent to aspell
+ field s_pending [list] ; # [$line $data] sent to ispell/aspell
field s_suggest ; # array, list of suggestions, keyed by misspelling
constructor init {pipe_fd ui_text ui_menu} {
set w_text $ui_text
set w_menu $ui_menu
+ array unset s_suggest
+ bind_button3 $w_text [cb _popup_suggest %X %Y @%x,%y]
_connect $this $pipe_fd
return $this
}
-translation lf
if {[gets $pipe_fd s_version] <= 0} {
- close $pipe_fd
- error [mc "Not connected to aspell"]
+ if {[catch {close $pipe_fd} err]} {
+
+ # Eh? Is this actually ispell choking on aspell options?
+ #
+ if {$s_prog eq {aspell}
+ && [regexp -nocase {^Usage: } $err]
+ && ![catch {
+ set pipe_fd [open [list | $s_prog -v] r]
+ gets $pipe_fd s_version
+ close $pipe_fd
+ }]
+ && $s_version ne {}} {
+ if {{@(#) } eq [string range $s_version 0 4]} {
+ set s_version [string range $s_version 5 end]
+ }
+ set s_failed 1
+ error_popup [strcat \
+ [mc "Unsupported spell checker"] \
+ ":\n\n$s_version"]
+ set s_version {}
+ return
+ }
+
+ regsub -nocase {^Error: } $err {} err
+ if {$s_fd eq {}} {
+ error_popup [strcat [mc "Spell checking is unavailable"] ":\n\n$err"]
+ } else {
+ error_popup [strcat \
+ [mc "Invalid spell checking configuration"] \
+ ":\n\n$err\n\n" \
+ [mc "Reverting dictionary to %s." $s_lang]]
+ }
+ } else {
+ error_popup [mc "Spell checker silently failed on startup"]
+ }
+ return
}
+
if {{@(#) } ne [string range $s_version 0 4]} {
- close $pipe_fd
- error [strcat [mc "Unrecognized aspell version"] ": $s_version"]
+ catch {close $pipe_fd}
+ error_popup [strcat [mc "Unrecognized spell checker"] ":\n\n$s_version"]
+ return
}
set s_version [string range $s_version 5 end]
+ regexp \
+ {International Ispell Version .* \(but really (Aspell .*?)\)$} \
+ $s_version _junk s_version
puts $pipe_fd ! ; # enable terse mode
puts $pipe_fd {$$cr master} ; # fetch the language
$w_text tag conf misspelled \
-foreground red \
-underline 1
- bind_button3 $w_text [cb _popup_suggest %X %Y @%x,%y]
array unset s_suggest
set s_seen [list]
}
method lang {{n {}}} {
- if {$n ne {} && $s_lang ne $n} {
+ if {$n ne {} && $s_lang ne $n && !$s_failed} {
set spell_cmd [list |]
lappend spell_cmd aspell
lappend spell_cmd --master=$n
}
method version {} {
- return "$s_version, $s_lang"
+ if {$s_version ne {}} {
+ return "$s_version, $s_lang"
+ }
+ return {}
}
method stop {} {
fconfigure $s_fd -block 1
if {[eof $s_fd]} {
if {![catch {close $s_fd} err]} {
- set err [mc "unexpected eof from aspell"]
+ set err [mc "Unexpected EOF from spell checker"]
}
catch {after cancel $s_i}
$w_text tag remove misspelled 1.0 end
- error_popup [strcat "Spell Checker Failed" "\n\n" $err]
+ error_popup [strcat [mc "Spell Checker Failed"] "\n\n" $err]
return
}
fconfigure $s_fd -block 0
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2008-02-02 10:14+0100\n"
- "PO-Revision-Date: 2008-02-02 10:18+0100\n"
+ "POT-Creation-Date: 2008-02-16 21:24+0100\n"
+ "PO-Revision-Date: 2008-02-16 21:52+0100\n"
"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
#: lib/branch_delete.tcl:52
msgid "Delete Only If Merged Into"
- msgstr "Nur löschen, wenn darin zusammengeführt"
+ msgstr "Nur löschen, wenn zusammengeführt nach"
#: lib/branch_delete.tcl:54
msgid "Always (Do not perform merge test.)"
#: lib/commit.tcl:221
msgid "Calling pre-commit hook..."
- msgstr ""
+ msgstr "Aufrufen der Vor-Eintragen-Kontrolle..."
#: lib/commit.tcl:236
msgid "Commit declined by pre-commit hook."
- msgstr ""
+ msgstr "Eintragen abgelehnt durch Vor-Eintragen-Kontrolle (»pre-commit hook«)."
#: lib/commit.tcl:259
msgid "Calling commit-msg hook..."
- msgstr ""
+ msgstr "Aufrufen der Versionsbeschreibungs-Kontrolle..."
#: lib/commit.tcl:274
msgid "Commit declined by commit-msg hook."
- msgstr ""
+ msgstr "Eintragen abgelehnt durch Versionsbeschreibungs-Kontrolle (»commit-message hook«)."
#: lib/commit.tcl:287
msgid "Committing changes..."
#: lib/database.tcl:48
msgid "Packed objects waiting for pruning"
- msgstr "Komprimierte Objekte, die zum Entfernen vorgesehen sind"
+ msgstr "Komprimierte Objekte, die zum Aufräumen vorgesehen sind"
#: lib/database.tcl:49
msgid "Garbage files"
#: lib/merge.tcl:119
#, tcl-format
- msgid "Merging %s and %s"
- msgstr "Zusammenführen von %s und %s"
+ msgid "Merging %s and %s..."
+ msgstr "Zusammenführen von %s und %s..."
- #: lib/merge.tcl:131
+ #: lib/merge.tcl:130
msgid "Merge completed successfully."
msgstr "Zusammenführen erfolgreich abgeschlossen."
#: lib/merge.tcl:158
#, tcl-format
msgid "Merge Into %s"
- msgstr "Zusammenführen in %s"
+ msgstr "Zusammenführen in »%s«"
#: lib/merge.tcl:177
msgid "Revision To Merge"
#: lib/option.tcl:111
msgid "Prune Tracking Branches During Fetch"
- msgstr "Übernahmezweige entfernen während Anforderung"
+ msgstr "Übernahmezweige aufräumen während Anforderung"
#: lib/option.tcl:112
msgid "Match Tracking Branches"
msgid "New Branch Name Template"
msgstr "Namensvorschlag für neue Zweige"
- #: lib/option.tcl:176
+ #: lib/option.tcl:191
+ msgid "Spelling Dictionary:"
+ msgstr "Wörterbuch Rechtschreibprüfung:"
+
+ #: lib/option.tcl:215
msgid "Change Font"
msgstr "Schriftart ändern"
#: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34
msgid "Delete Remote Branch"
- msgstr "Zweig aus anderem Projektarchiv löschen"
+ msgstr "Zweig in anderem Projektarchiv löschen"
#: lib/remote_branch_delete.tcl:47
msgid "From Repository"
- msgstr "Von Projektarchiv"
+ msgstr "In Projektarchiv"
#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:123
msgid "Remote:"
#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:138
msgid "Arbitrary URL:"
- msgstr "Kommunikation mit URL:"
+ msgstr "Archiv-URL:"
#: lib/remote_branch_delete.tcl:84
msgid "Branches"
#: lib/remote_branch_delete.tcl:109
msgid "Delete Only If"
- msgstr "Löschen, falls"
+ msgstr "Nur löschen, wenn"
#: lib/remote_branch_delete.tcl:111
msgid "Merged Into:"
- msgstr "Zusammenführen mit:"
+ msgstr "Zusammengeführt mit:"
#: lib/remote_branch_delete.tcl:119
msgid "Always (Do not perform merge checks)"
#: lib/remote.tcl:165
msgid "Prune from"
- msgstr "Entfernen von"
+ msgstr "Aufräumen von"
#: lib/remote.tcl:170
msgid "Fetch from"
msgid "Cannot write icon:"
msgstr "Fehler beim Erstellen des Icons:"
+ #: lib/spellcheck.tcl:37
+ msgid "Not connected to aspell"
+ msgstr "Keine Verbindung zu »aspell«"
+
+ #: lib/spellcheck.tcl:41
+ msgid "Unrecognized aspell version"
+ msgstr "Unbekannte Version von »aspell«"
+
+ #: lib/spellcheck.tcl:135
+ msgid "No Suggestions"
+ msgstr "Keine Vorschläge"
+
+ #: lib/spellcheck.tcl:336
+ msgid "Unexpected EOF from aspell"
+ msgstr "Unerwartetes EOF von »aspell«"
+
+ #: lib/spellcheck.tcl:340
+ msgid "Spell Checker Failed"
+ msgstr "Rechtschreibprüfung fehlgeschlagen"
+
#: lib/status_bar.tcl:83
#, tcl-format
msgid "%s ... %*i of %*i %s (%3i%%)"
#: lib/transport.tcl:18
#, tcl-format
msgid "remote prune %s"
- msgstr "Entfernen von »%s« aus anderem Archiv"
+ msgstr "Aufräumen von »%s«"
#: lib/transport.tcl:19
#, tcl-format
msgid "Pruning tracking branches deleted from %s"
- msgstr "Übernahmezweige entfernen, die in »%s« gelöscht wurden"
+ msgstr "Übernahmezweige aufräumen und entfernen, die in »%s« gelöscht wurden"
#: lib/transport.tcl:25 lib/transport.tcl:71
#, tcl-format
#: lib/transport.tcl:103
msgid "Source Branches"
- msgstr "Herkunftszweige"
+ msgstr "Lokale Zweige"
#: lib/transport.tcl:120
msgid "Destination Repository"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2008-02-02 10:14+0100\n"
+ "POT-Creation-Date: 2008-02-16 21:24+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: lib/merge.tcl:119
#, tcl-format
- msgid "Merging %s and %s"
+ msgid "Merging %s and %s..."
msgstr ""
- #: lib/merge.tcl:131
+ #: lib/merge.tcl:130
msgid "Merge completed successfully."
msgstr ""
msgid "New Branch Name Template"
msgstr ""
- #: lib/option.tcl:176
+ #: lib/option.tcl:191
+ msgid "Spelling Dictionary:"
+ msgstr ""
+
+ #: lib/option.tcl:215
msgid "Change Font"
msgstr ""
msgid "Cannot write icon:"
msgstr ""
+ #: lib/spellcheck.tcl:37
+ msgid "Not connected to aspell"
+ msgstr ""
+
+ #: lib/spellcheck.tcl:41
+ msgid "Unrecognized aspell version"
+ msgstr ""
+
+ #: lib/spellcheck.tcl:135
+ msgid "No Suggestions"
+ msgstr ""
+
+ #: lib/spellcheck.tcl:336
+ msgid "Unexpected EOF from aspell"
+ msgstr ""
+
+ #: lib/spellcheck.tcl:340
+ msgid "Spell Checker Failed"
+ msgstr ""
+
#: lib/status_bar.tcl:83
#, tcl-format
msgid "%s ... %*i of %*i %s (%3i%%)"
msgstr ""
"Project-Id-Version: git-gui glossary\n"
"POT-Creation-Date: 2008-01-07 21:20+0100\n"
- "PO-Revision-Date: 2008-01-15 20:32+0100\n"
+ "PO-Revision-Date: 2008-02-16 21:48+0100\n"
"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
"Language-Team: German \n"
"MIME-Version: 1.0\n"
#. "Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
msgid "prune"
- msgstr "entfernen"
+ msgstr "aufräumen (entfernen?)"
#. "Pulling a branch means to fetch it and merge it."
msgid "pull"