From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Shawn O. Pearce" Subject: Re: git-gui i18n status? Date: Sat, 1 Sep 2007 22:24:44 -0400 Message-ID: <20070902022444.GK18160@spearce.org> References: <20070901042924.GE18160@spearce.org> <20070902014242.GJ18160@spearce.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Cc: Christian Stimming , Miklos Vajna , Nanako Shiraishi , Michele Ballabio , Paolo Ciarrocchi , Xudong Guan , Harri Ilari Tapio Liusvaara , Junio C Hamano , Irina Riesen , git@vger.kernel.org To: Johannes Schindelin X-From: git-owner@vger.kernel.org Sun Sep 02 04:25:53 2007 Return-path: Envelope-to: gcvg-git@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by lo.gmane.org with esmtp (Exim 4.50) id 1IRf9m-0008VH-Rl for gcvg-git@gmane.org; Sun, 02 Sep 2007 04:25:47 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933519AbXIBCZl (ORCPT ); Sat, 1 Sep 2007 22:25:41 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S933438AbXIBCZl (ORCPT ); Sat, 1 Sep 2007 22:25:41 -0400 Received: from corvette.plexpod.net ([64.38.20.226]:37771 "EHLO corvette.plexpod.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933459AbXIBCZk (ORCPT ); Sat, 1 Sep 2007 22:25:40 -0400 Received: from [74.70.48.173] (helo=asimov.home.spearce.org) by corvette.plexpod.net with esmtpa (Exim 4.66) (envelope-from ) id 1IRf8c-0001FJ-Qy; Sat, 01 Sep 2007 22:24:35 -0400 Received: by asimov.home.spearce.org (Postfix, from userid 1000) id 39A1720FBAE; Sat, 1 Sep 2007 22:24:45 -0400 (EDT) Content-Disposition: inline In-Reply-To: <20070902014242.GJ18160@spearce.org> User-Agent: Mutt/1.5.11 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - corvette.plexpod.net X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - spearce.org Sender: git-owner@vger.kernel.org Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: "Shawn O. Pearce" wrote: > Johannes Schindelin wrote: > > Hmm. I am not enough involved in i18n stuff to form a proper opinion > > here... Do you suggest to move the initialisation earlier? > > Yea, I think that's what we are going to have to do here. If we don't > setup the directory for the .msg files early enough than we cannot do > translations through [mc]. Unfortunately that means we have to also > break up the library initialization. > > I'll try to work up a patch that does this. This two patch series is based on my current master (gitgui-0.8.2). Its also now in my pu branch. >>From fc703c209d415fe20ad5551465b5b68b8ab8b046 Mon Sep 17 00:00:00 2001 From: Shawn O. Pearce Date: Sat, 1 Sep 2007 21:58:29 -0400 Subject: [PATCH] git-gui: Locate the library directory early during startup To support a localized version of git-gui we need to locate the library directory early so we can initialize Tcl's msgcat package to load translated messages from. This needs to occur before we declare our git-version proc so that errors related to locating git or assessing its version can be reported to the end-user in their preferred language. However we have to keep the library loading until after git-version has been declared, otherwise we will fail to start git-gui if we are using a fake tclIndex that was generated by our Makefile. Signed-off-by: Shawn O. Pearce --- git-gui.sh | 25 +++++++++++++++---------- 1 files changed, 15 insertions(+), 10 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index fa30ccc..4ea6e91 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -44,6 +44,20 @@ if {[catch {package require Tcl 8.4} err] ###################################################################### ## +## locate our library + +set oguilib {@@GITGUI_LIBDIR@@} +set oguirel {@@GITGUI_RELATIVE@@} +if {$oguirel eq {1}} { + set oguilib [file dirname [file dirname [file normalize $argv0]]] + set oguilib [file join $oguilib share git-gui lib] +} elseif {[string match @@* $oguirel]} { + set oguilib [file join [file dirname [file normalize $argv0]] lib] +} +unset oguirel + +###################################################################### +## ## enable verbose loading? if {![catch {set _verbose $env(GITGUI_VERBOSE)}]} { @@ -595,15 +609,6 @@ You are using [git-version]: ## ## configure our library -set oguilib {@@GITGUI_LIBDIR@@} -set oguirel {@@GITGUI_RELATIVE@@} -if {$oguirel eq {1}} { - set oguilib [file dirname [file dirname [file normalize $argv0]]] - set oguilib [file join $oguilib share git-gui lib] -} elseif {[string match @@* $oguirel]} { - set oguilib [file join [file dirname [file normalize $argv0]] lib] -} - set idx [file join $oguilib tclIndex] if {[catch {set fd [open $idx r]} err]} { catch {wm withdraw .} @@ -637,7 +642,7 @@ if {$idx ne {}} { } else { set auto_path [concat [list $oguilib] $auto_path] } -unset -nocomplain oguirel idx fd +unset -nocomplain idx fd ###################################################################### ## -- 1.5.3.rc7.30.g947ad2 >>From d4b0ccd931cc29f35e8f8493445af27ea72ed03e Mon Sep 17 00:00:00 2001 From: Shawn O. Pearce Date: Sat, 1 Sep 2007 22:22:42 -0400 Subject: [PATCH] git-gui: Initialize Tcl's msgcat library for internationalization Tcl's msgcat library and corresponding mc procedure can locate a translated string for any user message, provided that it is first given a directory where the *.msg files are located containing the translations. During installation we will place the translations in lib/msgs/, so we need to inform msgcat of this location once we determine it during startup. Our source code tree however will store all of the translations within the po/ directory, so we need to special case this variant. Signed-off-by: Shawn O. Pearce --- git-gui.sh | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 4ea6e91..486d36e 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -51,8 +51,12 @@ set oguirel {@@GITGUI_RELATIVE@@} if {$oguirel eq {1}} { set oguilib [file dirname [file dirname [file normalize $argv0]]] set oguilib [file join $oguilib share git-gui lib] + set oguimsg [file join $oguilib msgs] } elseif {[string match @@* $oguirel]} { set oguilib [file join [file dirname [file normalize $argv0]] lib] + set oguimsg [file join [file dirname [file normalize $argv0]] po] +} else { + set oguimsg [file join $oguilib msgs] } unset oguirel @@ -76,6 +80,16 @@ if {![catch {set _verbose $env(GITGUI_VERBOSE)}]} { ###################################################################### ## +## Internationalization (i18n) through msgcat and gettext. See +## http://www.gnu.org/software/gettext/manual/html_node/Tcl.html + +package require msgcat +namespace import ::msgcat::mc +::msgcat::mcload $oguimsg +unset oguimsg + +###################################################################### +## ## read only globals set _appname [lindex [file split $argv0] end] -- 1.5.3.rc7.30.g947ad2 -- Shawn.