--- a/Tools__InternationalLanguageTranslationEditor.st Mon Mar 06 19:27:26 2006 +0100
+++ b/Tools__InternationalLanguageTranslationEditor.st Mon Mar 06 19:58:27 2006 +0100
@@ -10,8 +10,9 @@
languageShownHolders dataSetView lastExtractedClass
lastExtractedApplicationClass stopApplicationIconVisibleHolder
monitoredApplication originalTextModifiedHolder
- languageTextModifiedHolder inSingleFileMode'
- classVariableNames:'LastExtractedClass LastExtractedApplicationClass'
+ languageTextModifiedHolder inSingleFileMode lastExtractedProject'
+ classVariableNames:'LastExtractedClass LastExtractedApplicationClass
+ LastExtractedProject'
poolDictionaries:''
category:'Interface-UIPainter'
!
@@ -24,7 +25,8 @@
!
Collection subclass:#KeyStringsToLanguageMappings
- instanceVariableNames:'keys languageMappings languages'
+ instanceVariableNames:'keys keyInfo perLanguageInfo perLanguageMappings languageMappings
+ languages'
classVariableNames:''
poolDictionaries:''
privateIn:InternationalLanguageTranslationEditor
@@ -329,6 +331,14 @@
translateLabel: true
)
(MenuItem
+ label: 'Extract from Project...'
+ itemValue: extractTranslationsFromProject
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
label: 'Run Application and Collect Translations...'
itemValue: runApplicationAndCollectTranslations
translateLabel: true
@@ -599,24 +609,40 @@
lastExtractedClass := LastExtractedClass := aClass.
+ newTranslations := self extractTranslationsFromClass:aClass.
+ self addAllTranslations:newTranslations.
+!
+
+extractTranslationsFromProject
+ |box projectID newTranslations|
+
+ box := ListSelectionBox new.
+"/ box useComboBoxWithList:(Smalltalk allProjectIDs).
+ box title:(resources string:'Project to extract translations from:').
+ box list:Smalltalk allProjectIDs.
+ box okAction:[:sel | projectID := sel].
+ box initialText:(lastExtractedProject ? LastExtractedProject).
+ box label:'Find Translations in Project'.
+
+ box showAtPointer.
+
+ projectID notNil ifTrue:[
+ projectID := projectID withoutSeparators asSymbol.
+ ].
+ projectID isEmptyOrNil ifTrue:[^ self ].
+
+ lastExtractedProject := LastExtractedProject := projectID.
+
newTranslations := Set new.
- self withWaitCursorDo:[
- "/ now, the hard part:
- "/ possible translations are in the specs,
- "/ and all arguments to (resources string:) messages.
- aClass instAndClassMethodsDo:[:eachMethod |
- newTranslations addAll:( self extractTranslationsFromMethod:eachMethod ).
- ].
+ Smalltalk allClassesDo:[:eachClass |
+ eachClass theNonMetaclass package == projectID ifTrue:[
+"/ eachClass isLoaded ifTrue:[ self halt. ].
+ newTranslations addAll:( self extractTranslationsFromClass:eachClass theNonMetaclass).
+ ]
].
- newTranslations := newTranslations select:[:k | k notEmpty and:[k isBlank not]].
- newTranslations := newTranslations select:[:k | (keyStringsToLanguageMappings includesKey:k) not].
- newTranslations notEmpty ifTrue:[
- newTranslations := newTranslations asSortedCollection.
- keyStringsToLanguageMappings addKeys:newTranslations.
- modified := true.
- ].
+ self addAllTranslations:newTranslations.
!
menuNew
@@ -853,6 +879,34 @@
!InternationalLanguageTranslationEditor methodsFor:'private-key extraction'!
+addAllTranslations:newTranslations
+ |newTranslationKeys|
+
+ newTranslationKeys := newTranslations select:[:k | k notEmpty and:[k isBlank not]].
+ newTranslationKeys := newTranslationKeys select:[:k | (keyStringsToLanguageMappings includesKey:k) not].
+ newTranslationKeys notEmpty ifTrue:[
+ newTranslationKeys := newTranslationKeys asSortedCollection.
+ keyStringsToLanguageMappings addKeys:newTranslationKeys.
+ modified := true.
+ ].
+!
+
+extractTranslationsFromClass:aClass
+ |newTranslations|
+
+ newTranslations := Set new.
+
+ self withWaitCursorDo:[
+ "/ now, the hard part:
+ "/ possible translations are in the specs,
+ "/ and all arguments to (resources string:) messages.
+ aClass instAndClassMethodsDo:[:eachMethod |
+ newTranslations addAll:( self extractTranslationsFromMethod:eachMethod ).
+ ].
+ ].
+ ^ newTranslations
+!
+
extractTranslationsFromHelpSpecMethod:aMethod
|codeStrings matcher parseTree resourceKeys|
@@ -1209,17 +1263,17 @@
addLanguage:lang
(languages includes:lang) ifFalse:[
languages add:lang.
- languageMappings at:lang put:(Dictionary new).
+ perLanguageMappings at:lang put:(Dictionary new).
]
!
at:aKey language:language
- ^ (languageMappings at:language) at:aKey ifAbsent:nil
+ ^ (perLanguageMappings at:language) at:aKey ifAbsent:nil
!
at:aKey language:language put:value
self addKey:aKey.
- ^ (languageMappings at:language) at:aKey put:value
+ ^ (perLanguageMappings at:language) at:aKey put:value
!
keyAt:index
@@ -1240,7 +1294,7 @@
removeKey:aKey
keys remove:aKey ifAbsent:[].
- languageMappings do:[:eachMapping |
+ perLanguageMappings do:[:eachMapping |
eachMapping removeKey:aKey ifAbsent:[].
].
self changed.
@@ -1266,7 +1320,8 @@
keys := OrderedSet new.
languages := OrderedCollection new.
- languageMappings := Dictionary new.
+ perLanguageMappings := Dictionary new.
+ perLanguageInfo := Dictionary new.
self addLanguage:#'de'.
self addLanguage:#'fr'.
@@ -1300,7 +1355,7 @@
!InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'private'!
atLanguage:lang
- ^ languageMappings at:lang
+ ^ perLanguageMappings at:lang
!
atLanguageIndex:idx
@@ -1308,6 +1363,17 @@
lang := languages at:idx.
^ self atLanguage:lang.
+!
+
+mappingAtLanguage:lang
+ ^ perLanguageMappings at:lang
+!
+
+mappingAtLanguageIndex:idx
+ |lang|
+
+ lang := languages at:idx.
+ ^ self mappingAtLanguage:lang.
! !
!InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'queries'!
@@ -1327,11 +1393,14 @@
!InternationalLanguageTranslationEditor::LanguageMappingRow methodsFor:'accessing'!
atLanguage:language
- ^ (mappings atLanguage:language) at: key ifAbsent:nil
+ |translation|
+
+ translation := (mappings mappingAtLanguage:language) at:key ifAbsent:nil.
+ ^ translation isNil ifTrue:nil ifFalse:[translation printString]
!
columnAt:columnNr
- ^ (mappings atLanguageIndex:columnNr-1) at: key ifAbsent:nil
+ ^ (mappings mappingAtLanguageIndex:columnNr-1) at: key ifAbsent:nil
!
key:something
@@ -1339,7 +1408,7 @@
!
keyString
- ^ key
+ ^ key printString
!
mappings:something