Issue #80: keep language settings in `UserPreferences` jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Mon, 20 Nov 2017 14:23:33 +0100
branchjv
changeset 23092 5d343af8922a
parent 23091 817fd8c6e4c5
child 23093 9c9fa5a584bb
Issue #80: keep language settings in `UserPreferences` ...not in `Smalltalk`. For backward compatibility, delegate `Smalltalk class >> #language` (and `#languageTerritory`) to `UserPreferences current`. See https://swing.fit.cvut.cz/projects/stx-jv/ticket/80
Smalltalk.st
UserPreferences.st
--- a/Smalltalk.st	Sun Nov 19 14:58:45 2017 -0300
+++ b/Smalltalk.st	Mon Nov 20 14:23:33 2017 +0100
@@ -322,72 +322,25 @@
 initGlobalsFromEnvironment
     "setup globals from the shell-environment"
 
-    |envString i langString terrString|
-
     StandAlone isNil ifTrue:[
-	StandAlone := false.
+        StandAlone := false.
     ].
     HeadlessOperation isNil ifTrue:[
-	HeadlessOperation := false.
-    ].
-
-    "
-     extract Language and LanguageTerritory from LANG variable.
-     valid are for example:
-			    en_en / en
-			    en_us
-			    en_gb
-			    de_de / de
-			    de_at       (for Austria)
-    "
-
-    Language := #en.
-    LanguageTerritory := #us.
-
-
-    "Format of LANG is: language[_territory][.codeset][@modifier]
-	language        ISO-639  Language code
-	territory       ISO-3166 Contry code"
-
-    envString := OperatingSystem getLanguage.
-    envString size > 0 ifTrue:[
-	i := envString indexOf:$@.
-	(i ~~ 0) ifTrue:[
-	    LanguageModifier := (envString copyFrom:(i + 1)) asLowercase asSymbol.
-	    envString := envString copyTo:(i - 1).
-	] ifFalse:[
-	    LanguageModifier := nil.
-	].
-	i := envString indexOf:$..
-	(i ~~ 0) ifTrue:[
-	    LanguageCodeset := (envString copyFrom:(i + 1)) asLowercase asSymbol.
-	    envString := envString copyTo:(i - 1).
-	] ifFalse:[
-	    LanguageCodeset := #'iso8859-1'.
-	].
-	i := envString indexOf:$_.
-	(i == 0) ifTrue:[
-	    langString := envString.
-	    terrString := envString
-	] ifFalse:[
-	    langString := envString copyTo:(i - 1).
-	    terrString := envString copyFrom:(i + 1)
-	].
-	langString := langString asLowercase.
-	terrString := terrString asLowercase.
-	(langString = 'c' or:[terrString = 'c']) ifTrue:[
-	    ('Smalltalk [info]: ignoring wrong LANG setting (',langString,'_',terrString,') - using english') infoPrintCR.
-	] ifFalse:[
-	    Language := langString asSymbol.
-	    LanguageTerritory := terrString asSymbol
-	]
-    ].
+        HeadlessOperation := false.
+    ].
+
+    Language := OperatingSystem getLanguage.
+    LanguageTerritory := OperatingSystem getLanguageTerritory.
+
+
+
 
     "
      Smalltalk initGlobalsFromEnvironment
     "
 
     "Modified: / 14-02-2012 / 15:25:08 / cg"
+    "Modified: / 21-11-2017 / 12:15:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initInterrupts
@@ -5395,40 +5348,29 @@
 !Smalltalk class methodsFor:'system environment'!
 
 language
-    "return the language setting"
-
-    ^ Language
+    ^ UserPreferences current language
 
     "
      Smalltalk language
     "
 
-    "Modified: 26.4.1996 / 17:10:05 / cg"
+    "Modified: / 26-04-1996 / 17:10:05 / cg"
+    "Modified: / 20-11-2017 / 14:12:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 language:aLanguageSymbol
-    "set the language - send out change notifications"
-
-    aLanguageSymbol ~= Language ifTrue:[
-        Language := aLanguageSymbol asSymbol.
-        self changed:#Language
-    ].
-
-    "
-     Smalltalk language:#de
-    "
+    <resource: #obsolete>
+
+    self obsoleteFeatureWarning:'Use `UserPreferences current language: ...`'
 
     "Modified: / 19-10-2006 / 23:17:29 / cg"
+    "Modified: / 20-11-2017 / 14:10:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 language:aLanguageSymbol territory:aTerritorySymbol
-    "set the language & territory - send out change notifications"
-
-    ((Language ~= aLanguageSymbol) or:[ LanguageTerritory ~= aTerritorySymbol]) ifTrue:[
-        Language := aLanguageSymbol asSymbol.
-        LanguageTerritory := aTerritorySymbol asSymbol.
-        self changed:#Language
-    ].
+    <resource: #obsolete>
+
+    self obsoleteFeatureWarning:'Use `UserPreferences current language: ...; languageTerritory:`'      .
 
     "
      Smalltalk language:#de territory:#de
@@ -5436,18 +5378,20 @@
 
     "Created: / 19-10-2006 / 22:16:22 / cg"
     "Modified: / 19-10-2006 / 23:17:36 / cg"
+    "Modified: / 20-11-2017 / 14:11:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 languageAndTerritory
     "return the language and territory in the format lang-terr (i.e. de-de, en-us)"
 
-    ^ Language , '-' , (LanguageTerritory ? Language)
+    ^ self language , '-' , self languageTerritory
 
     "
      Smalltalk languageAndTerritory
     "
 
     "Created: / 16-01-2011 / 10:19:42 / cg"
+    "Modified (comment): / 20-11-2017 / 14:13:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 languageCodeset
@@ -5461,16 +5405,15 @@
 languageTerritory
     "return the language territory setting"
 
-    ^ LanguageTerritory
+    ^ UserPreferences current languageTerritory
+
+    "Modified: / 20-11-2017 / 14:13:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 languageTerritory:aTerritorySymbol
-    "set the language territory - send out change notifications"
-
-    aTerritorySymbol ~= LanguageTerritory ifTrue:[
-        LanguageTerritory := aTerritorySymbol asSymbol.
-        self changed:#LanguageTerritory
-    ].
+    <resource: #obsolete>
+
+    self obsoleteFeatureWarning:'Use `UserPreferences current languageTerritory: ...`'      .
     
     "
      Time now
@@ -5483,12 +5426,14 @@
     "
 
     "Modified: / 19-10-2006 / 23:17:40 / cg"
+    "Modified: / 20-11-2017 / 14:12:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setLanguage:aLanguageSymbol
-    "set the language without change notification"
-
-    Language := aLanguageSymbol.
+    <resource: #obsolete>
+    self obsoleteFeatureWarning
+
+    "Modified: / 20-11-2017 / 14:16:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setLanguage:aLanguageSymbol territory:aTerritorySymbol
--- a/UserPreferences.st	Sun Nov 19 14:58:45 2017 -0300
+++ b/UserPreferences.st	Mon Nov 20 14:23:33 2017 +0100
@@ -5081,13 +5081,18 @@
     "/ For now, forward to smalltalk, until all references to "Smalltalk-language"
     "/ are replaced with "UserPreferences current language"
 
-    ^ self at:#language ifAbsent:[Smalltalk language].
+    self useSystemLanguage ifTrue:[ 
+        ^ OperatingSystem getLanguage
+    ] ifFalse:[ 
+        ^ self at:#language ifAbsent:[OperatingSystem getLanguage].
+    ].
 
     "
      UserPreferences current language
     "
 
     "Created: / 20-09-2006 / 23:55:01 / cg"
+    "Modified: / 20-11-2017 / 14:02:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 language:aLanguageSymbol
@@ -5097,8 +5102,18 @@
     "/ For now, forward to smalltalk, until all references to "Smalltalk-language"
     "/ are replaced with "UserPreferences current language"
 
+    | changed |
+
+    changed := self language ~= aLanguageSymbol.
     self at:#language put:aLanguageSymbol.
-    Smalltalk language:aLanguageSymbol
+    changed ifTrue:[
+        "/ Sigh, we must update Language and LanguageTerritory
+        "/ globals as resource files still reference them directly.
+        Language := self language.
+        LanguageTerritory := self languageTerritory.
+        Smalltalk changed: #Language; changed: #LanguageTerritory.
+    ].
+
 
     "
      UserPreferences current language
@@ -5106,6 +5121,7 @@
     "
 
     "Created: / 20-09-2006 / 23:55:01 / cg"
+    "Modified (format): / 21-11-2017 / 12:27:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 languageTerritory
@@ -5115,13 +5131,19 @@
     "/ for now, forward to smalltalk, while all references to "Smalltalk-language"
     "/ are replaced with "UserPreferences current language"
 
-    ^ self at:#languageTerritory ifAbsent:[Smalltalk languageTerritory]
+    self useSystemLanguage ifTrue:[ 
+        ^ OperatingSystem getLanguageTerritory
+    ] ifFalse:[ 
+        ^ self at:#languageTerritory ifAbsent:[self language].
+    ]. 
+
 
     "
      UserPreferences current languageTerritory
     "
 
     "Created: / 20-09-2006 / 23:55:01 / cg"
+    "Modified: / 20-11-2017 / 14:13:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 languageTerritory:aLanguageSymbol
@@ -5131,15 +5153,24 @@
     "/ For now, forward to smalltalk, until all references to "Smalltalk-language"
     "/ are replaced with "UserPreferences current language"
 
+   | changed |
+
+    changed := self language ~= aLanguageSymbol.
     self at:#languageTerritory put:aLanguageSymbol.
-    Smalltalk languageTerritory:aLanguageSymbol
-
+    changed ifTrue:[
+        "/ Sigh, we must update LanguageTerritory
+        "/ global as resource files still reference them directly.
+        LanguageTerritory := self languageTerritory.             
+        Smalltalk changed: #LanguageTerritory
+    ].
+    
     "
      UserPreferences current languageTerritory
      UserPreferences current languageTerritory:#en
     "
 
     "Created: / 20-09-2006 / 23:55:01 / cg"
+    "Modified: / 21-11-2017 / 12:27:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 unitForFileSize
@@ -5175,12 +5206,27 @@
      when the system comes up. If false, the setting here is used.
      The default is true."
 
+    | changed |
+
+    changed := self useSystemLanguage ~= aBoolean.
     self at:#useSystemLanguage put:aBoolean.
+    changed ifTrue:[ 
+        "/ Sigh, we must update Language and LanguageTerritory
+        "/ globals as resource files still reference them directly.
+        Language := self language.
+        LanguageTerritory := self languageTerritory.
+        Smalltalk changed: #Language; changed: #LanguageTerritory.
+    ].     
+
+
+
 
     "
      UserPreferences current useSystemLanguage
      UserPreferences current useSystemLanguage:false
     "
+
+    "Modified (format): / 21-11-2017 / 12:27:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !UserPreferences methodsFor:'accessing-prefs-startup'!