diff options
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | library/msgcat/msgcat.tcl | 34 | ||||
| -rw-r--r-- | library/msgcat/pkgIndex.tcl | 2 | ||||
| -rw-r--r-- | unix/Makefile.in | 4 | ||||
| -rw-r--r-- | win/Makefile.in | 4 | 
5 files changed, 44 insertions, 7 deletions
| @@ -1,3 +1,10 @@ +2012-06-??  Harald Oehlmann <harald.oehlmann@elmicron.de> + +	* library/msgcat/msgcat.tcl:	[Bug 3536888] Locale guessing of msgcat +	* library/msgcat/pkgIndex.tcl:  fails on (some) Windows 7.  Bump to 1.4.5 +	* unix/Makefile.in +	* win/Makefile.in +  2012-06-21  Jan Nijtmans  <nijtmans@users.sf.net>  	* win/tclWinReg.c:          [Bug #3362446]: registry keys command fails diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl index 369ed52..0b12dea 100644 --- a/library/msgcat/msgcat.tcl +++ b/library/msgcat/msgcat.tcl @@ -13,7 +13,7 @@  package require Tcl 8.5  # When the version number changes, be sure to update the pkgIndex.tcl file,  # and the installation directory in the Makefiles. -package provide msgcat 1.4.4 +package provide msgcat 1.4.5  namespace eval msgcat {      namespace export mc mcload mclocale mcmax mcmset mcpreferences mcset \ @@ -464,10 +464,40 @@ proc msgcat::Init {} {      #      if {[catch {  	package require registry +    }]} { +	mclocale C +	return +    } + +    # First check registry value LocalName present from Windows Vista +    # which contains the local string as RFC5646, composed of: +    # [a-z]{2,3} : language +    # -[a-z]{4}  : script (optional, not used) +    # -[a-z]{2}|[0-9]{3} : territory (optional, numerical region codes not used) +    # (-.*)* : variant, extension, private use (optional, not used) +    # Those are translated to local strings. +    # Examples: de-CH -> de_ch, sr-Latn-CS -> sr_cs, es-419 -> es +    # +    if {([registry values $key "LocaleName"] ne "") +	    && [regexp {^([a-z]{2,3})(?:-[a-z]{4})?(?:-([a-z]{2}))?(?:-.+)?$}\ +	    [string tolower [registry get $key "LocaleName"]] match locale\ +	    territory]} { +	if {"" ne $territory} { +	    append locale _ $territory +	} +	if {![catch { +	    mclocale [ConvertLocale $locale] +	}]} { +	    return +	} +    } + +    # then check key locale which contains a numerical language ID +    if {[catch {  	set key {HKEY_CURRENT_USER\Control Panel\International}  	set locale [registry get $key "locale"]      }]} { -        mclocale C +	mclocale C  	return      }      # diff --git a/library/msgcat/pkgIndex.tcl b/library/msgcat/pkgIndex.tcl index 17ad5db..60c2d3c 100644 --- a/library/msgcat/pkgIndex.tcl +++ b/library/msgcat/pkgIndex.tcl @@ -1,2 +1,2 @@  if {![package vsatisfies [package provide Tcl] 8.5]} {return} -package ifneeded msgcat 1.4.4 [list source [file join $dir msgcat.tcl]] +package ifneeded msgcat 1.4.5 [list source [file join $dir msgcat.tcl]] diff --git a/unix/Makefile.in b/unix/Makefile.in index 883a379..a527bf0 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -781,8 +781,8 @@ install-libraries: libraries $(INSTALL_TZDATA) install-msgs  	    do \  	    $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/opt0.4; \  	    done; -	@echo "Installing package msgcat 1.4.4 as a Tcl Module"; -	@$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.4.4.tm; +	@echo "Installing package msgcat 1.4.5 as a Tcl Module"; +	@$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.4.5.tm;  	@echo "Installing package tcltest 2.3.4 as a Tcl Module";  	@$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.4.tm; diff --git a/win/Makefile.in b/win/Makefile.in index 17bb1aa..a06cc3f 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -644,8 +644,8 @@ install-libraries: libraries install-tzdata install-msgs  	    do \  	    $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/opt0.4"; \  	    done; -	@echo "Installing package msgcat 1.4.4 as a Tcl Module"; -	@$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.4.4.tm; +	@echo "Installing package msgcat 1.4.5 as a Tcl Module"; +	@$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.4.5.tm;  	@echo "Installing package tcltest 2.3.4 as a Tcl Module";  	@$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.4.tm;  	@echo "Installing package platform 1.0.10 as a Tcl Module"; | 
