'From Squeak3.8alpha of ''17 July 2004'' [latest update: #5976] on 1 August 2004 at 12:29:36 am'! "Change Set: miscTranslationFixes Date: 1 August 2004 Author: Yoshiki Ohshima Misc. changes."! Object subclass: #TranslatedReceiverFinder instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Multilingual-Translation'! !BorderedMorph methodsFor: 'menu' stamp: 'yo 7/31/2004 17:41'! addBorderStyleMenuItems: aMenu hand: aHandMorph "Add border-style menu items" | subMenu | subMenu _ MenuMorph new defaultTarget: self. subMenu addTitle: 'border' translated. subMenu addStayUpItemSpecial. subMenu addList: {{'border color...' translated. #changeBorderColor:}. {'border width...' translated. #changeBorderWidth:}}. subMenu addLine. BorderStyle borderStyleChoices do: [:sym | (self borderStyleForSymbol: sym) ifNotNil: [subMenu add: sym translated target: self selector: #setBorderStyle: argument: sym]]. aMenu add: 'border style...' translated subMenu: subMenu ! ! !MessageSet methodsFor: 'private' stamp: 'yo 7/30/2004 16:36'! openAsMorphNamed: labelString inWorld: aWorld "Open the receiver in a morphic window in the given world" (self inMorphicWindowLabeled: labelString) openInWorld: aWorld. self messageListIndex: 1. ! ! !NaturalLanguageTranslator methodsFor: 'translation' stamp: 'yo 7/30/2004 13:03'! phrase: phraseString translation: translationString self generics at: phraseString put: translationString asString. self changed: #translations. self changed: #untranslated.! ! !NaturalLanguageTranslator methodsFor: 'private store-retrieve' stamp: 'yo 7/30/2004 13:00'! loadFromFileNamed: fileNameString "Load translations from an external file" | stream | [stream := FileStream readOnlyFileNamed: fileNameString. self loadFromStream: stream] ensure: [stream close]. self changed: #translations. self changed: #untranslated. ! ! !ParagraphEditor methodsFor: 'accessing-selection' stamp: 'yo 7/31/2004 16:27'! selection "Answer the text in the paragraph that is currently selected." | t | t _ paragraph text copyFrom: self startIndex to: self stopIndex - 1. t string isOctetString ifTrue: [t asOctetStringText]. ^ t. ! ! !SystemNavigation methodsFor: 'browse' stamp: 'yo 7/31/2004 18:40'! browseMethodsWithLiteral: aString "Launch a browser on all methods that contain string literals with aString as a substring. Make the search case-sensitive or insensitive as dictated by the caseSensitive boolean parameter" self browseAllSelect: [:method | method hasLiteralSuchThat: [:lit | (lit isString and: [lit isSymbol not]) and: [lit = aString]]] name: 'Methods with string ', aString printString autoSelect: aString. ! ! !TranslatedReceiverFinder methodsFor: 'as yet unclassified' stamp: 'yo 7/29/2004 18:16'! searchBlockNode: aBlockNode addTo: aCollection aBlockNode statements do: [:e | (e isMemberOf: MessageNode) ifTrue: [self searchMessageNode: e addTo: aCollection]. ]. ! ! !TranslatedReceiverFinder methodsFor: 'as yet unclassified' stamp: 'yo 7/29/2004 18:23'! searchMessageNode: aMessageNode addTo: aCollection ((aMessageNode receiver isMemberOf: LiteralNode) and: [(aMessageNode selector isMemberOf: SelectorNode) and: [aMessageNode selector key = #translated]]) ifTrue: [ aCollection add: aMessageNode receiver key. ]. (aMessageNode receiver isMemberOf: BlockNode) ifTrue: [self searchBlockNode: aMessageNode receiver addTo: aCollection]. (aMessageNode receiver isMemberOf: MessageNode) ifTrue: [self searchMessageNode: aMessageNode receiver addTo: aCollection]. aMessageNode arguments do: [:a | (a isMemberOf: BlockNode) ifTrue: [self searchBlockNode: a addTo: aCollection]. (a isMemberOf: MessageNode) ifTrue: [self searchMessageNode: a addTo: aCollection]. ]. ! ! !TranslatedReceiverFinder methodsFor: 'as yet unclassified' stamp: 'yo 7/29/2004 18:22'! searchMethodNode: aMethodNode addTo: aCollection (aMethodNode block isMemberOf: BlockNode) ifTrue: [self searchBlockNode: aMethodNode block addTo: aCollection]. (aMethodNode block isMemberOf: MessageNode) ifTrue: [self searchMessageNode: aMethodNode block addTo: aCollection]. ! ! !TranslatedReceiverFinder methodsFor: 'as yet unclassified' stamp: 'yo 7/29/2004 18:22'! senders | m o | m _ SystemNavigation default allCallsOn: #translated. m _ m collect: [:e | e classIsMeta ifTrue: [ (Smalltalk at: e classSymbol) class decompile: e methodSymbol. ] ifFalse: [ (Smalltalk at: e classSymbol) decompile: e methodSymbol. ] ]. o _ SortedCollection new. m do: [:e | self searchMethodNode: e addTo: o]. ^ o. ! ! !TranslatedReceiverFinder class methodsFor: 'as yet unclassified' stamp: 'yo 7/29/2004 20:31'! makeJapaneseTranslationFile | t n | NaturalLanguageTranslator allKnownPhrases removeAll. t _ TranslatedReceiverFinder new senders. n _ NaturalLanguageTranslator localeID: (LocaleID isoLanguage: 'ja'). t do: [:w | NaturalLanguageTranslator registerPhrase: w. self at: w ifPresent: [:k | n phrase: w translation: k]. ]. n saveToFileNamed: 'ja.translation'. ! ! TranslatedReceiverFinder removeSelector: #searchBlockNode:! TranslatedReceiverFinder removeSelector: #searchMessageNode:! 'From Squeak3.8alpha of ''17 July 2004'' [latest update: #5976] on 31 July 2004 at 6:11:25 pm'! "Change Set: linefeeds Date: 31 July 2004 Author: Yoshiki Ohshima Make 'remove linefeeds' work."! !FileList2 methodsFor: 'own services' stamp: 'yo 7/31/2004 18:08'! removeLinefeeds "Remove any line feeds by converting to CRs instead. This is a temporary implementation for 3.6 only... should be removed during 3.7alpha." | fileContents | fileContents _ ((FileStream readOnlyFileNamed: self fullName) wantsLineEndConversion: true) contentsOfEntireFile. (FileStream newFileNamed: self fullName) nextPutAll: fileContents; close.! ! !FileStream class methodsFor: 'file reader services' stamp: 'yo 7/31/2004 18:04'! removeLineFeeds: fullName | fileContents | fileContents _ ((FileStream readOnlyFileNamed: fullName) wantsLineEndConversion: true) contentsOfEntireFile. (FileStream newFileNamed: fullName) nextPutAll: fileContents; close.! ! !MultiByteFileStream methodsFor: 'public' stamp: 'yo 7/31/2004 18:03'! next: anInteger | multiString | self isBinary ifTrue: [^ super next: anInteger]. multiString _ String new: anInteger. 1 to: anInteger do: [:index | | character | (character _ self next) ifNotNil: [ multiString at: index put: character ] ifNil: [ multiString _ multiString copyFrom: 1 to: index - 1. self doConversion ifFalse: [ ^ multiString ]. ^ self next: anInteger innerFor: multiString. ] ]. self doConversion ifFalse: [ ^ multiString ]. multiString _ self next: anInteger innerFor: multiString. (multiString size = anInteger or: [self atEnd]) ifTrue: [ ^ multiString]. ^ multiString, (self next: anInteger - multiString size). ! ! 'From Squeak3.8alpha of ''17 July 2004'' [latest update: #5976] on 30 July 2004 at 6:59:24 am'! !MultiByteBinaryOrTextStream methodsFor: 'as yet unclassified' stamp: 'yo 7/30/2004 06:59'! contents | ret state | state _ converter saveStateOf: self. ret _ self upToEnd. converter restoreStateOf: self with: state. ^ ret. ! ! !AbstractString methodsFor: 'converting' stamp: 'yo 8/2/2004 17:31'! encodeForHTTP "change dangerous characters to their %XX form, for use in HTTP transactions" | encodedStream | encodedStream _ WriteStream on: (String new). self do: [ :c | c isSafeForHTTP ifTrue: [ encodedStream nextPut: c ] ifFalse: [ encodedStream nextPut: $%. encodedStream nextPut: (c asciiValue // 16) asHexDigit. encodedStream nextPut: (c asciiValue \\ 16) asHexDigit. ] ]. ^encodedStream contents. ! !