Tools__InternationalLanguageTranslationEditor.st
changeset 2053 8440fcd83b7b
parent 2051 88d16a7d0bd9
child 2163 641467b2f522
--- a/Tools__InternationalLanguageTranslationEditor.st	Tue Jun 13 17:53:43 2006 +0200
+++ b/Tools__InternationalLanguageTranslationEditor.st	Wed Jun 14 11:14:54 2006 +0200
@@ -15,7 +15,7 @@
 		lastSelectedKey autoAcceptHolder languageEditor
 		selectedColIndexHolder exampleLanguageSelectionHolder
 		exampleLanguageTextHolder pastePreviousTranslationEnableHolder
-		searchForSimilarTranslationEnableHolder'
+		searchForSimilarTranslationEnableHolder alwaysWriteUTF8Holder'
 	classVariableNames:'LastExtractedClass LastExtractedApplicationClass
 		LastExtractedProject'
 	poolDictionaries:''
@@ -115,7 +115,7 @@
           name: 'InternationalLanguageTranslationEditor'
           min: (Point 10 10)
           max: (Point 1024 768)
-          bounds: (Rectangle 0 0 780 616)
+          bounds: (Rectangle 0 0 778 614)
           menu: mainMenu
         )
         component: 
@@ -303,6 +303,11 @@
                   label: '-'
                 )
                (MenuItem
+                  label: 'Save All Resource Files'
+                  itemValue: menuSaveAll
+                  translateLabel: true
+                )
+               (MenuItem
                   label: 'Save Resource File'
                   itemValue: menuSave
                   translateLabel: true
@@ -428,6 +433,11 @@
                   translateLabel: true
                   indication: searchForSimilarTranslationEnableHolder
                 )
+               (MenuItem
+                  label: 'Always Write UTF8'
+                  translateLabel: true
+                  indication: alwaysWriteUTF8Holder
+                )
                )
               nil
               nil
@@ -646,6 +656,11 @@
 
 !InternationalLanguageTranslationEditor methodsFor:'aspects'!
 
+alwaysWriteUTF8Holder
+    alwaysWriteUTF8Holder isNil ifTrue:[alwaysWriteUTF8Holder := true asValue]. 
+    ^ alwaysWriteUTF8Holder
+!
+
 autoAcceptHolder
     autoAcceptHolder isNil ifTrue:[autoAcceptHolder := true asValue]. 
     ^ autoAcceptHolder
@@ -983,7 +998,7 @@
 
     lang := Dialog request:'New language (ISO symbol):'.
     lang isEmptyOrNil ifTrue:[^ self].
-
+    lang := lang asSymbol.
     (keyStringsToLanguageMappings includesLanguage:lang) ifTrue:[^ self ].
 
     keyStringsToLanguageMappings addLanguage:lang.
@@ -1077,16 +1092,16 @@
 
 menuSave
 "Saves the language selected in the fileName from where the language resource was obtained."
-    |lang aFilename|
+    |lang|
 
     lang := self requestLanguage.
     lang isNil ifTrue:[^ self].
-    aFilename := keyStringsToLanguageMappings filenameAt:lang.
-    aFilename isNil ifTrue:[
-        aFilename := self requestFilename.
-        aFilename isNil ifTrue:[^ self].
-    ].
-    self saveResourceFile:aFilename for:lang asSymbol
+    self saveLanguage: lang
+!
+
+menuSaveAll
+"Saves all the languages in the fileName from where the language resource was obtained."
+    keyStringsToLanguageMappings languagesInUse do:[:each | self saveLanguage: each]. 
 !
 
 menuSaveAs
@@ -1095,7 +1110,7 @@
 
     lang := self requestLanguage.
     lang isNil ifTrue:[^ self]. 
-    aFilename := self requestFilename.
+    aFilename := self requestFilenameFor:lang.
     aFilename isNil ifTrue:[^ self].
     self saveResourceFile:aFilename for:lang asSymbol
 !
@@ -1581,6 +1596,12 @@
 
 !InternationalLanguageTranslationEditor methodsFor:'read/write resourceFile'!
 
+encoderAt: lang
+
+self alwaysWriteUTF8Holder value ifTrue:[^CharacterEncoder encoderForUTF8].
+^keyStringsToLanguageMappings encoderAt: lang.
+!
+
 printEditingWarningOn: aStream
 
 aStream nextPutAll: ';';
@@ -1599,7 +1620,7 @@
 printEncoderFor: lang on: aStream
 |characterEncoder encoderString|
 
-characterEncoder := keyStringsToLanguageMappings encoderAt: lang.
+characterEncoder := self encoderAt: lang.
 encoderString := characterEncoder isNil 
     ifTrue:[self requestEncoderStringFor: lang]
     ifFalse:[characterEncoder nameOfEncoding printString].
@@ -1620,8 +1641,10 @@
 
 printLanguageMappingsFor: lang on: aStream
 
-|orderedAssociations maxKeySize|   
+|orderedAssociations maxKeySize characterEncoder|   
 
+characterEncoder := self encoderAt: lang.
+characterEncoder isNil ifTrue:[ characterEncoder := CharacterEncoder::NullEncoder ].
 orderedAssociations := keyStringsToLanguageMappings orderedLanguageMappingsAssociationsFor: lang. 
 
 maxKeySize := keyStringsToLanguageMappings maxKeySizeForLanguage: lang.     
@@ -1629,7 +1652,7 @@
 orderedAssociations do:[:association |
     aStream nextPutAll: (association key storeString paddedTo: maxKeySize) ; 
         nextPutAll: (String new: 10);
-        nextPutAll: association value storeString;
+        nextPutAll: (characterEncoder encodeString: association value) storeString;
         cr.
     ].
 !
@@ -1679,6 +1702,19 @@
     ].
 !
 
+saveLanguage: lang
+"Saves the language in the fileName from where the language resource was obtained."
+    |aFilename|
+
+    lang isNil ifTrue:[^ self].
+    aFilename := keyStringsToLanguageMappings filenameAt:lang.
+    aFilename isNil ifTrue:[
+        aFilename := self requestFilenameFor: lang.
+        aFilename isNil ifTrue:[^ self].
+    ].
+    self saveResourceFile:aFilename for:lang asSymbol
+!
+
 saveResourceFile: aFilename for: lang
 
 |aStream |
@@ -1883,6 +1919,12 @@
     ^ languages
 !
 
+languagesInUse
+"Returns a collection of symbols for the languages that have mappings"
+
+^self languages select:[:each | (self atLanguage: each) notEmpty]
+!
+
 orderedLanguageMappingsAssociationsFor: language
 "Returns a collection of languageMappings associations (alphabetically ordered by keys) "
 ^(self atLanguage: language) associations asSortedCollection:[:a :b | a key < b key].