From eca963683c13e0fea80da57f15489bb7204b0b62 Mon Sep 17 00:00:00 2001 From: Vasco Almeida Date: Sun, 8 May 2016 10:52:55 +0000 Subject: [PATCH 1/4] git-gui i18n: internationalize use of colon punctuation Internationalize use of colon punctuation ':' in options window, windows titles, database statistics window. Some languages might use a different style, for instance French uses "User Name :" (space before colon). Signed-off-by: Vasco Almeida Signed-off-by: Pat Thoyts --- lib/branch_delete.tcl | 2 +- lib/database.tcl | 2 +- lib/error.tcl | 2 +- lib/option.tcl | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/branch_delete.tcl b/lib/branch_delete.tcl index 867938ec6a..9aef0c931b 100644 --- a/lib/branch_delete.tcl +++ b/lib/branch_delete.tcl @@ -128,7 +128,7 @@ method _delete {} { set b [lindex $i 0] set o [lindex $i 1] if {[catch {git branch -D $b} err]} { - append failed " - $b: $err\n" + append failed [mc " - %s:" $b] " $err\n" } } diff --git a/lib/database.tcl b/lib/database.tcl index 1f187ed286..8bd4b8e2f8 100644 --- a/lib/database.tcl +++ b/lib/database.tcl @@ -54,7 +54,7 @@ proc do_stats {} { set value "$value[lindex $s 2]" } - ${NS}::label $w.stat.l_$name -text "$label:" -anchor w + ${NS}::label $w.stat.l_$name -text [mc "%s:" $label] -anchor w ${NS}::label $w.stat.v_$name -text $value -anchor w grid $w.stat.l_$name $w.stat.v_$name -sticky we -padx {0 5} } diff --git a/lib/error.tcl b/lib/error.tcl index c0fa69af56..9b7d2294ba 100644 --- a/lib/error.tcl +++ b/lib/error.tcl @@ -113,7 +113,7 @@ proc hook_failed_popup {hook msg {is_fatal 1}} { bind $w "grab $w; focus $w" bind $w "destroy $w" - wm title $w [strcat "[appname] ([reponame]): " [mc "error"]] + wm title $w [mc "%s (%s): error" [appname] [reponame]] wm deiconify $w tkwait window $w } diff --git a/lib/option.tcl b/lib/option.tcl index b5b6b2fea6..e43971bfa3 100644 --- a/lib/option.tcl +++ b/lib/option.tcl @@ -179,7 +179,7 @@ proc do_options {} { i-* { regexp -- {-(\d+)\.\.(\d+)$} $type _junk min max ${NS}::frame $w.$f.$optid - ${NS}::label $w.$f.$optid.l -text "$text:" + ${NS}::label $w.$f.$optid.l -text [mc "%s:" $text] pack $w.$f.$optid.l -side left -anchor w -fill x tspinbox $w.$f.$optid.v \ -textvariable ${f}_config_new($name) \ @@ -194,7 +194,7 @@ proc do_options {} { c - t { ${NS}::frame $w.$f.$optid - ${NS}::label $w.$f.$optid.l -text "$text:" + ${NS}::label $w.$f.$optid.l -text [mc "%s:" $text] ${NS}::entry $w.$f.$optid.v \ -width 20 \ -textvariable ${f}_config_new($name) @@ -217,7 +217,7 @@ proc do_options {} { s { set opts [eval [lindex $option 3]] ${NS}::frame $w.$f.$optid - ${NS}::label $w.$f.$optid.l -text "$text:" + ${NS}::label $w.$f.$optid.l -text [mc "%s:" $text] if {$use_ttk} { ttk::combobox $w.$f.$optid.v \ -textvariable ${f}_config_new($name) \ @@ -279,7 +279,7 @@ proc do_options {} { [font configure $font -size] ${NS}::frame $w.global.$name - ${NS}::label $w.global.$name.l -text "$text:" + ${NS}::label $w.global.$name.l -text [mc "%s:" $text] ${NS}::button $w.global.$name.b \ -text [mc "Change Font"] \ -command [list \ From 43c65a85c4160fc18469ed0af9a41ee2f78b04f4 Mon Sep 17 00:00:00 2001 From: Vasco Almeida Date: Sun, 8 May 2016 10:52:56 +0000 Subject: [PATCH 2/4] git-gui i18n: mark "usage:" strings for translation Mark command-line "usage:" string for translation in git-gui.sh. Signed-off-by: Vasco Almeida Signed-off-by: Pat Thoyts --- git-gui.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 5e3fb23300..f9b323abff 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -3029,7 +3029,7 @@ bind all <$M1B-Key-W> {destroy [winfo toplevel %W]} set subcommand_args {} proc usage {} { - set s "usage: $::argv0 $::subcommand $::subcommand_args" + set s "[mc usage:] $::argv0 $::subcommand $::subcommand_args" if {[tk windowingsystem] eq "win32"} { wm withdraw . tk_messageBox -icon info -message $s \ @@ -3161,7 +3161,7 @@ gui { # fall through to setup UI for commits } default { - set err "usage: $argv0 \[{blame|browser|citool}\]" + set err "[mc usage:] $argv0 \[{blame|browser|citool}\]" if {[tk windowingsystem] eq "win32"} { wm withdraw . tk_messageBox -icon error -message $err \ From a3d97afaa8b4187d62496ccc9cf268e8bd47c5db Mon Sep 17 00:00:00 2001 From: Vasco Almeida Date: Sun, 8 May 2016 10:52:57 +0000 Subject: [PATCH 3/4] git-gui: fix incorrect use of Tcl append command Fix wrong use of append command in strings marked for translation. According to Tcl/Tk Documentation [1], append varName ?value value value ...? appends all value arguments to the current value of variable varName. This means that append "[appname] ([reponame]): " [mc "File Viewer"] is setting a variable named "[appname] ([reponame]): " to the output of [mc "File Viewer"], rather than returning the concatenation of both expressions as one might expect. The format for some strings enables, for instance, a French translator to translate like "%s (%s) : Create Branch" (space before colon). Conversely, strings already translated will be marked as fuzzy and the translator must update them herself. For some cases, use alternative way for concatenation instead of using strcat procedure defined in git-gui.sh. Reference: 31bb1d1 ("git-gui: Paper bag fix missing translated strings", 2007-09-14) fixes the same issue slightly differently. [1] http://www.tcl.tk/man/tcl/TclCmd/append.htm Signed-off-by: Vasco Almeida Signed-off-by: Pat Thoyts --- lib/blame.tcl | 2 +- lib/branch_checkout.tcl | 2 +- lib/branch_create.tcl | 2 +- lib/branch_delete.tcl | 2 +- lib/branch_rename.tcl | 2 +- lib/browser.tcl | 4 ++-- lib/database.tcl | 2 +- lib/diff.tcl | 11 +++++------ lib/error.tcl | 4 ++-- lib/merge.tcl | 2 +- lib/remote_add.tcl | 2 +- lib/remote_branch_delete.tcl | 2 +- lib/shortcut.tcl | 6 +++--- lib/tools_dlg.tcl | 6 +++--- lib/transport.tcl | 2 +- 15 files changed, 25 insertions(+), 26 deletions(-) diff --git a/lib/blame.tcl b/lib/blame.tcl index b1d15f4621..a1aeb8b96e 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -70,7 +70,7 @@ constructor new {i_commit i_path i_jump} { set path $i_path make_toplevel top w - wm title $top [append "[appname] ([reponame]): " [mc "File Viewer"]] + wm title $top [mc "%s (%s): File Viewer" [appname] [reponame]] set font_w [font measure font_diff "0"] diff --git a/lib/branch_checkout.tcl b/lib/branch_checkout.tcl index 2e459a8297..d06037decc 100644 --- a/lib/branch_checkout.tcl +++ b/lib/branch_checkout.tcl @@ -13,7 +13,7 @@ constructor dialog {} { global use_ttk NS make_dialog top w wm withdraw $w - wm title $top [append "[appname] ([reponame]): " [mc "Checkout Branch"]] + wm title $top [mc "%s (%s): Checkout Branch" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } diff --git a/lib/branch_create.tcl b/lib/branch_create.tcl index 4bb907705c..ba367d551d 100644 --- a/lib/branch_create.tcl +++ b/lib/branch_create.tcl @@ -20,7 +20,7 @@ constructor dialog {} { make_dialog top w wm withdraw $w - wm title $top [append "[appname] ([reponame]): " [mc "Create Branch"]] + wm title $top [mc "%s (%s): Create Branch" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } diff --git a/lib/branch_delete.tcl b/lib/branch_delete.tcl index 9aef0c931b..a5051637bb 100644 --- a/lib/branch_delete.tcl +++ b/lib/branch_delete.tcl @@ -13,7 +13,7 @@ constructor dialog {} { make_dialog top w wm withdraw $w - wm title $top [append "[appname] ([reponame]): " [mc "Delete Branch"]] + wm title $top [mc "%s (%s): Delete Branch" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } diff --git a/lib/branch_rename.tcl b/lib/branch_rename.tcl index 6e510ec2e3..3a2d79a9cc 100644 --- a/lib/branch_rename.tcl +++ b/lib/branch_rename.tcl @@ -12,7 +12,7 @@ constructor dialog {} { make_dialog top w wm withdraw $w - wm title $top [append "[appname] ([reponame]): " [mc "Rename Branch"]] + wm title $top [mc "%s (%s): Rename Branch" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } diff --git a/lib/browser.tcl b/lib/browser.tcl index 0328338fda..158049353f 100644 --- a/lib/browser.tcl +++ b/lib/browser.tcl @@ -24,7 +24,7 @@ constructor new {commit {path {}}} { global cursor_ptr M1B use_ttk NS make_dialog top w wm withdraw $top - wm title $top [append "[appname] ([reponame]): " [mc "File Browser"]] + wm title $top [mc "%s (%s): File Browser" [appname] [reponame]] if {$path ne {}} { if {[string index $path end] ne {/}} { @@ -272,7 +272,7 @@ constructor dialog {} { global use_ttk NS make_dialog top w wm withdraw $top - wm title $top [append "[appname] ([reponame]): " [mc "Browse Branch Files"]] + wm title $top [mc "%s (%s): Browse Branch Files" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" wm transient $top . diff --git a/lib/database.tcl b/lib/database.tcl index 8bd4b8e2f8..85783081e0 100644 --- a/lib/database.tcl +++ b/lib/database.tcl @@ -63,7 +63,7 @@ proc do_stats {} { bind $w "grab $w; focus $w.buttons.close" bind $w [list destroy $w] bind $w [list destroy $w] - wm title $w [append "[appname] ([reponame]): " [mc "Database Statistics"]] + wm title $w [mc "%s (%s): Database Statistics" [appname] [reponame]] wm deiconify $w tkwait window $w } diff --git a/lib/diff.tcl b/lib/diff.tcl index 30bdd691ee..4cae10a4c7 100644 --- a/lib/diff.tcl +++ b/lib/diff.tcl @@ -223,10 +223,9 @@ proc show_other_diff {path w m cont_info} { } $ui_diff conf -state normal if {$type eq {submodule}} { - $ui_diff insert end [append \ - "* " \ - [mc "Git Repository (subproject)"] \ - "\n"] d_info + $ui_diff insert end \ + "* [mc "Git Repository (subproject)"]\n" \ + d_info } elseif {![catch {set type [exec file $path]}]} { set n [string length $path] if {[string equal -length $n $path $type]} { @@ -611,7 +610,7 @@ proc apply_hunk {x y} { puts -nonewline $p $current_diff_header puts -nonewline $p [$ui_diff get $s_lno $e_lno] close $p} err]} { - error_popup [append $failed_msg "\n\n$err"] + error_popup "$failed_msg\n\n$err" unlock_index return } @@ -829,7 +828,7 @@ proc apply_range_or_line {x y} { puts -nonewline $p $current_diff_header puts -nonewline $p $wholepatch close $p} err]} { - error_popup [append $failed_msg "\n\n$err"] + error_popup "$failed_msg\n\n$err" } unlock_index diff --git a/lib/error.tcl b/lib/error.tcl index 9b7d2294ba..71dc8601d1 100644 --- a/lib/error.tcl +++ b/lib/error.tcl @@ -17,7 +17,7 @@ proc error_popup {msg} { set cmd [list tk_messageBox \ -icon error \ -type ok \ - -title [append "$title: " [mc "error"]] \ + -title [mc "%s: error" $title] \ -message $msg] if {[winfo ismapped [_error_parent]]} { lappend cmd -parent [_error_parent] @@ -33,7 +33,7 @@ proc warn_popup {msg} { set cmd [list tk_messageBox \ -icon warning \ -type ok \ - -title [append "$title: " [mc "warning"]] \ + -title [mc "%s: warning" $title] \ -message $msg] if {[winfo ismapped [_error_parent]]} { lappend cmd -parent [_error_parent] diff --git a/lib/merge.tcl b/lib/merge.tcl index 5ab6f8f102..2b10a98389 100644 --- a/lib/merge.tcl +++ b/lib/merge.tcl @@ -144,7 +144,7 @@ constructor dialog {} { } make_dialog top w - wm title $top [append "[appname] ([reponame]): " [mc "Merge"]] + wm title $top [mc "%s (%s): Merge" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } diff --git a/lib/remote_add.tcl b/lib/remote_add.tcl index 50029d0cee..480a6b30d0 100644 --- a/lib/remote_add.tcl +++ b/lib/remote_add.tcl @@ -17,7 +17,7 @@ constructor dialog {} { make_dialog top w wm withdraw $top - wm title $top [append "[appname] ([reponame]): " [mc "Add Remote"]] + wm title $top [mc "%s (%s): Add Remote" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } diff --git a/lib/remote_branch_delete.tcl b/lib/remote_branch_delete.tcl index fcc06d03a1..5ba9fcadd1 100644 --- a/lib/remote_branch_delete.tcl +++ b/lib/remote_branch_delete.tcl @@ -26,7 +26,7 @@ constructor dialog {} { global all_remotes M1B use_ttk NS make_dialog top w - wm title $top [append "[appname] ([reponame]): " [mc "Delete Branch Remotely"]] + wm title $top [mc "%s (%s): Delete Branch Remotely" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } diff --git a/lib/shortcut.tcl b/lib/shortcut.tcl index 39d23f96df..97d1d7aa02 100644 --- a/lib/shortcut.tcl +++ b/lib/shortcut.tcl @@ -5,7 +5,7 @@ proc do_windows_shortcut {} { global _gitworktree set fn [tk_getSaveFile \ -parent . \ - -title [append "[appname] ([reponame]): " [mc "Create Desktop Icon"]] \ + -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \ -initialfile "Git [reponame].lnk"] if {$fn != {}} { if {[file extension $fn] ne {.lnk}} { @@ -40,7 +40,7 @@ proc do_cygwin_shortcut {} { } set fn [tk_getSaveFile \ -parent . \ - -title [append "[appname] ([reponame]): " [mc "Create Desktop Icon"]] \ + -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \ -initialdir $desktop \ -initialfile "Git [reponame].lnk"] if {$fn != {}} { @@ -72,7 +72,7 @@ proc do_macosx_app {} { set fn [tk_getSaveFile \ -parent . \ - -title [append "[appname] ([reponame]): " [mc "Create Desktop Icon"]] \ + -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \ -initialdir [file join $env(HOME) Desktop] \ -initialfile "Git [reponame].app"] if {$fn != {}} { diff --git a/lib/tools_dlg.tcl b/lib/tools_dlg.tcl index 7eeda9daf2..c05413ce43 100644 --- a/lib/tools_dlg.tcl +++ b/lib/tools_dlg.tcl @@ -19,7 +19,7 @@ constructor dialog {} { global repo_config use_ttk NS make_dialog top w - wm title $top [append "[appname] ([reponame]): " [mc "Add Tool"]] + wm title $top [mc "%s (%s): Add Tool" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" wm transient $top . @@ -184,7 +184,7 @@ constructor dialog {} { load_config 1 make_dialog top w - wm title $top [append "[appname] ([reponame]): " [mc "Remove Tool"]] + wm title $top [mc "%s (%s): Remove Tool" [appname] [reponame]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" wm transient $top . @@ -280,7 +280,7 @@ constructor dialog {fullname} { } make_dialog top w -autodelete 0 - wm title $top [append "[appname] ([reponame]): " $title] + wm title $top "[mc "%s (%s):" [appname] [reponame]] $title" if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" wm transient $top . diff --git a/lib/transport.tcl b/lib/transport.tcl index e5d211edea..a1a424aab5 100644 --- a/lib/transport.tcl +++ b/lib/transport.tcl @@ -226,7 +226,7 @@ proc do_push_anywhere {} { bind $w "grab $w; focus $w.buttons.create" bind $w "destroy $w" bind $w [list start_push_anywhere_action $w] - wm title $w [append "[appname] ([reponame]): " [mc "Push"]] + wm title $w [mc "%s (%s): Push" [appname] [reponame]] wm deiconify $w tkwait window $w } From 9360fc22eaa5e8db33f1806a8e23afb83369a2f5 Mon Sep 17 00:00:00 2001 From: Vasco Almeida Date: Sun, 8 May 2016 10:52:58 +0000 Subject: [PATCH 4/4] git-gui i18n: mark string in lib/error.tcl for translation Mark string "$hook hook failed:" in lib/error.tcl for translation. Signed-off-by: Vasco Almeida Signed-off-by: Pat Thoyts --- lib/error.tcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/error.tcl b/lib/error.tcl index 71dc8601d1..8968a57f33 100644 --- a/lib/error.tcl +++ b/lib/error.tcl @@ -77,7 +77,7 @@ proc hook_failed_popup {hook msg {is_fatal 1}} { wm withdraw $w ${NS}::frame $w.m - ${NS}::label $w.m.l1 -text "$hook hook failed:" \ + ${NS}::label $w.m.l1 -text [mc "%s hook failed:" $hook] \ -anchor w \ -justify left \ -font font_uibold