Tools__InternationalLanguageTranslationEditor.st
changeset 2163 641467b2f522
parent 2053 8440fcd83b7b
child 2323 9b257cbd0ea9
equal deleted inserted replaced
2162:37159708ecef 2163:641467b2f522
    13 		languageTextModifiedHolder languageTextAcceptHolder
    13 		languageTextModifiedHolder languageTextAcceptHolder
    14 		inSingleFileMode lastExtractedProject lastLanguage
    14 		inSingleFileMode lastExtractedProject lastLanguage
    15 		lastSelectedKey autoAcceptHolder languageEditor
    15 		lastSelectedKey autoAcceptHolder languageEditor
    16 		selectedColIndexHolder exampleLanguageSelectionHolder
    16 		selectedColIndexHolder exampleLanguageSelectionHolder
    17 		exampleLanguageTextHolder pastePreviousTranslationEnableHolder
    17 		exampleLanguageTextHolder pastePreviousTranslationEnableHolder
    18 		searchForSimilarTranslationEnableHolder alwaysWriteUTF8Holder'
    18 		searchForSimilarTranslationEnableHolder alwaysWriteUTF8Holder
       
    19 		lastNameSpace'
    19 	classVariableNames:'LastExtractedClass LastExtractedApplicationClass
    20 	classVariableNames:'LastExtractedClass LastExtractedApplicationClass
    20 		LastExtractedProject'
    21 		LastExtractedProject'
    21 	poolDictionaries:''
    22 	poolDictionaries:''
    22 	category:'Interface-UIPainter'
    23 	category:'Interface-UIPainter'
    23 !
    24 !
   112         window: 
   113         window: 
   113        (WindowSpec
   114        (WindowSpec
   114           label: 'InternationalLanguageTranslationEditor'
   115           label: 'InternationalLanguageTranslationEditor'
   115           name: 'InternationalLanguageTranslationEditor'
   116           name: 'InternationalLanguageTranslationEditor'
   116           min: (Point 10 10)
   117           min: (Point 10 10)
   117           max: (Point 1024 768)
       
   118           bounds: (Rectangle 0 0 778 614)
   118           bounds: (Rectangle 0 0 778 614)
   119           menu: mainMenu
   119           menu: mainMenu
   120         )
   120         )
   121         component: 
   121         component: 
   122        (SpecCollection
   122        (SpecCollection
   134              (SpecCollection
   134              (SpecCollection
   135                 collection: (
   135                 collection: (
   136                  (DataSetSpec
   136                  (DataSetSpec
   137                     name: 'KeyStringAndLanguageSelectionTable'
   137                     name: 'KeyStringAndLanguageSelectionTable'
   138                     model: selectedKeyRow
   138                     model: selectedKeyRow
       
   139                     menu: keyStringAndLanguageSelectionTableMenu
   139                     hasHorizontalScrollBar: true
   140                     hasHorizontalScrollBar: true
   140                     hasVerticalScrollBar: true
   141                     hasVerticalScrollBar: true
   141                     dataList: keyStringAndLanguageSelectionTable
   142                     dataList: keyStringAndLanguageSelectionTable
   142                     columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
   143                     columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
   143                     beDependentOfRows: true
   144                     beDependentOfRows: true
   261       )
   262       )
   262 ! !
   263 ! !
   263 
   264 
   264 !InternationalLanguageTranslationEditor class methodsFor:'menu specs'!
   265 !InternationalLanguageTranslationEditor class methodsFor:'menu specs'!
   265 
   266 
       
   267 keyStringAndLanguageSelectionTableMenu
       
   268     "This resource specification was automatically generated
       
   269      by the MenuEditor of ST/X."
       
   270 
       
   271     "Do not manually edit this!! If it is corrupted,
       
   272      the MenuEditor may not be able to read the specification."
       
   273 
       
   274     "
       
   275      MenuEditor new openOnClass:Tools::InternationalLanguageTranslationEditor andSelector:#keyStringAndLanguageSelectionTableMenu
       
   276      (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor keyStringAndLanguageSelectionTableMenu)) startUp
       
   277     "
       
   278 
       
   279     <resource: #menu>
       
   280 
       
   281     ^ 
       
   282      #(Menu
       
   283         (
       
   284          (MenuItem
       
   285             label: 'Current NameSpace:'
       
   286             itemValue: changeLastNameSpace
       
   287             translateLabel: true
       
   288           )
       
   289          (MenuItem
       
   290             label: 'Search String in Current NameSpace:'
       
   291             itemValue: searchStringInLastNameSpace
       
   292             translateLabel: true
       
   293           )
       
   294          )
       
   295         nil
       
   296         nil
       
   297       )
       
   298 !
       
   299 
   266 mainMenu
   300 mainMenu
   267     "This resource specification was automatically generated
   301     "This resource specification was automatically generated
   268      by the MenuEditor of ST/X."
   302      by the MenuEditor of ST/X."
   269 
   303 
   270     "Do not manually edit this!! If it is corrupted,
   304     "Do not manually edit this!! If it is corrupted,
   313                   translateLabel: true
   347                   translateLabel: true
   314                 )
   348                 )
   315                (MenuItem
   349                (MenuItem
   316                   label: 'Save Resource File As...'
   350                   label: 'Save Resource File As...'
   317                   itemValue: menuSaveAs
   351                   itemValue: menuSaveAs
       
   352                   translateLabel: true
       
   353                 )
       
   354                (MenuItem
       
   355                   label: '-'
       
   356                 )
       
   357                (MenuItem
       
   358                   label: 'Current NameSpace:'
       
   359                   itemValue: changeLastNameSpace
   318                   translateLabel: true
   360                   translateLabel: true
   319                 )
   361                 )
   320                (MenuItem
   362                (MenuItem
   321                   label: '-'
   363                   label: '-'
   322                 )
   364                 )
   400                   translateLabel: true
   442                   translateLabel: true
   401                 )
   443                 )
   402                (MenuItem
   444                (MenuItem
   403                   label: 'Extract from Project...'
   445                   label: 'Extract from Project...'
   404                   itemValue: extractTranslationsFromProject
   446                   itemValue: extractTranslationsFromProject
       
   447                   translateLabel: true
       
   448                 )
       
   449                (MenuItem
       
   450                   label: 'Extract from NameSpace...'
       
   451                   itemValue: extractTranslationsFromNameSpace
   405                   translateLabel: true
   452                   translateLabel: true
   406                 )
   453                 )
   407                (MenuItem
   454                (MenuItem
   408                   label: '-'
   455                   label: '-'
   409                 )
   456                 )
   610 
   657 
   611 !InternationalLanguageTranslationEditor methodsFor:'accessing'!
   658 !InternationalLanguageTranslationEditor methodsFor:'accessing'!
   612 
   659 
   613 newLanguageText
   660 newLanguageText
   614 "/   languageEditor accept
   661 "/   languageEditor accept
   615 ^self languageTextHolder value isNil 
   662     ^self languageTextHolder value isNil 
   616     ifTrue:['']
   663         ifTrue:['']
   617     ifFalse:[self languageTextHolder value asCollectionOfLines first.]
   664         ifFalse:[self languageTextHolder value asCollectionOfLines first.]
   618 !
   665 !
   619 
   666 
   620 selectedKey  
   667 selectedKey  
   621    "Returns the current selected key if there is one row seleted. Otherwise, returns nil"
   668    "Returns the current selected key if there is one row seleted. Otherwise, returns nil"
   622      |rowSelectionIndex |
   669      |rowSelectionIndex |
   623 
   670 
       
   671     keyStringsToLanguageMappings isNil ifTrue:[^nil].
       
   672     self selectedKeyRow value isNil ifTrue:[^nil].
   624     rowSelectionIndex := self selectedKeyRow value.
   673     rowSelectionIndex := self selectedKeyRow value.
   625     rowSelectionIndex == 0 ifTrue:[^nil].
   674     rowSelectionIndex == 0 ifTrue:[^nil].
   626     ^ keyStringsToLanguageMappings keyAt:rowSelectionIndex.
   675     ^ keyStringsToLanguageMappings keyAt:rowSelectionIndex.
   627 ! !
   676 ! !
   628 
   677 
   629 !InternationalLanguageTranslationEditor methodsFor:'additionalFuncionalities'!
   678 !InternationalLanguageTranslationEditor methodsFor:'additionalFuncionalities'!
   630 
   679 
   631 searchForSimilarTranslation
   680 searchForSimilarTranslation
   632 "Looks for a quite similar translation for the key and display a dialog with available options"
   681     "Looks for a quite similar translation for the key and display a dialog with available options"
   633 |similarTranslationsAssociations selectedTranslation|
   682     |similarTranslationsAssociations selectedTranslation|
   634 
   683 
   635 self shouldSearchForSimilarTranslation ifFalse:[^self]. 
   684     self shouldSearchForSimilarTranslation ifFalse:[^self]. 
   636 
   685 
   637 similarTranslationsAssociations := keyStringsToLanguageMappings searchForSimilarTranslation: self selectedKey in: self currentLanguage.
   686     similarTranslationsAssociations := keyStringsToLanguageMappings searchForSimilarTranslation: self selectedKey in: self currentLanguage.
   638 similarTranslationsAssociations isEmpty ifTrue:[^self].    
   687     similarTranslationsAssociations isEmpty ifTrue:[^self].    
   639 
   688 
   640 similarTranslationsAssociations := similarTranslationsAssociations associations inject: OrderedCollection new into:[:collection :association |
   689     similarTranslationsAssociations := similarTranslationsAssociations associations inject: OrderedCollection new into:[:collection :association |
   641     collection detect:[:selectedAssociation |
   690         collection detect:[:selectedAssociation |
   642         selectedAssociation value sameAs: association value] ifNone:[collection add: association].
   691             selectedAssociation value sameAs: association value] ifNone:[collection add: association].
   643     collection].
   692         collection].
   644 selectedTranslation := Dialog 
   693     selectedTranslation := Dialog 
   645     choose:'Choose one if you consider itīs usefull to translate: 
   694         choose:'Choose one if you consider itīs usefull to translate: 
   646 ', 
   695     ', 
   647     '<', self selectedKey, '>  ',
   696         '<', self selectedKey, '>  ', (self currentExampleLanguageText ifNil:[''])
   648     self currentExampleLanguageText
   697         fromList: (similarTranslationsAssociations collect:[:each |  '<', each key, '>  ', each value])
   649     fromList: (similarTranslationsAssociations collect:[:each |  '<', each key, '>  ', each value])
   698         values: (similarTranslationsAssociations collect:[:each | each value])
   650     values: (similarTranslationsAssociations collect:[:each | each value])
   699         lines:10
   651     lines:10
   700         cancel: nil.      
   652     cancel: nil.      
   701 
   653 
   702     selectedTranslation notNil ifTrue:[self languageTextHolderValue: selectedTranslation]. 
   654 selectedTranslation notNil ifTrue:[self languageTextHolderValue: selectedTranslation]. 
       
   655 ! !
   703 ! !
   656 
   704 
   657 !InternationalLanguageTranslationEditor methodsFor:'aspects'!
   705 !InternationalLanguageTranslationEditor methodsFor:'aspects'!
   658 
   706 
   659 alwaysWriteUTF8Holder
   707 alwaysWriteUTF8Holder
   811 
   859 
   812 !InternationalLanguageTranslationEditor methodsFor:'change & update'!
   860 !InternationalLanguageTranslationEditor methodsFor:'change & update'!
   813 
   861 
   814 languageTextHolderValue: aString
   862 languageTextHolderValue: aString
   815 
   863 
   816 self languageTextHolder value: aString.
   864     self languageTextHolder value: aString.
   817 self languageTextModifiedHolder value:true.
   865     self languageTextModifiedHolder value:true.
   818 !
   866 !
   819 
   867 
   820 update:something with:aParameter from:changedObject
   868 update:something with:aParameter from:changedObject
   821     changedObject == shownLanguages ifTrue:[
   869     changedObject == shownLanguages ifTrue:[
   822          self shownLanguagesChanged.
   870          self shownLanguagesChanged.
   836     ]. 
   884     ]. 
   837 !
   885 !
   838 
   886 
   839 updateCopyPreviousTranslationButtonEnabled
   887 updateCopyPreviousTranslationButtonEnabled
   840 
   888 
   841  self pastePreviousTranslationEnableHolder value: self shouldCopyPreviousTranslationButtonBeEnabled
   889      self pastePreviousTranslationEnableHolder value: self shouldCopyPreviousTranslationButtonBeEnabled
   842 !
   890 !
   843 
   891 
   844 updateExampleLanguageText
   892 updateExampleLanguageText
   845 
   893 
   846     self selectedKeyRow value isNil ifTrue:[^ self].
   894     self selectedKeyRow value isNil ifTrue:[^ self].
   873     ].
   921     ].
   874 !
   922 !
   875 
   923 
   876 updateOriginalTextModification
   924 updateOriginalTextModification
   877 
   925 
   878 |answer|
   926     |answer|
   879 
   927 
   880     self originalTextModifiedHolder value ifTrue:[ 
   928         self originalTextModifiedHolder value ifTrue:[ 
   881         answer := OptionBox 
   929             answer := OptionBox 
   882                       request:'Accept changed original text (key) ?' 
   930                           request:'Accept changed original text (key) ?' 
   883                       label:'Original text (key) changed'
   931                           label:'Original text (key) changed'
   884                       image:(WarningBox iconBitmap)
   932                           image:(WarningBox iconBitmap)
   885                       buttonLabels:#('Cancel' 'Accept' 'Accept As New')
   933                           buttonLabels:#('Cancel' 'Accept' 'Accept As New')
   886                       values:#(nil #accept #acceptAsNew)
   934                           values:#(nil #accept #acceptAsNew)
   887                       default:#acceptAsNew.
   935                           default:#acceptAsNew.
   888 
   936 
   889         answer isNil ifTrue:[^ self originalTextModifiedHolder value:false. ].
   937             answer isNil ifTrue:[^ self originalTextModifiedHolder value:false. ].
   890         answer == #accept ifTrue:[
   938             answer == #accept ifTrue:[
   891 self halt.        ].
   939     self halt.        ].
   892         answer == #acceptAsNew ifTrue:[
   940             answer == #acceptAsNew ifTrue:[
   893 self halt.        ].
   941     self halt.        ].
   894     ].
   942         ].
   895 ! !
   943 ! !
   896 
   944 
   897 !InternationalLanguageTranslationEditor methodsFor:'dialogs'!
   945 !InternationalLanguageTranslationEditor methodsFor:'dialogs'!
   898 
   946 
   899 requestEncoderDialog
   947 requestEncoderDialog
  1010 addTranslation
  1058 addTranslation
  1011     |key index|
  1059     |key index|
  1012 
  1060 
  1013     key := Dialog request:'New Key:'.
  1061     key := Dialog request:'New Key:'.
  1014     key isEmpty ifTrue:[^self].
  1062     key isEmpty ifTrue:[^self].
  1015     (keyStringsToLanguageMappings includesKey:key) ifFalse:[
  1063     (self includesKey:key) ifFalse:[
  1016         keyStringsToLanguageMappings addKey:key.
  1064         keyStringsToLanguageMappings addKey:key.
  1017         modified := true.
  1065         modified := true.
  1018     ].
  1066     ].
  1019    index := keyStringsToLanguageMappings indexOfKey:key.
  1067    index := keyStringsToLanguageMappings indexOfKey:key.
  1020    self selectedKeyRow value:index
  1068    self selectedKeyRow value:index
       
  1069 !
       
  1070 
       
  1071 changeLastNameSpace
       
  1072 
       
  1073     |nameSpace defaultNameSpace|
       
  1074 
       
  1075     lastNameSpace notNil ifTrue:[defaultNameSpace := lastNameSpace name].
       
  1076     nameSpace := Dialog requestNameSpace:'NameSpace:' title:'Search String in Name Space:' initialAnswer:defaultNameSpace.
       
  1077     nameSpace isNil ifTrue:[^self].
       
  1078     nameSpace := Smalltalk at:nameSpace asSymbol.
       
  1079     nameSpace isNil ifTrue:[
       
  1080         ^Dialog information:(resources string:'No such nameSpace exists.?') 
       
  1081     ].
       
  1082     lastNameSpace := nameSpace.
  1021 !
  1083 !
  1022 
  1084 
  1023 extractTranslationsFromClass
  1085 extractTranslationsFromClass
  1024     |aClass newTranslations|
  1086     |aClass newTranslations|
  1025 
  1087 
  1030     aClass isNil ifTrue:[^ self ].
  1092     aClass isNil ifTrue:[^ self ].
  1031 
  1093 
  1032     lastExtractedClass := LastExtractedClass := aClass.
  1094     lastExtractedClass := LastExtractedClass := aClass.
  1033 
  1095 
  1034     newTranslations := self extractTranslationsFromClass:aClass.
  1096     newTranslations := self extractTranslationsFromClass:aClass.
       
  1097     self addAllTranslations:newTranslations.
       
  1098 !
       
  1099 
       
  1100 extractTranslationsFromNameSpace
       
  1101 
       
  1102     |newTranslations|
       
  1103 
       
  1104     self changeLastNameSpace.
       
  1105     lastNameSpace isNil ifTrue:[^self.].
       
  1106     newTranslations := OrderedCollection new.
       
  1107     lastNameSpace allClassesDo:[:eachClass |
       
  1108         newTranslations addAll:( self extractTranslationsFromClass:eachClass theNonMetaclass).
       
  1109     ].
  1035     self addAllTranslations:newTranslations.
  1110     self addAllTranslations:newTranslations.
  1036 !
  1111 !
  1037 
  1112 
  1038 extractTranslationsFromProject
  1113 extractTranslationsFromProject
  1039     |box projectID newTranslations|
  1114     |box projectID newTranslations|
  1065     ].
  1140     ].
  1066 
  1141 
  1067     self addAllTranslations:newTranslations.
  1142     self addAllTranslations:newTranslations.
  1068 !
  1143 !
  1069 
  1144 
       
  1145 inspectCanvasMissingStrings
       
  1146 
       
  1147     |spec nameSpace missingStrings|
       
  1148 
       
  1149     missingStrings := OrderedCollection new.
       
  1150     nameSpace := Dialog requestNameSpace:'NameSpace:' title:'Specify NameSpace to look for missing strings' initialAnswer:nil.
       
  1151     nameSpace := Smalltalk at:nameSpace asSymbol.
       
  1152     nameSpace isNil ifTrue:[
       
  1153         ^Dialog information:(resources string:'No such nameSpace exists.?') 
       
  1154     ].
       
  1155 
       
  1156     nameSpace allClassesDo:[:cls |
       
  1157         cls theMetaclass methodsDo:[:m |
       
  1158             m hasResource ifTrue:[
       
  1159                 (m resources includesKey:#canvas) ifTrue:[
       
  1160                     spec := (cls perform:m selector) decodeAsLiteralArray.
       
  1161                     spec do:[:eachComponent |
       
  1162                         eachComponent translationKeysDo:[:k | 
       
  1163                             (self includesKey: k) ifFalse:[
       
  1164                                 missingStrings add: k. 
       
  1165                                 Transcript showCR: k storeString, '                         ', m printString]]
       
  1166                     ]
       
  1167                 ]
       
  1168             ]
       
  1169         ]
       
  1170     ].
       
  1171     missingStrings asSet inspect
       
  1172 !
       
  1173 
  1070 menuNew
  1174 menuNew
  1071     modified ifTrue:[
  1175     modified ifTrue:[
  1072         (Dialog 
  1176         (Dialog 
  1073             confirm:(resources stringWithCRs:'Modified translations have not been changed.\\Create new translations set anyway ?')
  1177             confirm:(resources stringWithCRs:'Modified translations have not been changed.\\Create new translations set anyway ?')
  1074             default:false) ifFalse:[^ self].
  1178             default:false) ifFalse:[^ self].
  1083 !
  1187 !
  1084 
  1188 
  1085 menuOpen
  1189 menuOpen
  1086     |aFilename|
  1190     |aFilename|
  1087 
  1191 
  1088     aFilename := self requestFilename.
  1192     self withWaitCursorDo:[
  1089     aFilename isNil ifTrue:[^ self ].
  1193         aFilename := self requestFilename.
  1090     self readResourceFile:aFilename
  1194         aFilename isNil ifTrue:[^ self ].
       
  1195         self readResourceFile:aFilename.
       
  1196     ]
  1091 !
  1197 !
  1092 
  1198 
  1093 menuSave
  1199 menuSave
  1094 "Saves the language selected in the fileName from where the language resource was obtained."
  1200 "Saves the language selected in the fileName from where the language resource was obtained."
  1095     |lang|
  1201     |lang|
  1159 
  1265 
  1160 removeTranslation
  1266 removeTranslation
  1161     |rowSelectionIndex selectedKey|
  1267     |rowSelectionIndex selectedKey|
  1162 
  1268 
  1163     rowSelectionIndex := self selectedKeyRow value.
  1269     rowSelectionIndex := self selectedKeyRow value.
       
  1270     rowSelectionIndex isNil ifTrue:[^self].
  1164     rowSelectionIndex ~~ 0 ifTrue:[
  1271     rowSelectionIndex ~~ 0 ifTrue:[
  1165         selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex ifAbsent:nil.
  1272         selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex ifAbsent:nil.
       
  1273         selectedKey isNil ifTrue:[^self].
  1166         (Dialog confirm:(resources string:'Really remove key %1' with:selectedKey)) ifTrue:[
  1274         (Dialog confirm:(resources string:'Really remove key %1' with:selectedKey)) ifTrue:[
  1167             keyStringsToLanguageMappings removeKey:selectedKey.
  1275             keyStringsToLanguageMappings removeKey:selectedKey.
  1168         ].
  1276         ].
  1169     ].
  1277     ].
  1170 !
  1278 !
  1224             app closeRequest.
  1332             app closeRequest.
  1225             self stopApplicationIconVisibleHolder value:false.
  1333             self stopApplicationIconVisibleHolder value:false.
  1226             monitoredApplication := nil.
  1334             monitoredApplication := nil.
  1227         ].
  1335         ].
  1228     ] fork.
  1336     ] fork.
       
  1337 !
       
  1338 
       
  1339 searchStringInLastNameSpace
       
  1340 
       
  1341     |selectedKey browser|
       
  1342 
       
  1343     selectedKey := self selectedKey.
       
  1344     selectedKey isNil ifTrue:[^Dialog information: 'No selected key'].
       
  1345     browser := NewSystemBrowser new "open".
       
  1346     browser allButOpen.
       
  1347     browser lastSearchPatterns first = selectedKey ifFalse:[
       
  1348         browser lastSearchPatterns addFirst: selectedKey
       
  1349     ].
       
  1350     lastNameSpace isNil ifTrue:[
       
  1351         self changeLastNameSpace.
       
  1352     ].
       
  1353     lastNameSpace notNil ifTrue:[
       
  1354 "/        browser navigationState selectedClasses value: lastNameSpace allClasses.
       
  1355         browser navigationState nameSpaceFilter value: (OrderedCollection with:lastNameSpace name).
       
  1356         browser navigationState selectedNamespaces value: (OrderedCollection with:lastNameSpace name).
       
  1357     ].
       
  1358     self withWaitCursorDo:[
       
  1359         browser browseMenuMethodsWithString
       
  1360     ].
  1229 ! !
  1361 ! !
  1230 
  1362 
  1231 !InternationalLanguageTranslationEditor methodsFor:'menus dynamic'!
  1363 !InternationalLanguageTranslationEditor methodsFor:'menus dynamic'!
  1232 
  1364 
  1233 disableLanguageDisplayFor:lang
  1365 disableLanguageDisplayFor:lang
  1534   ^self languageTextFromSelectedKeyFor: self exampleLanguageSelectionHolder value
  1666   ^self languageTextFromSelectedKeyFor: self exampleLanguageSelectionHolder value
  1535 !
  1667 !
  1536 
  1668 
  1537 currentLanguage
  1669 currentLanguage
  1538 
  1670 
  1539 |colSelectionIndex |
  1671     |colSelectionIndex |
  1540 
  1672 
  1541     colSelectionIndex := dataSetView selectedColIndex.
  1673     colSelectionIndex := dataSetView selectedColIndex.
  1542     ^colSelectionIndex > 1 ifTrue:[ shownLanguages at:colSelectionIndex-1 ] ifFalse:nil.
  1674     ^colSelectionIndex > 1 ifTrue:[ shownLanguages at:colSelectionIndex-1 ] ifFalse:nil.
  1543 !
  1675 !
  1544 
  1676 
  1545 exampleLanguageByDefault
  1677 exampleLanguageByDefault
  1546 
  1678 
  1547 ^self shownLanguages isEmpty
  1679     ^self shownLanguages isEmpty
  1548     ifTrue:[nil]
  1680         ifTrue:[nil]
  1549     ifFalse:[self shownLanguages first]
  1681         ifFalse:[self shownLanguages first]
  1550 !
  1682 !
  1551 
  1683 
  1552 hasFirstRowSelection
  1684 hasFirstRowSelection
  1553     self selectedKeyRow isNil ifTrue:[^false].
  1685     self selectedKeyRow isNil ifTrue:[^false].
  1554     ^ self selectedKeyRow value > 1
  1686     ^ self selectedKeyRow value > 1
  1561 
  1693 
  1562 hasUnsavedChanges
  1694 hasUnsavedChanges
  1563     ^ modified
  1695     ^ modified
  1564 !
  1696 !
  1565 
  1697 
       
  1698 includesKey: aKey
       
  1699     keyStringsToLanguageMappings isNil ifTrue:[^false].
       
  1700     ^keyStringsToLanguageMappings includesKey:aKey
       
  1701 !
       
  1702 
  1566 isSearchForSimilarTranslationEnabled
  1703 isSearchForSimilarTranslationEnabled
  1567 
  1704 
  1568 ^self searchForSimilarTranslationEnableHolder value
  1705     ^self searchForSimilarTranslationEnableHolder value
  1569 !
  1706 !
  1570 
  1707 
  1571 languageTextFromKey: aKeyIndex for: language
  1708 languageTextFromKey: aKeyIndex for: language
  1572     "Returns the language text corresponding for the aKeyIndex and the received language"    
  1709     "Returns the language text corresponding for the aKeyIndex and the received language"    
  1573 
  1710 
  1586         and:[self hasFirstRowSelection]
  1723         and:[self hasFirstRowSelection]
  1587 !
  1724 !
  1588 
  1725 
  1589 shouldSearchForSimilarTranslation
  1726 shouldSearchForSimilarTranslation
  1590 
  1727 
  1591 self isSearchForSimilarTranslationEnabled ifFalse:[^false].
  1728     self isSearchForSimilarTranslationEnabled ifFalse:[^false].
  1592 (self languageTextHolder value notNil and:[self languageTextHolder value notEmpty]) ifTrue:[^false].
  1729     (self languageTextHolder value notNil and:[self languageTextHolder value notEmpty]) ifTrue:[^false].
  1593 (self hasLanguageSelection and:[self selectedKeyRow notNil]) ifFalse:[^false].
  1730     (self hasLanguageSelection and:[self selectedKeyRow notNil]) ifFalse:[^false].
  1594 ^true
  1731     ^true
  1595 ! !
  1732 ! !
  1596 
  1733 
  1597 !InternationalLanguageTranslationEditor methodsFor:'read/write resourceFile'!
  1734 !InternationalLanguageTranslationEditor methodsFor:'read/write resourceFile'!
  1598 
  1735 
  1599 encoderAt: lang
  1736 encoderAt: lang
  1600 
  1737 
  1601 self alwaysWriteUTF8Holder value ifTrue:[^CharacterEncoder encoderForUTF8].
  1738     self alwaysWriteUTF8Holder value ifTrue:[^CharacterEncoder encoderForUTF8].
  1602 ^keyStringsToLanguageMappings encoderAt: lang.
  1739     ^keyStringsToLanguageMappings encoderAt: lang.
  1603 !
  1740 !
  1604 
  1741 
  1605 printEditingWarningOn: aStream
  1742 printEditingWarningOn: aStream
  1606 
  1743 
  1607 aStream nextPutAll: ';';
  1744     aStream nextPutAll: ';';
  1608         cr;
  1745             cr;
  1609         nextPutAll: '; WARNING:';
  1746             nextPutAll: '; WARNING:';
  1610         cr;
  1747             cr;
  1611         nextPutAll: '; this file contains national characters';
  1748             nextPutAll: '; this file contains national characters';
  1612         cr;
  1749             cr;
  1613         nextPutAll: '; DONT EDIT this file with an old vi !!';
  1750             nextPutAll: '; DONT EDIT this file with an old vi !!';
  1614         cr;
  1751             cr;
  1615         nextPutAll: ';';
  1752             nextPutAll: ';';
  1616         cr; 
  1753             cr; 
  1617         cr.
  1754             cr.
  1618 !
  1755 !
  1619 
  1756 
  1620 printEncoderFor: lang on: aStream
  1757 printEncoderFor: lang on: aStream
  1621 |characterEncoder encoderString|
  1758     |characterEncoder encoderString|
  1622 
  1759 
  1623 characterEncoder := self encoderAt: lang.
  1760     characterEncoder := self encoderAt: lang.
  1624 encoderString := characterEncoder isNil 
  1761     encoderString := characterEncoder isNil 
  1625     ifTrue:[self requestEncoderStringFor: lang]
  1762         ifTrue:[self requestEncoderStringFor: lang]
  1626     ifFalse:[characterEncoder nameOfEncoding printString].
  1763         ifFalse:[characterEncoder nameOfEncoding printString].
  1627 
  1764 
  1628 aStream nextPutAll: '#encoding';
  1765     aStream nextPutAll: '#encoding';
  1629         space;
  1766             space;
  1630         nextPutAll: encoderString;
  1767             nextPutAll: encoderString;
  1631         cr;
  1768             cr;
  1632         cr.
  1769             cr.
  1633 !
  1770 !
  1634 
  1771 
  1635 printLanguage: lang on: aStream
  1772 printLanguage: lang on: aStream
  1636 
  1773 
  1637 self printEncoderFor: lang on: aStream.
  1774     self printEncoderFor: lang on: aStream.
  1638 self printEditingWarningOn: aStream.
  1775     self printEditingWarningOn: aStream.
  1639 self printLanguageMappingsFor: lang on: aStream.
  1776     self printLanguageMappingsFor: lang on: aStream.
  1640 !
  1777 !
  1641 
  1778 
  1642 printLanguageMappingsFor: lang on: aStream
  1779 printLanguageMappingsFor: lang on: aStream
  1643 
  1780 
  1644 |orderedAssociations maxKeySize characterEncoder|   
  1781     |orderedAssociations maxKeySize characterEncoder|   
  1645 
  1782 
  1646 characterEncoder := self encoderAt: lang.
  1783     characterEncoder := self encoderAt: lang.
  1647 characterEncoder isNil ifTrue:[ characterEncoder := CharacterEncoder::NullEncoder ].
  1784     characterEncoder isNil ifTrue:[ characterEncoder := CharacterEncoder::NullEncoder ].
  1648 orderedAssociations := keyStringsToLanguageMappings orderedLanguageMappingsAssociationsFor: lang. 
  1785     orderedAssociations := keyStringsToLanguageMappings orderedLanguageMappingsAssociationsFor: lang. 
  1649 
  1786 
  1650 maxKeySize := keyStringsToLanguageMappings maxKeySizeForLanguage: lang.     
  1787     maxKeySize := keyStringsToLanguageMappings maxKeySizeForLanguage: lang.     
  1651 
  1788 
  1652 orderedAssociations do:[:association |
  1789     orderedAssociations do:[:association |
  1653     aStream nextPutAll: (association key storeString paddedTo: maxKeySize) ; 
  1790         aStream nextPutAll: (association key storeString paddedTo: maxKeySize) ; 
  1654         nextPutAll: (String new: 10);
  1791             nextPutAll: (String new: 10);
  1655         nextPutAll: (characterEncoder encodeString: association value) storeString;
  1792             nextPutAll: (characterEncoder encodeString: association value) storeString;
  1656         cr.
  1793             cr.
  1657     ].
  1794         ].
  1658 !
  1795 !
  1659 
  1796 
  1660 readResourceFile:aFilename asLanguage:lang
  1797 readResourceFile:aFilename asLanguage:lang
  1661     |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys|
  1798     |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys|
  1662 
  1799 
  1715     self saveResourceFile:aFilename for:lang asSymbol
  1852     self saveResourceFile:aFilename for:lang asSymbol
  1716 !
  1853 !
  1717 
  1854 
  1718 saveResourceFile: aFilename for: lang
  1855 saveResourceFile: aFilename for: lang
  1719 
  1856 
  1720 |aStream |
  1857     |aStream |
  1721 
  1858 
  1722 keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
  1859     keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
  1723 aStream := FileStream newFileNamed: aFilename.  
  1860     aStream := FileStream newFileNamed: aFilename.  
  1724 self printLanguage: lang on: aStream.
  1861     self printLanguage: lang on: aStream.
  1725 aStream flush;
  1862     aStream flush;
  1726         close.
  1863             close.
  1727 DialogBox information: 'The resource file for the language ', lang printString storeString, ' was saved in the file: ', aFilename nameString
  1864     DialogBox information: 'The resource file for the language ', lang printString storeString, ' was saved in the file: ', aFilename nameString
  1728 ! !
  1865 ! !
  1729 
  1866 
  1730 !InternationalLanguageTranslationEditor methodsFor:'specs-dynamic'!
  1867 !InternationalLanguageTranslationEditor methodsFor:'specs-dynamic'!
  1731 
  1868 
  1732 columnInRow:row at:colIndex
  1869 columnInRow:row at:colIndex
  1771 
  1908 
  1772    self updateExampleLanguageText.
  1909    self updateExampleLanguageText.
  1773 !
  1910 !
  1774 
  1911 
  1775 languageTextAccepted                                   
  1912 languageTextAccepted                                   
  1776 |nextRowIndex|
  1913     |nextRowIndex|
  1777 keyStringsToLanguageMappings size = self selectedKeyRow value
  1914     keyStringsToLanguageMappings size = self selectedKeyRow value
  1778     ifTrue:[ self updateLanguageTextModification.]
  1915         ifTrue:[ self updateLanguageTextModification.]
  1779     ifFalse:[ 
  1916         ifFalse:[ 
  1780         nextRowIndex := self selectedKeyRow value + 1.
  1917             nextRowIndex := self selectedKeyRow value + 1.
  1781         self selectedKeyRow value: nextRowIndex].
  1918             self selectedKeyRow value: nextRowIndex].
  1782 !
  1919 !
  1783 
  1920 
  1784 pastePreviousTranslationInLanguageText
  1921 pastePreviousTranslationInLanguageText
  1785     "Obtain the text from the previous translation and paste it into the languageTextEditor"
  1922     "Obtain the text from the previous translation and paste it into the languageTextEditor"
  1786     
  1923