From: Pat Thoyts <patthoyts@users•sourceforge.net>
To: Vasco Almeida <vascomalmeida@sapo•pt>
Cc: git@vger•kernel.org, "Shawn O . Pearce" <spearce@spearce•org>
Subject: Re: [PATCH 4/5] git-gui: fix incorrect use of Tcl append command
Date: Mon, 03 Oct 2016 11:23:55 +0100 [thread overview]
Message-ID: <87a8elwx1g.fsf@red.patthoyts.tk> (raw)
In-Reply-To: <1462704778-4722-4-git-send-email-vascomalmeida@sapo.pt> (Vasco Almeida's message of "Sun, 8 May 2016 10:52:57 +0000")
Vasco Almeida <vascomalmeida@sapo•pt> writes:
>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 <vascomalmeida@sapo•pt>
>---
> 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 b1d15f4..a1aeb8b 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 2e459a8..d06037d 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 4bb9077..ba367d5 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 9aef0c9..a505163 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 6e510ec..3a2d79a 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 0328338..1580493 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 8bd4b8e..8578308 100644
>--- a/lib/database.tcl
>+++ b/lib/database.tcl
>@@ -63,7 +63,7 @@ proc do_stats {} {
> bind $w <Visibility> "grab $w; focus $w.buttons.close"
> bind $w <Key-Escape> [list destroy $w]
> bind $w <Key-Return> [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 0d56986..1228ce2 100644
>--- a/lib/diff.tcl
>+++ b/lib/diff.tcl
>@@ -220,10 +220,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]} {
>@@ -608,7 +607,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
> }
>@@ -826,7 +825,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 9b7d229..71dc860 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 460d32f..b2de109 100644
>--- a/lib/merge.tcl
>+++ b/lib/merge.tcl
>@@ -149,7 +149,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 50029d0..480a6b3 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 fcc06d0..5ba9fca 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 78878ef..135086b 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}} {
>@@ -37,7 +37,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 != {}} {
>@@ -69,7 +69,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 7eeda9d..c05413c 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 e5d211e..a1a424a 100644
>--- a/lib/transport.tcl
>+++ b/lib/transport.tcl
>@@ -226,7 +226,7 @@ proc do_push_anywhere {} {
> bind $w <Visibility> "grab $w; focus $w.buttons.create"
> bind $w <Key-Escape> "destroy $w"
> bind $w <Key-Return> [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
> }
Well spotted!
--
Pat Thoyts http://www.patthoyts.tk/
PGP fingerprint 2C 6E 98 07 2C 59 C8 97 10 CE 11 E6 04 E0 B9 DD
next prev parent reply other threads:[~2016-10-03 10:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-08 10:52 [PATCH 1/5] git-gui i18n: mark strings for translation Vasco Almeida
2016-05-08 10:52 ` [PATCH 2/5] git-gui i18n: internationalize use of colon punctuation Vasco Almeida
2016-05-08 10:52 ` [PATCH 3/5] git-gui i18n: mark "usage:" strings for translation Vasco Almeida
2016-05-08 10:52 ` [PATCH 4/5] git-gui: fix incorrect use of Tcl append command Vasco Almeida
2016-10-03 10:23 ` Pat Thoyts [this message]
2016-05-08 10:52 ` [PATCH 5/5] git-gui i18n: mark string in lib/error.tcl for translation Vasco Almeida
2016-10-03 10:30 ` [PATCH 1/5] git-gui i18n: mark strings " Pat Thoyts
2016-10-03 12:57 ` Vasco Almeida
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a8elwx1g.fsf@red.patthoyts.tk \
--to=patthoyts@users$(echo .)sourceforge.net \
--cc=git@vger$(echo .)kernel.org \
--cc=spearce@spearce$(echo .)org \
--cc=vascomalmeida@sapo$(echo .)pt \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox