Tools__InternationalLanguageTranslationEditor.st
changeset 2410 a3b53393dcf3
parent 2330 58ace5744c59
child 2413 655f1c52504c
--- a/Tools__InternationalLanguageTranslationEditor.st	Tue Oct 07 15:34:26 2008 +0200
+++ b/Tools__InternationalLanguageTranslationEditor.st	Tue Oct 07 15:40:43 2008 +0200
@@ -22,7 +22,7 @@
 		searchBarInfoLabelHolder searchTextHolder searchTextView
 		searchBoxView translationsPanel lastPackage'
 	classVariableNames:'LastExtractedClass LastExtractedApplicationClass
-		LastExtractedProject'
+		LastExtractedProject LastProject'
 	poolDictionaries:''
 	category:'Interface-UIPainter'
 !
@@ -625,6 +625,11 @@
                   label: '-'
                 )
                (MenuItem
+                  label: 'Open Resources for Package or Project...'
+                  itemValue: menuOpenByPackage
+                  translateLabel: true
+                )
+               (MenuItem
                   label: 'Open Resource File...'
                   itemValue: menuOpen
                   translateLabel: true
@@ -651,7 +656,7 @@
                   label: '-'
                 )
                (MenuItem
-                  label: 'Import existing tranlations from file...'
+                  label: 'Import existing translations from file...'
                   itemValue: importExistingTranslationsFromFile
                   translateLabel: true
                 )
@@ -1427,7 +1432,7 @@
     |aFilename|
 
     aFilename := Dialog 
-        requestFileName:'Name of resource file:'
+        requestFileName:(resources string:'Name of resource file:')
         default:nil 
         pattern:'*.rs'.
 
@@ -1440,7 +1445,7 @@
     |aFilename|
 
     aFilename := Dialog 
-        requestFileName:'Name of resource file to save ', lang asString, ' :'
+        requestFileName:(resources string:'Name of resource file to save %1:' with:lang asString)
         default:nil 
         pattern:'*.rs'.
 
@@ -1450,8 +1455,10 @@
 !
 
 requestLanguage
-
-    ^ Dialog choose:'For which language ?' fromList:languagesList lines:10.
+    ^ Dialog 
+        choose:(resources string:'For which language ?') 
+        fromList:languagesList 
+        lines:10.
 !
 
 requestLanguageToSave
@@ -1459,6 +1466,19 @@
         choose:'Which language do you want to save?'
         fromList:languagesList
         lines:10
+!
+
+requestPackage
+    |package|
+
+    package := Dialog
+        requestProject:(resources string:'Name of Package:') 
+        initialAnswer:LastProject 
+        suggestions:nil.
+
+    package isEmptyOrNil ifTrue:[^ nil ].
+    LastProject := package.
+    ^ package
 ! !
 
 !InternationalLanguageTranslationEditor methodsFor:'images'!
@@ -1536,9 +1556,15 @@
 addLanguage
     |lang|
 
-    lang := Dialog request:'New language (ISO symbol):'.
+    lang := Dialog request:(resources string:'New language (ISO symbol):').
     lang isEmptyOrNil ifTrue:[^ self].
-    lang := lang asSymbol.
+    self addLanguage:lang
+!
+
+addLanguage:langArg
+    |lang|
+
+    lang := langArg asSymbol.
     (keyStringsToLanguageMappings includesLanguage:lang) ifTrue:[^ self ].
 
     keyStringsToLanguageMappings addLanguage:lang.
@@ -1584,7 +1610,7 @@
             initialAnswer:defaultPackage 
             suggestions:#('foo' 'bar' 'baz').
     package isNil ifTrue:[
-        ^Dialog information:(resources string:'No such package exists.') 
+        ^ self "/ Dialog information:(resources string:'No such package exists.') 
     ].
     lastPackage := package.
 !
@@ -1650,6 +1676,7 @@
 !
 
 importExistingTranslationsFromFile
+    self information:'The import function is not available in this release'.
 !
 
 inspectCanvasMissingStrings
@@ -1706,6 +1733,16 @@
     ]
 !
 
+menuOpenByPackage
+    |package|
+
+    self withWaitCursorDo:[
+        package := self requestPackage.
+        package isNil ifTrue:[^ self ].
+        self readResourceFileForPackage:package.
+    ]
+!
+
 menuSave
 "Saves the language selected in the fileName from where the language resource was obtained."
     |lang|
@@ -1762,6 +1799,48 @@
     self readResourceFile:aFilename asLanguage:lang asSymbol
 !
 
+readResourceFileForPackage:aPackage
+    |allLanguages lang packageDir resourceDir langFile|
+
+    packageDir := Smalltalk packageDirectoryForPackageId:aPackage.
+    resourceDir := packageDir asFilename construct:'resources'.
+
+    allLanguages := Set new.
+    resourceDir directoryContentsAsFilenamesDo:[:eachFile |
+        eachFile suffix = 'rs' ifTrue:[
+            (('##.rs' match:eachFile baseName)
+            or:[('##-##.rs' match:eachFile baseName)]) ifTrue:[
+                allLanguages add:(eachFile withoutSuffix baseName)
+            ].
+        ].
+    ].
+
+    allLanguages addAll:languagesList.
+    allLanguages := allLanguages asSortedCollection.
+
+    lang := Dialog 
+        choose:(resources string:'For which language ?')
+        fromList:allLanguages 
+        values:allLanguages 
+        buttons:(resources array:#('All')) 
+        values:#(all) 
+        lines:10 
+        cancel:nil.
+
+    lang isNil ifTrue:[^ self ].
+
+    langFile := resourceDir construct:lang,'.rs'.
+
+    lang == #all ifTrue:[
+        allLanguages do:[:lang |
+            self addLanguage:lang.
+            self readResourceFile:(resourceDir construct:lang,'.rs') asLanguage:lang.
+        ].
+    ] ifFalse:[
+        self readResourceFile:langFile asLanguage:lang asSymbol
+    ].
+!
+
 removeLanguage
     |lang|
 
@@ -2340,7 +2419,10 @@
 readResourceFile:aFilename asLanguage:lang
     |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys|
 
-    aFilename exists ifFalse:[^ self ].
+    aFilename exists ifFalse:[
+        Dialog information:(resources string:'Language file: "%1" does not exist' with:aFilename baseName).
+        ^ self 
+    ].
 
     resourcePack := ResourcePack new.
 
@@ -2372,14 +2454,15 @@
     remainingKeys := resourcePack keys select:[:k | k isString not].
 
     keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
-    keyStringsToLanguageMappings  atLanguage: lang putEncoder: decoder.
+    keyStringsToLanguageMappings atLanguage: lang putEncoder: decoder.
 
     sortedKeys do:[:k |
-        keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k)
+        keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false
     ].
     remainingKeys do:[:k |
-        keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k)
+        keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false
     ].
+    keyStringsToLanguageMappings changed.
 !
 
 saveLanguage: lang
@@ -2772,9 +2855,13 @@
 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'accessing'!
 
 addKey:aKey
+    self addKey:aKey sendChange:true
+!
+
+addKey:aKey sendChange:aBoolean
     (keys includes:aKey) ifFalse:[
         keys add:aKey.
-        self changed.
+        aBoolean ifTrue:[ self changed ].
     ]
 !
 
@@ -2800,6 +2887,12 @@
     (self rowForKey:aKey) changed
 !
 
+at:aKey language:language put:value sendChange:sendChange
+    self addKey:aKey sendChange:sendChange.
+    (perLanguageMappings at:language) at:aKey put:value.
+    (self rowForKey:aKey) changed
+!
+
 atLanguage: lang putEncoder: aDecoder
 
 ^(self languageInfoAt: lang) at: self encoderKey put: aDecoder