#FEATURE by exept
authorClaus Gittinger <cg@exept.de>
Thu, 14 Nov 2019 21:44:16 +0100
changeset 3820 2c48933f35cb
parent 3819 a2f591cb8405
child 3821 798167a7637b
#FEATURE by exept class: ShowMeHowItWorks class definition added: #pronounce:as: #translate: removed: #possiblyTranslate: comment/format in: #showing:saying:do: changed: #doStream:from: class: ShowMeHowItWorks class added: #example2 comment/format in: #example
ShowMeHowItWorks.st
--- a/ShowMeHowItWorks.st	Thu Nov 14 12:22:17 2019 +0100
+++ b/ShowMeHowItWorks.st	Thu Nov 14 21:44:16 2019 +0100
@@ -8,7 +8,7 @@
 	instanceVariableNames:'application opStream streamStack lastComponentName lastComponent
 		lastResult voice translate language verifying
 		closeApplicationWhenFinished defaultComponentWaitTime ui
-		theShowFile defaultElementTimeout applicationStack'
+		theShowFile defaultElementTimeout applicationStack pronunciations'
 	classVariableNames:'IntroShownCount DebugMode StartLabel'
 	poolDictionaries:''
 	category:'Interface-Help'
@@ -57,7 +57,25 @@
         (showing: 'Enter a value (or expression) into "receiver" field' do:(
             enter: '100'
         ))
-
+    )
+!
+
+example2
+    ShowMeHowItWorks do:#(
+        language: 'de'
+        (pronounce:'feature' as:'fiedscher')
+        (pronounce:'suite' as:'swied')
+        (pronounce:'expecco' as:'expecko')
+        (pronounce:'read me' as:'ried mie')
+        (pronounce:'python' as:'paiton')
+        (pronounce:'jenkins' as:'dschengkins')
+        show:'jenkins'
+        show:'dies ist ein neues feature'
+        show:'suite'
+        show:'expecco'
+        show:'read me'
+        show:'python'
+        show:'node'
     )
 !
 
@@ -329,6 +347,15 @@
     application := applicationStack removeLast.
 !
 
+pronounce:word as:pronunciation
+    <action>
+
+    pronunciations isNil ifTrue:[
+        pronunciations := OrderedDictionary new.
+    ].
+    pronunciations at:word put:pronunciation
+!
+
 pushApplication:newApplicationOrName
     <action>
 
@@ -493,6 +520,14 @@
                 |sentence|
                 sentence := (sentenceOrNil ? xLatedMessage) copy withCRs replaceAny:c'\t' with:(Character space).
                 sentence := sentence copy withCRs replaceAny:c'\n\r' with:(Character space).
+                sentence := sentence asLowercase.
+                pronunciations notNil ifTrue:[
+                    pronunciations keysAndValuesDo:[:word :pronounced |
+                        (sentence includesString:word) ifTrue:[
+                            sentence := sentence copyReplaceString:word withString:pronounced
+                        ]
+                    ]
+                ].
                 self tell:sentence.
                 talkDone signal
             ] fork.
@@ -2414,13 +2449,13 @@
 
             Display shiftDown ifTrue:[
                 (IntroShownCount ? 0) > 3 ifFalse:[
-                    self tell:(self class classResources string:'You pressed the SHIFT key.').
+                    self tell:(self translate:'You pressed the SHIFT key.').
                 ].    
-                self tell:(self class classResources string:'Do you want to stop the show?').
+                self tell:(self translate:'Do you want to stop the show?').
                 (Dialog confirm:(resources stringWithCRs:'Stop the demonstration?'))
                 ifTrue:[
-                    self tell:(self possiblyTranslate:'OK,').
-                    self tell:(self class classResources string:(self randomThankYou)).
+                    self tell:(self translate:'OK,').
+                    self tell:(self translate:(self randomThankYou)).
                     ^ AbortOperationRequest raise
                 ].    
             ].    
@@ -2462,14 +2497,8 @@
     "Modified: / 23-07-2019 / 11:48:45 / Claus Gittinger"
 !
 
-possiblyTranslate:aString
-    |xLatedMessage|
-
-    translate ifTrue:[
-        xLatedMessage := self class classResources stringWithCRs:aString.
-        ^ xLatedMessage
-    ].
-    ^ aString
+translate:aString
+    ^ self class classResources stringWithCRs:aString.
 ! !
 
 !ShowMeHowItWorks::ItemInView class methodsFor:'documentation'!