# HG changeset patch # User Claus Gittinger # Date 1223386843 -7200 # Node ID a3b53393dcf333ba2e72f286a06d82a96c8d9a86 # Parent dbe69bb84c184ae84ad55aa1a76b197672cd94d2 added open by project diff -r dbe69bb84c18 -r a3b53393dcf3 Tools__InternationalLanguageTranslationEditor.st --- 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