git-gui: Protect against bad translation strings
If a translation string uses a format character we don't have an argument for then it may throw an error when we attempt to format the translation. In this case switch back to the default format that comes with the program (aka the English translation). Signed-off-by: Shawn O. Pearce <spearce@spearce.org>maint
parent
f4e9996b77
commit
ab0d33c438
15
git-gui.sh
15
git-gui.sh
|
@ -88,13 +88,20 @@ if {![catch {set _verbose $env(GITGUI_VERBOSE)}]} {
|
||||||
|
|
||||||
package require msgcat
|
package require msgcat
|
||||||
|
|
||||||
proc mc {fmt args} {
|
proc _mc_trim {fmt} {
|
||||||
set fmt [::msgcat::mc $fmt]
|
|
||||||
set cmk [string first @@ $fmt]
|
set cmk [string first @@ $fmt]
|
||||||
if {$cmk > 0} {
|
if {$cmk > 0} {
|
||||||
set fmt [string range $fmt 0 [expr {$cmk - 1}]]
|
return [string range $fmt 0 [expr {$cmk - 1}]]
|
||||||
}
|
}
|
||||||
return [eval [list format $fmt] $args]
|
return $fmt
|
||||||
|
}
|
||||||
|
|
||||||
|
proc mc {en_fmt args} {
|
||||||
|
set fmt [_mc_trim [::msgcat::mc $en_fmt]]
|
||||||
|
if {[catch {set msg [eval [list format $fmt] $args]} err]} {
|
||||||
|
set msg [eval [list format [_mc_trim $en_fmt]] $args]
|
||||||
|
}
|
||||||
|
return $msg
|
||||||
}
|
}
|
||||||
|
|
||||||
proc strcat {args} {
|
proc strcat {args} {
|
||||||
|
|
Loading…
Reference in New Issue