--- a/Tools__InternationalLanguageTranslationEditor.st Tue Jan 16 22:14:35 2018 +0100
+++ b/Tools__InternationalLanguageTranslationEditor.st Tue Jan 16 22:31:20 2018 +0100
@@ -96,10 +96,10 @@
!InternationalLanguageTranslationEditor class methodsFor:'help spec'!
-flyByHelpSpec
+helpSpec
<resource: #help>
- ^ super flyByHelpSpec addPairsFrom:#(
+ ^ super helpSpec addPairsFrom:#(
#searchBox
'Show a search box at the bottom to search for substrings in the string keys'
@@ -110,29 +110,6 @@
)
! !
-!InternationalLanguageTranslationEditor class methodsFor:'help specs'!
-
-helpSpec
- "This resource specification was automatically generated
- by the UIHelpTool of ST/X."
-
- "Do not manually edit this!! If it is corrupted,
- the UIHelpTool may not be able to read the specification."
-
- "
- UIHelpTool openOnClass:Tools::InternationalLanguageTranslationEditor
- "
-
- <resource: #help>
-
- ^ super helpSpec addPairsFrom:#(
-
-#searchBox
-''
-
-)
-! !
-
!InternationalLanguageTranslationEditor class methodsFor:'image specs'!
closeSearchBarIcon
@@ -337,249 +314,249 @@
<resource: #canvas>
- ^
+ ^
#(FullSpec
name: windowSpec
- window:
+ window:
(WindowSpec
- label: 'InternationalLanguageTranslationEditor'
- name: 'InternationalLanguageTranslationEditor'
- min: (Point 10 10)
- bounds: (Rectangle 0 0 774 610)
- menu: mainMenu
+ label: 'InternationalLanguageTranslationEditor'
+ name: 'InternationalLanguageTranslationEditor'
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 774 610)
+ menu: mainMenu
)
- component:
+ component:
(SpecCollection
- collection: (
- (MenuPanelSpec
- name: 'ToolBar'
- layout: (LayoutFrame 0 0 0 0 0 1 30 0)
- menu: menuToolBar
- textDefault: true
- )
- (VariableVerticalPanelSpec
- name: 'TranslationsVariableVerticalPanel'
- layout: (LayoutFrame 0 0 30 0 0 1 -32 1)
- component:
- (SpecCollection
- collection: (
- (DataSetSpec
- name: 'KeyStringAndLanguageSelectionTable'
- model: selectedKeyRow
- menu: keyStringAndLanguageSelectionTableMenu
- hasHorizontalScrollBar: true
- hasVerticalScrollBar: true
- dataList: keyStringAndLanguageSelectionTable
- columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
- beDependentOfRows: true
- columnAdaptor: yourself
- postBuildCallback: postBuildDataSet:
- )
- (VariableVerticalPanelSpec
- name: 'VariableVerticalPanel1'
- component:
- (SpecCollection
- collection: (
- (ViewSpec
- name: 'Box1'
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'Original String (Key):'
- name: 'Label2'
- layout: (LayoutFrame 0 0 -2 0 0 1 28 0)
- translateLabel: true
- adjust: left
- )
- (TextEditorSpec
- name: 'OriginalText'
- layout: (LayoutFrame 0 0 27 0 0 1 -2 1)
- model: originalTextHolder
- hasHorizontalScrollBar: true
- hasVerticalScrollBar: true
- modifiedChannel: originalTextModifiedHolder
- acceptCallBack: languageTextAccepted
- hasKeyboardFocusInitially: false
- )
- )
-
- )
- )
- (ViewSpec
- name: 'Box3'
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'Select Another Language as example:'
- name: 'Label3'
- layout: (LayoutFrame 0 0 -6 0 0 1 24 0)
- translateLabel: true
- adjust: left
- )
- (ComboBoxSpec
- name: 'ComboBox1'
- layout: (LayoutFrame 281 0 -2 0 406 0 18 0)
- model: exampleLanguageSelectionHolder
- immediateAccept: false
- acceptOnLeave: true
- acceptOnLostFocus: true
- acceptOnPointerLeave: false
- comboList: shownLanguages
- useIndex: false
- )
- (TextEditorSpec
- name: 'ExampleLanguageText'
- layout: (LayoutFrame 0 0 30 0 0 1 0 1)
- model: exampleLanguageTextHolder
- hasHorizontalScrollBar: true
- hasVerticalScrollBar: true
- isReadOnly: true
- hasKeyboardFocusInitially: false
- )
- )
-
- )
- )
- (ViewSpec
- name: 'Box2'
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'Translated String:'
- name: 'Label1'
- layout: (LayoutFrame 0 0 0 0 0 1 30 0)
- translateLabel: true
- adjust: left
- )
- (TextEditorSpec
- name: 'LanguageText'
- layout: (LayoutFrame 0 0 30 0 0 1 0 1)
- model: languageTextHolder
- hasHorizontalScrollBar: true
- hasVerticalScrollBar: true
- acceptChannel: languageTextAcceptHolder
- modifiedChannel: languageTextModifiedHolder
- acceptCallBack: languageTextAccepted
- hasKeyboardFocusInitially: false
- postBuildCallback: languageEditorBuilt:
- )
- (ActionButtonSpec
- label: 'Paste Previous'
- name: 'pastePreviousTranslation'
- layout: (LayoutOrigin 0 0.83085250338295003 0 0.034482758620689995)
- translateLabel: true
- model: pastePreviousTranslationInLanguageText
- enableChannel: pastePreviousTranslationEnableHolder
- disabledLogo: 'Paste Previous'
- )
- (ActionButtonSpec
- label: 'Paste Original'
- name: 'Button1'
- layout: (LayoutOrigin -95 0.83085250338295003 0 0.034482758620689995)
- translateLabel: true
- model: pasteOriginalInLanguageText
- enableChannel: pasteOriginalEnableHolder
- disabledLogo: 'Paste Original'
- )
- )
-
- )
- )
- )
-
- )
- handles: (Any 0.3333333333333301 0.66666666666667018 1.0)
- )
- )
-
- )
- handles: (Any 0.5 1.0)
- postBuildCallback: postBuildTranslationsPanel:
- )
- (ViewSpec
- name: 'SearchBox'
- layout: (LayoutFrame 0 0 -32 1 0 1 0 1)
- level: -1
- visibilityChannel: searchBoxVisible
- component:
- (SpecCollection
- collection: (
- (ActionButtonSpec
- label: 'closeSearchBarIcon'
- name: 'closeSearchBarButton'
- layout: (LayoutFrame 4 0 5 0 25 0 26 0)
- hasCharacterOrientedLabel: false
- translateLabel: true
- model: closeSearchBar
- )
- (LabelSpec
- label: 'Search:'
- name: 'SearchLabel'
- layout: (LayoutFrame 30 0 5 0 100 0 27 0)
- translateLabel: true
- adjust: right
- )
- (InputFieldSpec
- name: 'SearchEntryField'
- layout: (LayoutFrame 100 0 5 0 257 0 27 0)
- model: searchTextHolder
- immediateAccept: true
- acceptOnReturn: true
- acceptOnTab: true
- acceptOnLostFocus: true
- modifiedChannel: searchTextModifiedHolder
- acceptOnPointerLeave: false
- postBuildCallback: postBuildSearchTextView:
- )
- (ActionButtonSpec
- label: 'searchNextIcon'
- name: 'SearchNextButton'
- layout: (LayoutFrame 264 0 5 0 285 0 26 0)
- hasCharacterOrientedLabel: false
- translateLabel: true
- model: searchNextText
- )
- (ActionButtonSpec
- label: 'searchPreviousIcon'
- name: 'searchPreviousButton'
- layout: (LayoutFrame 292 0 5 0 313 0 26 0)
- hasCharacterOrientedLabel: false
- translateLabel: true
- model: searchPreviousText
- )
- (CheckBoxSpec
- label: 'Ignore case'
- name: 'IgnoreCaseCheckBox'
- layout: (LayoutFrame 322 0 5 0 518 0 27 0)
- model: ignoreCaseHolder
- translateLabel: true
- )
- (LabelSpec
- label: 'SearchBarImageInfoLabel'
- name: 'SearchBarImageInfoLabel'
- layout: (LayoutFrame 524 0 5 0 548 0 27 0)
- hasCharacterOrientedLabel: false
- translateLabel: true
- labelChannel: searchBarImageInfoLabelHolder
- )
- (LabelSpec
- label: 'SearchBarInfoLabel'
- name: 'SearchBarInfoLabel'
- layout: (LayoutFrame 551 0 5 0 829 0 27 0)
- translateLabel: true
- labelChannel: searchBarInfoLabelHolder
- adjust: left
- )
- )
-
- )
- postBuildCallback: postBuildSearchBoxView:
- )
- )
-
+ collection: (
+ (MenuPanelSpec
+ name: 'ToolBar'
+ layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+ menu: menuToolBar
+ textDefault: true
+ )
+ (VariableVerticalPanelSpec
+ name: 'TranslationsVariableVerticalPanel'
+ layout: (LayoutFrame 0 0 30 0 0 1 -32 1)
+ component:
+ (SpecCollection
+ collection: (
+ (DataSetSpec
+ name: 'KeyStringAndLanguageSelectionTable'
+ model: selectedKeyRow
+ menu: keyStringAndLanguageSelectionTableMenu
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ dataList: keyStringAndLanguageSelectionTable
+ columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
+ beDependentOfRows: true
+ columnAdaptor: yourself
+ postBuildCallback: postBuildDataSet:
+ )
+ (VariableVerticalPanelSpec
+ name: 'VariableVerticalPanel1'
+ component:
+ (SpecCollection
+ collection: (
+ (ViewSpec
+ name: 'Box1'
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Original String (Key):'
+ name: 'Label2'
+ layout: (LayoutFrame 0 0 -2 0 0 1 28 0)
+ translateLabel: true
+ adjust: left
+ )
+ (TextEditorSpec
+ name: 'OriginalText'
+ layout: (LayoutFrame 0 0 27 0 0 1 -2 1)
+ model: originalTextHolder
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ modifiedChannel: originalTextModifiedHolder
+ acceptCallBack: languageTextAccepted
+ hasKeyboardFocusInitially: false
+ )
+ )
+
+ )
+ )
+ (ViewSpec
+ name: 'Box3'
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Select Another Language as example:'
+ name: 'Label3'
+ layout: (LayoutFrame 0 0 -6 0 0 1 24 0)
+ translateLabel: true
+ adjust: left
+ )
+ (ComboBoxSpec
+ name: 'ComboBox1'
+ layout: (LayoutFrame 281 0 -2 0 406 0 18 0)
+ model: exampleLanguageSelectionHolder
+ immediateAccept: false
+ acceptOnLeave: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ comboList: shownLanguages
+ useIndex: false
+ )
+ (TextEditorSpec
+ name: 'ExampleLanguageText'
+ layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+ model: exampleLanguageTextHolder
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ isReadOnly: true
+ hasKeyboardFocusInitially: false
+ )
+ )
+
+ )
+ )
+ (ViewSpec
+ name: 'Box2'
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Translated String:'
+ name: 'Label1'
+ layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+ translateLabel: true
+ adjust: left
+ )
+ (TextEditorSpec
+ name: 'LanguageText'
+ layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+ model: languageTextHolder
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ acceptChannel: languageTextAcceptHolder
+ modifiedChannel: languageTextModifiedHolder
+ acceptCallBack: languageTextAccepted
+ hasKeyboardFocusInitially: false
+ postBuildCallback: languageEditorBuilt:
+ )
+ (ActionButtonSpec
+ label: 'Paste Previous'
+ name: 'pastePreviousTranslation'
+ layout: (LayoutOrigin 0 0.83085250338295003 0 0.034482758620689995)
+ translateLabel: true
+ model: pastePreviousTranslationInLanguageText
+ enableChannel: pastePreviousTranslationEnableHolder
+ disabledLogo: 'Paste Previous'
+ )
+ (ActionButtonSpec
+ label: 'Paste Original'
+ name: 'Button1'
+ layout: (LayoutOrigin -95 0.83085250338295003 0 0.034482758620689995)
+ translateLabel: true
+ model: pasteOriginalInLanguageText
+ enableChannel: pasteOriginalEnableHolder
+ disabledLogo: 'Paste Original'
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ handles: (Any 0.3333333333333301 0.66666666666667018 1.0)
+ )
+ )
+
+ )
+ handles: (Any 0.5 1.0)
+ postBuildCallback: postBuildTranslationsPanel:
+ )
+ (ViewSpec
+ name: 'SearchBox'
+ layout: (LayoutFrame 0 0 -32 1 0 1 0 1)
+ level: -1
+ visibilityChannel: searchBoxVisible
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'closeSearchBarIcon'
+ name: 'closeSearchBarButton'
+ layout: (LayoutFrame 4 0 5 0 25 0 26 0)
+ hasCharacterOrientedLabel: false
+ translateLabel: true
+ model: closeSearchBar
+ )
+ (LabelSpec
+ label: 'Search:'
+ name: 'SearchLabel'
+ layout: (LayoutFrame 30 0 5 0 100 0 27 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'SearchEntryField'
+ layout: (LayoutFrame 100 0 5 0 257 0 27 0)
+ model: searchTextHolder
+ immediateAccept: true
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ modifiedChannel: searchTextModifiedHolder
+ acceptOnPointerLeave: false
+ postBuildCallback: postBuildSearchTextView:
+ )
+ (ActionButtonSpec
+ label: 'searchNextIcon'
+ name: 'SearchNextButton'
+ layout: (LayoutFrame 264 0 5 0 285 0 26 0)
+ hasCharacterOrientedLabel: false
+ translateLabel: true
+ model: searchNextText
+ )
+ (ActionButtonSpec
+ label: 'searchPreviousIcon'
+ name: 'searchPreviousButton'
+ layout: (LayoutFrame 292 0 5 0 313 0 26 0)
+ hasCharacterOrientedLabel: false
+ translateLabel: true
+ model: searchPreviousText
+ )
+ (CheckBoxSpec
+ label: 'Ignore case'
+ name: 'IgnoreCaseCheckBox'
+ layout: (LayoutFrame 322 0 5 0 518 0 27 0)
+ model: ignoreCaseHolder
+ translateLabel: true
+ )
+ (LabelSpec
+ label: 'SearchBarImageInfoLabel'
+ name: 'SearchBarImageInfoLabel'
+ layout: (LayoutFrame 524 0 5 0 548 0 27 0)
+ hasCharacterOrientedLabel: false
+ translateLabel: true
+ labelChannel: searchBarImageInfoLabelHolder
+ )
+ (LabelSpec
+ label: 'SearchBarInfoLabel'
+ name: 'SearchBarInfoLabel'
+ layout: (LayoutFrame 551 0 5 0 829 0 27 0)
+ translateLabel: true
+ labelChannel: searchBarInfoLabelHolder
+ adjust: left
+ )
+ )
+
+ )
+ postBuildCallback: postBuildSearchBoxView:
+ )
+ )
+
)
)
! !
@@ -601,41 +578,41 @@
<resource: #menu>
- ^
+ ^
#(Menu
- (
- (MenuItem
- label: 'Browse Methods Containing this String'
- itemValue: browseReferringMethods
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Set Current NameSpace...'
- itemValue: changeLastNameSpace
- )
- (MenuItem
- label: 'Search String in Current NameSpace'
- itemValue: searchStringInLastNameSpace
- )
- (MenuItem
- label: '-'
- isVisible: false
- )
- (MenuItem
- label: 'Set Current Package...'
- itemValue: changeLastPackage
- isVisible: false
- )
- (MenuItem
- label: 'Search String in Current Package'
- itemValue: searchStringInLastPackage
- isVisible: false
- )
- )
- nil
- nil
+ (
+ (MenuItem
+ label: 'Browse Methods Containing this String'
+ itemValue: browseReferringMethods
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Set Current NameSpace...'
+ itemValue: changeLastNameSpace
+ )
+ (MenuItem
+ label: 'Search String in Current NameSpace'
+ itemValue: searchStringInLastNameSpace
+ )
+ (MenuItem
+ label: '-'
+ isVisible: false
+ )
+ (MenuItem
+ label: 'Set Current Package...'
+ itemValue: changeLastPackage
+ isVisible: false
+ )
+ (MenuItem
+ label: 'Search String in Current Package'
+ itemValue: searchStringInLastPackage
+ isVisible: false
+ )
+ )
+ nil
+ nil
)
!
@@ -654,169 +631,169 @@
<resource: #menu>
- ^
+ ^
#(Menu
- (
- (MenuItem
- label: 'File'
- submenu:
- (Menu
- (
- (MenuItem
- label: 'New'
- itemValue: menuNew
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Open Resources for Package or Project...'
- itemValue: menuOpenByPackage
- )
- (MenuItem
- label: 'Open Resource File...'
- itemValue: menuOpen
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Save All Resource Files'
- itemValue: menuSaveAll
- )
- (MenuItem
- label: 'Save Resource File'
- itemValue: menuSave
- )
- (MenuItem
- label: 'Save Resource File As...'
- itemValue: menuSaveAs
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Import existing translations from file...'
- itemValue: importExistingTranslationsFromFile
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Set Current NameSpace'
- itemValue: changeLastNameSpace
- )
- (MenuItem
- label: 'Set Current Package'
- itemValue: changeLastPackage
- isVisible: false
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Exit'
- itemValue: closeRequest
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'View'
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Show Missing Translations Only'
- indication: showMissingTranslationsOnly
- )
- (MenuItem
- label: 'Show Search Box'
- indication: searchBoxVisible
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Shown Languages'
- submenuChannel: shownLanguagesMenu
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Languages'
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Add Language...'
- itemValue: addLanguage
- )
- (MenuItem
- label: 'Remove Language...'
- itemValue: removeLanguage
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Translations'
- submenuChannel: translationsMenuSpec
- )
- (MenuItem
- label: 'Preferences'
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Auto Accept Changes'
- indication: autoAcceptHolder
- )
- (MenuItem
- label: 'Search For Similar Translations'
- indication: searchForSimilarTranslationEnableHolder
- )
- (MenuItem
- label: 'Always Write UTF8'
- indication: alwaysWriteUTF8Holder
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: 'Help'
- startGroup: right
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Documentation'
- itemValue: openDocumentation
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'About this Application...'
- itemValue: openAboutThisApplication
- )
- )
- nil
- nil
- )
- )
- )
- nil
- nil
+ (
+ (MenuItem
+ label: 'File'
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'New'
+ itemValue: menuNew
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Open Resources for Package or Project...'
+ itemValue: menuOpenByPackage
+ )
+ (MenuItem
+ label: 'Open Resource File...'
+ itemValue: menuOpen
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Save All Resource Files'
+ itemValue: menuSaveAll
+ )
+ (MenuItem
+ label: 'Save Resource File'
+ itemValue: menuSave
+ )
+ (MenuItem
+ label: 'Save Resource File As...'
+ itemValue: menuSaveAs
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Import existing translations from file...'
+ itemValue: importExistingTranslationsFromFile
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Set Current NameSpace'
+ itemValue: changeLastNameSpace
+ )
+ (MenuItem
+ label: 'Set Current Package'
+ itemValue: changeLastPackage
+ isVisible: false
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Exit'
+ itemValue: closeRequest
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'View'
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'Show Missing Translations Only'
+ indication: showMissingTranslationsOnly
+ )
+ (MenuItem
+ label: 'Show Search Box'
+ indication: searchBoxVisible
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Shown Languages'
+ submenuChannel: shownLanguagesMenu
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Languages'
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'Add Language...'
+ itemValue: addLanguage
+ )
+ (MenuItem
+ label: 'Remove Language...'
+ itemValue: removeLanguage
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Translations'
+ submenuChannel: translationsMenuSpec
+ )
+ (MenuItem
+ label: 'Preferences'
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'Auto Accept Changes'
+ indication: autoAcceptHolder
+ )
+ (MenuItem
+ label: 'Search For Similar Translations'
+ indication: searchForSimilarTranslationEnableHolder
+ )
+ (MenuItem
+ label: 'Always Write UTF8'
+ indication: alwaysWriteUTF8Holder
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Help'
+ startGroup: right
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'Documentation'
+ itemValue: openDocumentation
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'About this Application...'
+ itemValue: openAboutThisApplication
+ )
+ )
+ nil
+ nil
+ )
+ )
+ )
+ nil
+ nil
)
!
@@ -865,62 +842,62 @@
<resource: #menu>
- ^
+ ^
#(Menu
- (
- (MenuItem
- label: 'Save'
- itemValue: menuSave
- isButton: true
- labelImage: (ResourceRetriever XPToolbarIconLibrary saveImageIcon)
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Add Translation'
- itemValue: addTranslation
- isButton: true
- labelImage: (ResourceRetriever XPToolbarIconLibrary newRowIcon)
- )
- (MenuItem
- label: 'Remove Translation'
- itemValue: removeTranslation
- isButton: true
- labelImage: (ResourceRetriever XPToolbarIconLibrary removeRowIcon)
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- activeHelpKey: browseReferringMethods
- label: 'Browse'
- itemValue: browseReferringMethods
- labelImage: (ResourceRetriever ToolbarIconLibrary systemBrowserIcon)
- )
- (MenuItem
- label: ''
- )
- (MenuItem
- label: 'Stop Application'
- itemValue: stopApplication
- isButton: true
- isVisible: stopApplicationIconVisibleHolder
- labelImage: (ResourceRetriever XPToolbarIconLibrary stop16x16Icon)
- )
- (MenuItem
- activeHelpKey: searchBox
- label: 'Search'
- isButton: true
- startGroup: right
- hideMenuOnActivated: false
- indication: searchBoxVisible
- shortcutKey: Ctrlf
- labelImage: (ResourceRetriever #'Tools::InternationalLanguageTranslationEditor' searchToolBarIcon)
- )
- )
- nil
- nil
+ (
+ (MenuItem
+ label: 'Save'
+ itemValue: menuSave
+ isButton: true
+ labelImage: (ResourceRetriever XPToolbarIconLibrary saveImageIcon)
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Add Translation'
+ itemValue: addTranslation
+ isButton: true
+ labelImage: (ResourceRetriever XPToolbarIconLibrary newRowIcon)
+ )
+ (MenuItem
+ label: 'Remove Translation'
+ itemValue: removeTranslation
+ isButton: true
+ labelImage: (ResourceRetriever XPToolbarIconLibrary removeRowIcon)
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: browseReferringMethods
+ label: 'Browse'
+ itemValue: browseReferringMethods
+ labelImage: (ResourceRetriever ToolbarIconLibrary systemBrowserIcon)
+ )
+ (MenuItem
+ label: ''
+ )
+ (MenuItem
+ label: 'Stop Application'
+ itemValue: stopApplication
+ isButton: true
+ isVisible: stopApplicationIconVisibleHolder
+ labelImage: (ResourceRetriever XPToolbarIconLibrary stop16x16Icon)
+ )
+ (MenuItem
+ activeHelpKey: searchBox
+ label: 'Search'
+ isButton: true
+ startGroup: right
+ hideMenuOnActivated: false
+ indication: searchBoxVisible
+ shortcutKey: Ctrlf
+ labelImage: (ResourceRetriever #'Tools::InternationalLanguageTranslationEditor' searchToolBarIcon)
+ )
+ )
+ nil
+ nil
)
!
@@ -939,54 +916,54 @@
<resource: #menu>
- ^
+ ^
#(Menu
- (
- (MenuItem
- label: 'Add Translation...'
- itemValue: addTranslation
- )
- (MenuItem
- label: 'Remove Translation...'
- itemValue: removeTranslation
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Extract from Package...'
- itemValue: extractTranslationsFromProject
- )
- (MenuItem
- label: 'Extract from Class...'
- itemValue: extractTranslationsFromClass
- )
- (MenuItem
- label: 'Extract from NameSpace...'
- itemValue: extractTranslationsFromNameSpace
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Run Application and Collect Translations...'
- itemValue: runApplicationAndCollectTranslations
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Generate Missing Translations'
- itemValue: generateMissingTranslations
- )
- (MenuItem
- label: 'Generate Missing Translations Slice'
- submenuChannel: menuSliceTranslateGenerate
- isMenuSlice: true
- )
- )
- nil
- nil
+ (
+ (MenuItem
+ label: 'Add Translation...'
+ itemValue: addTranslation
+ )
+ (MenuItem
+ label: 'Remove Translation...'
+ itemValue: removeTranslation
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Extract from Package...'
+ itemValue: extractTranslationsFromProject
+ )
+ (MenuItem
+ label: 'Extract from Class...'
+ itemValue: extractTranslationsFromClass
+ )
+ (MenuItem
+ label: 'Extract from NameSpace...'
+ itemValue: extractTranslationsFromNameSpace
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Run Application and Collect Translations...'
+ itemValue: runApplicationAndCollectTranslations
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Generate Missing Translations'
+ itemValue: generateMissingTranslations
+ )
+ (MenuItem
+ label: 'Generate Missing Translations Slice'
+ submenuChannel: menuSliceTranslateGenerate
+ isMenuSlice: true
+ )
+ )
+ nil
+ nil
)
! !
@@ -998,18 +975,18 @@
fn := aFilename asFilename.
^ self new
- allButOpen;
- readResourceFile:fn asLanguage:fn withoutSuffix baseName;
- openWindow;
- yourself.
+ allButOpen;
+ readResourceFile:fn asLanguage:fn withoutSuffix baseName;
+ openWindow;
+ yourself.
!
openOnPackage:aPackageId
^ self new
- allButOpen;
- readResourceFileForPackage:aPackageId;
- openWindow;
- yourself.
+ allButOpen;
+ readResourceFileForPackage:aPackageId;
+ openWindow;
+ yourself.
! !
!InternationalLanguageTranslationEditor class methodsFor:'tableColumns specs'!
@@ -1089,8 +1066,8 @@
newLanguageText
"/ languageEditor accept
^self languageTextHolder value isEmptyOrNil
- ifTrue:['']
- ifFalse:[self languageTextHolder value asCollectionOfLines first.]
+ ifTrue:['']
+ ifFalse:[self languageTextHolder value asCollectionOfLines first.]
!
objectsList
@@ -1316,14 +1293,14 @@
searchBoxVisible
searchBoxVisible isNil ifTrue:[
- searchBoxVisible := false asValue.
- searchBoxVisible
- onChangeEvaluate:[
- self updateToolVisibility.
- searchBoxVisible value ifTrue:[
- searchTextView takeFocus.
- ].
- ].
+ searchBoxVisible := false asValue.
+ searchBoxVisible
+ onChangeEvaluate:[
+ self updateToolVisibility.
+ searchBoxVisible value ifTrue:[
+ searchTextView takeFocus.
+ ].
+ ].
].
^ searchBoxVisible.
@@ -1462,21 +1439,21 @@
|answer|
- self originalTextModifiedHolder value ifTrue:[
- answer := OptionBox
- request:'Accept changed original text (key) ?'
- label:'Original text (key) changed'
- image:(WarningBox iconBitmap)
- buttonLabels:#('Cancel' 'Accept' 'Accept As New')
- values:#(nil #accept #acceptAsNew)
- default:#acceptAsNew.
-
- answer isNil ifTrue:[^ self originalTextModifiedHolder value:false. ].
- answer == #accept ifTrue:[
+ self originalTextModifiedHolder value ifTrue:[
+ answer := OptionBox
+ request:'Accept changed original text (key) ?'
+ label:'Original text (key) changed'
+ image:(WarningBox iconBitmap)
+ buttonLabels:#('Cancel' 'Accept' 'Accept As New')
+ values:#(nil #accept #acceptAsNew)
+ default:#acceptAsNew.
+
+ answer isNil ifTrue:[^ self originalTextModifiedHolder value:false. ].
+ answer == #accept ifTrue:[
self shouldImplement. ].
- answer == #acceptAsNew ifTrue:[
+ answer == #acceptAsNew ifTrue:[
self shouldImplement. ].
- ].
+ ].
!
updatePasteOriginalButtonEnabled
@@ -1562,18 +1539,18 @@
allProjects := Smalltalk allPackageIDs.
projectsWithResources := allProjects
- select:[:pID |
- |dir|
- dir := Smalltalk projectDirectoryForPackage:pID.
- dir notNil and:[
- (dir asFilename construct:'resources') exists]
- ].
+ select:[:pID |
+ |dir|
+ dir := Smalltalk projectDirectoryForPackage:pID.
+ dir notNil and:[
+ (dir asFilename construct:'resources') exists]
+ ].
package := Dialog
- requestProject:(resources string:'Name of Package:')
- from:projectsWithResources
- initialAnswer:LastProject
- suggestions:nil.
+ requestProject:(resources string:'Name of Package:')
+ from:projectsWithResources
+ initialAnswer:LastProject
+ suggestions:nil.
package isEmptyOrNil ifTrue:[^ nil ].
LastProject := package.
@@ -1694,9 +1671,9 @@
methods := methodsUsingKey at:selectedKey ifAbsent:nil.
methods isEmptyOrNil ifTrue:[
- Dialog information:(resources stringWithCRs:'oops - no method remembered.\Please rerun the extract from XXX menu operation').
- ^ self.
- ].
+ Dialog information:(resources stringWithCRs:'oops - no method remembered.\Please rerun the extract from XXX menu operation').
+ ^ self.
+ ].
browser := UserPreferences systemBrowserClass browseMethods:methods.
browser autoSearch:selectedKey ignoreCase:true.
!
@@ -1763,13 +1740,13 @@
initialAnswer := lastExtractedProject ? LastExtractedProject.
suggestions := initialAnswer isNil ifTrue:[
- OrderedCollection new
+ OrderedCollection new
] ifFalse:[
- OrderedCollection with:initialAnswer
+ OrderedCollection with:initialAnswer
].
projectID := Dialog requestProject:(resources string:'Package to extract translations from:') initialAnswer:initialAnswer suggestions:suggestions.
projectID notNil ifTrue:[
- projectID := projectID withoutSeparators asSymbol.
+ projectID := projectID withoutSeparators asSymbol.
].
projectID isEmptyOrNil ifTrue:[^ self ].
@@ -1777,44 +1754,44 @@
newTranslations := Set new.
self withWaitCursorDo:[
- Smalltalk allClassesDo:[:eachClass |
- eachClass theNonMetaclass instAndClassMethodsDo:[:eachMethod |
- eachMethod package == projectID ifTrue:[
- newTranslations addAll:( self extractTranslationsFromMethod:eachMethod ).
- ]
- ].
- ].
-
- self addAllTranslations:newTranslations.
+ Smalltalk allClassesDo:[:eachClass |
+ eachClass theNonMetaclass instAndClassMethodsDo:[:eachMethod |
+ eachMethod package == projectID ifTrue:[
+ newTranslations addAll:( self extractTranslationsFromMethod:eachMethod ).
+ ]
+ ].
+ ].
+
+ self addAllTranslations:newTranslations.
].
"Modified: / 19-02-2015 / 11:44:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 16-08-2017 / 12:29:21 / mawalch"
!
-generateMissingTranslations: keys for: languages using: translator
+generateMissingTranslations: keys for: languages using: translator
keys do:[:string |
- languages do:[:lang |
- | translation |
-
- translation := keyStringsToLanguageMappings at:string language:lang.
- translation isNil ifTrue:[
- translation := translator value: lang value: string.
- translation notNil ifTrue:[
- keyStringsToLanguageMappings at: string language: lang put: translation.
- ].
- ].
- ].
+ languages do:[:lang |
+ | translation |
+
+ translation := keyStringsToLanguageMappings at:string language:lang.
+ translation isNil ifTrue:[
+ translation := translator value: lang value: string.
+ translation notNil ifTrue:[
+ keyStringsToLanguageMappings at: string language: lang put: translation.
+ ].
+ ].
+ ].
].
"Created: / 19-02-2015 / 12:31:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
generateMissingTranslationsFor: languages
- self
- generateMissingTranslations: keyStringsToLanguageMappings keys
- for: languages
- using: [ :lang :string | '**%1** %2' bindWith: lang asUppercase with: string ]
+ self
+ generateMissingTranslations: keyStringsToLanguageMappings keys
+ for: languages
+ using: [ :lang :string | '**%1** %2' bindWith: lang asUppercase with: string ]
"Created: / 19-02-2015 / 12:39:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
@@ -1997,8 +1974,8 @@
languagesToRemove := Dialog chooseMultiple:'Which language(s) do you want to remove?' fromList:languagesList lines:10.
languagesToRemove isEmptyOrNil ifTrue:[^ self ].
(Dialog confirm: 'Are you sure to remove the languages: ', languagesToRemove printString) ifTrue:[
- self languagesList removeAll:languagesToRemove.
- self shownLanguages removeAll:languagesToRemove.
+ self languagesList removeAll:languagesToRemove.
+ self shownLanguages removeAll:languagesToRemove.
].
!
@@ -2020,36 +1997,36 @@
|applicationClass newTranslations pseudoPack app startSelector|
monitoredApplication notNil ifTrue:[
- monitoredApplication terminate.
- [monitoredApplication notNil] whileTrue:[
- Delay waitForSeconds:0.1
- ].
+ monitoredApplication terminate.
+ [monitoredApplication notNil] whileTrue:[
+ Delay waitForSeconds:0.1
+ ].
].
applicationClass := Dialog
- requestClass:'Application class to start and collect translations from:'
- okLabel:'OK'
- initialAnswer:(lastExtractedApplicationClass ? LastExtractedApplicationClass ).
+ requestClass:'Application class to start and collect translations from:'
+ okLabel:'OK'
+ initialAnswer:(lastExtractedApplicationClass ? LastExtractedApplicationClass ).
applicationClass isNil ifTrue:[^ self ].
applicationClass isNameSpace ifTrue:[
- Dialog warn:'Entered class is a NameSpace'.
- ^ self.
+ Dialog warn:'Entered class is a NameSpace'.
+ ^ self.
].
applicationClass isVisualStartable ifTrue:[
- startSelector := #open
+ startSelector := #open
] ifFalse:[
- startSelector := Dialog
- request:'Entered class seems to be no application class. Ok to start using selector:'
- initialAnswer:((applicationClass respondsTo:#'start')
- ifTrue:#'start'
- ifFalse:#'new')
- okLabel:'START'
- title:'Start Application'.
- startSelector isNil ifTrue:[
- ^ self
- ].
- startSelector := startSelector asSymbol.
+ startSelector := Dialog
+ request:'Entered class seems to be no application class. Ok to start using selector:'
+ initialAnswer:((applicationClass respondsTo:#'start')
+ ifTrue:#'start'
+ ifFalse:#'new')
+ okLabel:'START'
+ title:'Start Application'.
+ startSelector isNil ifTrue:[
+ ^ self
+ ].
+ startSelector := startSelector asSymbol.
].
lastExtractedApplicationClass := LastExtractedApplicationClass := applicationClass.
@@ -2062,21 +2039,21 @@
self stopApplicationIconVisibleHolder value:true.
- monitoredApplication :=
- [
- [
- app := applicationClass new.
- app resources:pseudoPack.
-
- app perform:startSelector.
- app window waitUntilVisible.
- app window waitUntilClosed.
- ] ensure:[
- app closeRequest.
- self stopApplicationIconVisibleHolder value:false.
- monitoredApplication := nil.
- ].
- ] fork.
+ monitoredApplication :=
+ [
+ [
+ app := applicationClass new.
+ app resources:pseudoPack.
+
+ app perform:startSelector.
+ app window waitUntilVisible.
+ app window waitUntilClosed.
+ ] ensure:[
+ app closeRequest.
+ self stopApplicationIconVisibleHolder value:false.
+ monitoredApplication := nil.
+ ].
+ ] fork.
!
searchStringInLastNameSpace
@@ -2114,35 +2091,35 @@
browser := NewSystemBrowser new "open".
browser allButOpen.
-
+
lastSearchPatterns := browser lastSearchPatterns.
(lastSearchPatterns notNil and:[lastSearchPatterns first ~= selectedKey]) ifTrue:[
- browser lastSearchPatterns addFirst: selectedKey
+ browser lastSearchPatterns addFirst: selectedKey
].
SearchDialog lastStringSearchArea: #currentPackage.
lastPackage isNil ifTrue:[
- self changeLastPackage.
+ self changeLastPackage.
].
lastPackage notNil ifTrue:[
"/ browser navigationState selectedClasses value: lastNameSpace allClasses.
- browser navigationState packageFilter value: (OrderedCollection with:lastPackage).
- browser navigationState selectedProjects value: (OrderedCollection with:lastPackage).
+ browser navigationState packageFilter value: (OrderedCollection with:lastPackage).
+ browser navigationState selectedProjects value: (OrderedCollection with:lastPackage).
].
self withWaitCursorDo:[
- browser
- askForMethodAndSpawnSearchTitle:'String to Search for in Sources:'
- browserLabel:'Methods containing "%1"'
- searchWith:#( #'findString:in:ignoreCase:match:' #'findString:inMethods:ignoreCase:match:' )
- searchWhat:#string
- searchArea:#currentPackage
- withCaseIgnore:false
- withTextEntry:false
- withMatch:true
- withMethodList:false
- setSearchPattern:[:brwsr :string :ignoreCase :doMatch|
- brwsr autoSearchPattern:string ignoreCase:ignoreCase.
- ]
- initialText:selectedKey "/ does not work: ('''*',selectedKey,'*''') check match!!
+ browser
+ askForMethodAndSpawnSearchTitle:'String to Search for in Sources:'
+ browserLabel:'Methods containing "%1"'
+ searchWith:#( #'findString:in:ignoreCase:match:' #'findString:inMethods:ignoreCase:match:' )
+ searchWhat:#string
+ searchArea:#currentPackage
+ withCaseIgnore:false
+ withTextEntry:false
+ withMatch:true
+ withMethodList:false
+ setSearchPattern:[:brwsr :string :ignoreCase :doMatch|
+ brwsr autoSearchPattern:string ignoreCase:ignoreCase.
+ ]
+ initialText:selectedKey "/ does not work: ('''*',selectedKey,'*''') check match!!
].
! !
@@ -2172,13 +2149,13 @@
| menu |
menu := Menu new.
- keyStringsToLanguageMappings notNil ifTrue:[
- keyStringsToLanguageMappings languages do:[:lang |
- menu addItem:
- (MenuItem
- label: (resources string: 'Generate Missing Translations - %1' with: lang asUppercase)
- itemValue: [ self generateMissingTranslationsFor: (Array with: lang) ])
- ].
+ keyStringsToLanguageMappings notNil ifTrue:[
+ keyStringsToLanguageMappings languages do:[:lang |
+ menu addItem:
+ (MenuItem
+ label: (resources string: 'Generate Missing Translations - %1' with: lang asUppercase)
+ itemValue: [ self generateMissingTranslationsFor: (Array with: lang) ])
+ ].
].
^ menu
@@ -2217,49 +2194,49 @@
addAllTranslations:newTranslations
"merge found xlations into the list of already present xlations"
-
+
|newTranslationKeys stringKeys nonStringKeys|
newTranslationKeys := newTranslations select:[:k | k notEmptyOrNil and:[k isString not or:[k isBlank not]]].
newTranslationKeys := newTranslationKeys select:[:k | (keyStringsToLanguageMappings includesKey:k) not].
"/ follow the common-xlations algrithm of ResourcePack
"/ (which knows how to xlate strings with additional special chars.)
- newTranslationKeys :=
- newTranslationKeys collect:[:oldKey |
- |newKey methods|
-
- (oldKey endsWith:' ...') ifTrue:[
- newKey := oldKey copyButLast:4.
- ] ifFalse:[ (oldKey endsWith:'...') ifTrue:[
- newKey := oldKey copyButLast:3.
- ] ifFalse:[ ('\.:?=,!! ' includes:oldKey last) ifTrue:[
- newKey := oldKey copyButLast:1.
- ] ifFalse:[ ((oldKey first == $() and:[ oldKey last == $) ]) ifTrue:[
- newKey := oldKey copyFrom:2 to:oldKey size - 1
- ] ifFalse:[ ((oldKey first == $[) and:[ oldKey last == $] ]) ifTrue:[
- newKey := oldKey copyFrom:2 to:oldKey size - 1
- ] ifFalse:[
- newKey :=oldKey
- ]]]]].
- "/ must attach oldKey-methods to newKey
- methods := methodsUsingKey at:oldKey ifAbsent:nil.
- methods notNil ifTrue:[
- (methodsUsingKey at:newKey ifAbsentPut:[Set new]) addAll:methods
- ].
- newKey
- ].
-
+ newTranslationKeys :=
+ newTranslationKeys collect:[:oldKey |
+ |newKey methods|
+
+ (oldKey endsWith:' ...') ifTrue:[
+ newKey := oldKey copyButLast:4.
+ ] ifFalse:[ (oldKey endsWith:'...') ifTrue:[
+ newKey := oldKey copyButLast:3.
+ ] ifFalse:[ ('\.:?=,!! ' includes:oldKey last) ifTrue:[
+ newKey := oldKey copyButLast:1.
+ ] ifFalse:[ ((oldKey first == $() and:[ oldKey last == $) ]) ifTrue:[
+ newKey := oldKey copyFrom:2 to:oldKey size - 1
+ ] ifFalse:[ ((oldKey first == $[) and:[ oldKey last == $] ]) ifTrue:[
+ newKey := oldKey copyFrom:2 to:oldKey size - 1
+ ] ifFalse:[
+ newKey :=oldKey
+ ]]]]].
+ "/ must attach oldKey-methods to newKey
+ methods := methodsUsingKey at:oldKey ifAbsent:nil.
+ methods notNil ifTrue:[
+ (methodsUsingKey at:newKey ifAbsentPut:[Set new]) addAll:methods
+ ].
+ newKey
+ ].
+
newTranslationKeys := newTranslationKeys asSet.
newTranslationKeys := newTranslationKeys select:[:k | (keyStringsToLanguageMappings includesKey:k) not].
newTranslationKeys notEmpty ifTrue:[
- stringKeys := newTranslationKeys select:[:k | k isString].
- nonStringKeys := newTranslationKeys select:[:k | k isString not].
-
- stringKeys := stringKeys asSortedCollection.
- keyStringsToLanguageMappings addKeys:stringKeys.
- keyStringsToLanguageMappings addKeys:nonStringKeys.
- modified := true.
+ stringKeys := newTranslationKeys select:[:k | k isString].
+ nonStringKeys := newTranslationKeys select:[:k | k isString not].
+
+ stringKeys := stringKeys asSortedCollection.
+ keyStringsToLanguageMappings addKeys:stringKeys.
+ keyStringsToLanguageMappings addKeys:nonStringKeys.
+ modified := true.
].
!
@@ -2269,18 +2246,18 @@
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 ).
- ].
+ "/ 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 :=
- newTranslations select:[:eachTranslation|
- (aClass resources at:eachTranslation ifAbsent:nil) isNil
- ].
+
+ newTranslations :=
+ newTranslations select:[:eachTranslation|
+ (aClass resources at:eachTranslation ifAbsent:nil) isNil
+ ].
^ newTranslations
!
@@ -2290,58 +2267,58 @@
|codeStrings matcher parseTree resourceKeys|
parseTree := RBParser
- parseMethod:aMethod source
- onError: [:str :pos | Transcript showCR:str. Transcript showCR:pos.
- nil].
+ parseMethod:aMethod source
+ onError: [:str :pos | Transcript showCR:str. Transcript showCR:pos.
+ nil].
parseTree isNil ifTrue:[^ #() ].
codeStrings :=
- #(
- '`@dict addPairsFrom: `#helpKeysAndStrings'
- '^ `#lit'
- ).
+ #(
+ '`@dict addPairsFrom: `#helpKeysAndStrings'
+ '^ `#lit'
+ ).
resourceKeys := Set new.
matcher := ParseTreeSearcher new.
matcher
- matchesAnyOf: codeStrings
- do: [:aNode :answer |
- |sel argNode arg|
-
- aNode isReturn ifTrue:[
- "/ a ^ #(...)
- aNode value isLiteralArray ifTrue:[
- aNode value value pairWiseDo:[:helpKey :helpString |
- self rememberMethod:aMethod usingKey:helpString.
- resourceKeys add:helpString.
- ].
- ].
- ] ifFalse:[
- sel := aNode selector.
- (sel startsWith:'addPairsFrom:') ifTrue:[
- argNode := aNode arguments at:1.
- argNode isLiteralArray ifTrue:[
- arg := argNode value.
- arg doWithIndex:[:el :index |
- index even ifTrue:[
- el isString ifTrue:[
- self rememberMethod:aMethod usingKey:el.
- resourceKeys add:el.
- ]
- ].
- ].
- ] ifFalse:[
- Transcript halt
- showCR:(resources
- string:'Cannot derive resourceKey from non-literal array: %1 in %2'
- with:argNode formattedCode
- with:aMethod selector).
- ].
- ].
- ].
- aNode
- ].
+ matchesAnyOf: codeStrings
+ do: [:aNode :answer |
+ |sel argNode arg|
+
+ aNode isReturn ifTrue:[
+ "/ a ^ #(...)
+ aNode value isLiteralArray ifTrue:[
+ aNode value value pairWiseDo:[:helpKey :helpString |
+ self rememberMethod:aMethod usingKey:helpString.
+ resourceKeys add:helpString.
+ ].
+ ].
+ ] ifFalse:[
+ sel := aNode selector.
+ (sel startsWith:'addPairsFrom:') ifTrue:[
+ argNode := aNode arguments at:1.
+ argNode isLiteralArray ifTrue:[
+ arg := argNode value.
+ arg doWithIndex:[:el :index |
+ index even ifTrue:[
+ el isString ifTrue:[
+ self rememberMethod:aMethod usingKey:el.
+ resourceKeys add:el.
+ ]
+ ].
+ ].
+ ] ifFalse:[
+ Transcript halt
+ showCR:(resources
+ string:'Cannot derive resourceKey from non-literal array: %1 in %2'
+ with:argNode formattedCode
+ with:aMethod selector).
+ ].
+ ].
+ ].
+ aNode
+ ].
matcher executeTree: parseTree initialAnswer: nil.
^ resourceKeys
@@ -2356,42 +2333,42 @@
menu isNil ifTrue:[ ^ #() ].
(menu isKindOf:Menu) ifFalse:[
- menu := Menu new fromLiteralArrayEncoding:menu
+ menu := Menu new fromLiteralArrayEncoding:menu
].
resourceKeys := Set new.
menu allItemsDo:[:aMenuItem |
- aMenuItem translateLabel ifTrue:[
- (aMenuItem isSeparatorItem or:[aMenuItem isMenuSlice]) ifFalse:[
- self rememberMethod:aMethod usingKey:aMenuItem label.
- resourceKeys add:aMenuItem label.
- ]
- ]
+ aMenuItem translateLabel ifTrue:[
+ (aMenuItem isSeparatorItem or:[aMenuItem isMenuSlice]) ifFalse:[
+ self rememberMethod:aMethod usingKey:aMenuItem label.
+ resourceKeys add:aMenuItem label.
+ ]
+ ]
].
^ resourceKeys
!
extractTranslationsFromMethod:aMethod
"return strings which need translation from a method."
-
+
|mResources|
mResources := aMethod resources.
mResources notNil ifTrue:[
- (mResources includesKey:#menu) ifTrue:[
- ^ self extractTranslationsFromMenuSpecMethod:aMethod.
- ].
- (mResources includesKey:#canvas) ifTrue:[
- ^ self extractTranslationsFromUISpecMethod:aMethod.
- ].
- (mResources includesKey:#help) ifTrue:[
- ^ self extractTranslationsFromHelpSpecMethod:aMethod.
- ].
- (mResources includesKey:#tableColumns) ifTrue:[
- ^ self extractTranslationsFromTableColumnsSpecMethod:aMethod.
- ].
-
- ^ self extractTranslationsFromSpecMethod:aMethod.
+ (mResources includesKey:#menu) ifTrue:[
+ ^ self extractTranslationsFromMenuSpecMethod:aMethod.
+ ].
+ (mResources includesKey:#canvas) ifTrue:[
+ ^ self extractTranslationsFromUISpecMethod:aMethod.
+ ].
+ (mResources includesKey:#help) ifTrue:[
+ ^ self extractTranslationsFromHelpSpecMethod:aMethod.
+ ].
+ (mResources includesKey:#tableColumns) ifTrue:[
+ ^ self extractTranslationsFromTableColumnsSpecMethod:aMethod.
+ ].
+
+ ^ self extractTranslationsFromSpecMethod:aMethod.
].
^ self extractTranslationsFromMethodsCode:aMethod
!
@@ -2403,45 +2380,45 @@
|codeStrings matcher parseTree resourceKeys|
parseTree := RBParser
- parseMethod:aMethod source
- onError: [:str :pos | Transcript showCR:str. Transcript showCR:pos.
- nil].
+ parseMethod:aMethod source
+ onError: [:str :pos | Transcript showCR:str. Transcript showCR:pos.
+ nil].
parseTree isNil ifTrue:[^ #() ].
codeStrings :=
- #(
- 'resources `@msg: `@args'
- 'self resources `@msg: `@args'
- 'self class resources `@msg: `@args'
- 'self class classResources `@msg: `@args'
- 'self classResources `@msg: `@args'
- '`V classResources `@msg: `@args'
- ).
+ #(
+ 'resources `@msg: `@args'
+ 'self resources `@msg: `@args'
+ 'self class resources `@msg: `@args'
+ 'self class classResources `@msg: `@args'
+ 'self classResources `@msg: `@args'
+ '`V classResources `@msg: `@args'
+ ).
resourceKeys := Set new.
matcher := ParseTreeSearcher new.
matcher
- matchesAnyOf: codeStrings
- do: [:aNode :answer |
- |sel keyStringArgNode keyStringArg|
-
- sel := aNode selector.
- ((sel startsWith:'string:') or:[(sel startsWith:'at:') or:[sel startsWith:'stringWithCRs:']]) ifTrue:[
- keyStringArgNode := aNode arguments at:1.
- (keyStringArg := self literalStringOrStringConcatenation:keyStringArgNode) notNil ifTrue:[
- self rememberMethod:aMethod usingKey:keyStringArg.
- resourceKeys add:keyStringArg.
- ] ifFalse:[
- Transcript
- showCR:(resources
- string:'[LanguageTranslator] warning: Cannot derive resourceKey from non-string: %1 in %2'
- with:keyStringArgNode formattedCode
- with:aMethod whoString).
- ].
- ].
- aNode
- ].
+ matchesAnyOf: codeStrings
+ do: [:aNode :answer |
+ |sel keyStringArgNode keyStringArg|
+
+ sel := aNode selector.
+ ((sel startsWith:'string:') or:[(sel startsWith:'at:') or:[sel startsWith:'stringWithCRs:']]) ifTrue:[
+ keyStringArgNode := aNode arguments at:1.
+ (keyStringArg := self literalStringOrStringConcatenation:keyStringArgNode) notNil ifTrue:[
+ self rememberMethod:aMethod usingKey:keyStringArg.
+ resourceKeys add:keyStringArg.
+ ] ifFalse:[
+ Transcript
+ showCR:(resources
+ string:'[LanguageTranslator] warning: Cannot derive resourceKey from non-string: %1 in %2'
+ with:keyStringArgNode formattedCode
+ with:aMethod whoString).
+ ].
+ ].
+ aNode
+ ].
matcher executeTree: parseTree initialAnswer: nil.
^ resourceKeys
@@ -2462,29 +2439,29 @@
columnDescription isNil ifTrue:[ ^ #() ].
(columnDescription first isKindOf:DataSetColumnSpec) ifFalse:[
- columnDescription := columnDescription collect:[:el | DataSetColumnSpec new fromLiteralArrayEncoding:el].
+ columnDescription := columnDescription collect:[:el | DataSetColumnSpec new fromLiteralArrayEncoding:el].
].
resourceKeys := Set new.
columnDescription do:[:aColumnSpec |
- aColumnSpec translateLabel ifTrue:[
- self rememberMethod:aMethod usingKey:aColumnSpec label.
- resourceKeys add:aColumnSpec label.
- ]
+ aColumnSpec translateLabel ifTrue:[
+ self rememberMethod:aMethod usingKey:aColumnSpec label.
+ resourceKeys add:aColumnSpec label.
+ ]
].
^ resourceKeys
!
extractTranslationsFromUISpecMethod:aMethod
"return strings which need translation from a UI-spec method"
-
+
|spec resourceKeys visitor|
spec := aMethod mclass theNonMetaclass perform:aMethod selector.
spec isNil ifTrue:[ ^ #() ].
(spec isKindOf:UISpecification) ifFalse:[
- spec := UISpecification from:spec
+ spec := UISpecification from:spec
].
resourceKeys := Set new.
@@ -2492,38 +2469,38 @@
visitor := UISpecVisitor new.
spec acceptVisitor:visitor.
visitor translatedLabels do:[:each |
- self rememberMethod:aMethod usingKey:each.
+ self rememberMethod:aMethod usingKey:each.
].
^ visitor translatedLabels
!
literalStringOrStringConcatenation:aParseNode
"nil if not a literal or a string concatenation"
-
+
aParseNode isLiteralString ifTrue:[^ aParseNode value].
(aParseNode isMessage and:[aParseNode selector == #,]) ifTrue:[
- |leftString rightString|
-
- aParseNode receiver isLiteralString ifTrue:[
- leftString := aParseNode receiver value
- ] ifFalse:[
- leftString := self literalStringOrStringConcatenation:aParseNode receiver.
- ].
- aParseNode arguments first isLiteralString ifTrue:[
- rightString := aParseNode arguments first value
- ] ifFalse:[
- rightString := self literalStringOrStringConcatenation:aParseNode arguments first.
- ].
- (leftString notNil and:[rightString notNil]) ifTrue:[
- ^ leftString , rightString
- ].
+ |leftString rightString|
+
+ aParseNode receiver isLiteralString ifTrue:[
+ leftString := aParseNode receiver value
+ ] ifFalse:[
+ leftString := self literalStringOrStringConcatenation:aParseNode receiver.
+ ].
+ aParseNode arguments first isLiteralString ifTrue:[
+ rightString := aParseNode arguments first value
+ ] ifFalse:[
+ rightString := self literalStringOrStringConcatenation:aParseNode arguments first.
+ ].
+ (leftString notNil and:[rightString notNil]) ifTrue:[
+ ^ leftString , rightString
+ ].
].
^ nil
!
recordNewTranslation:aString
"called from recorder, when the monitored application does a translation"
-
+
self addAllTranslations:{ aString }
!
@@ -2625,16 +2602,16 @@
printEditingWarningOn: aStream
aStream nextPutAll: ';';
- cr;
- nextPutAll: '; WARNING:';
- cr;
- nextPutAll: '; this file contains national characters.';
- cr;
- nextPutAll: '; DO NOT EDIT this file with an old vi!!';
- cr;
- nextPutAll: ';';
- cr;
- cr.
+ cr;
+ nextPutAll: '; WARNING:';
+ cr;
+ nextPutAll: '; this file contains national characters.';
+ cr;
+ nextPutAll: '; DO NOT EDIT this file with an old vi!!';
+ cr;
+ nextPutAll: ';';
+ cr;
+ cr.
!
printEncoderFor: lang on: aStream
@@ -2670,45 +2647,45 @@
maxKeySize := keyStringsToLanguageMappings maxKeySizeForLanguage: lang.
orderedAssociations do:[:association |
- "use #basicStoreString to avoid implicit utf8Encoding for UnicodeStrings"
- aStream nextPutAll: ((characterEncoder encodeString:association key basicStoreString) paddedTo: maxKeySize) ;
- tab;
- nextPutAll: (characterEncoder encodeString: association value basicStoreString);
- cr.
- ].
+ "use #basicStoreString to avoid implicit utf8Encoding for UnicodeStrings"
+ aStream nextPutAll: ((characterEncoder encodeString:association key basicStoreString) paddedTo: maxKeySize) ;
+ tab;
+ nextPutAll: (characterEncoder encodeString: association value basicStoreString);
+ cr.
+ ].
!
readResourceFile:aFilename asLanguage:lang
|resourcePack inStream lineString encoding decoder sortedKeys remainingKeys|
aFilename exists ifFalse:[
- Dialog information:(resources string:'Language file: "%1" does not exist' with:aFilename baseName).
- ^ self
+ Dialog information:(resources string:'Language file: "%1" does not exist' with:aFilename baseName).
+ ^ self
].
resourcePack := ResourcePack new.
inStream := aFilename readStream.
[inStream atEnd] whileFalse:[
- lineString := inStream nextLine.
- (lineString notEmpty
- and:[ (lineString startsWith:';') not and:[ (lineString startsWith:'"/') not]]) ifTrue:[
- ((lineString startsWith:'#') and:[(lineString startsWith:'#(') not]) ifTrue:[
- lineString := (lineString copyFrom:2) withoutSeparators.
- (lineString startsWith:'encoding ') ifTrue:[
- encoding := ResourcePack extractEncodingFromLine:lineString.
- decoder := CharacterEncoder encoderFor:encoding ifAbsent:nil.
- ].
- ] ifFalse:[
- ResourcePack
- processResourceLine:lineString
- encoding:decoder
- file:aFilename pathName
- printErrorWith:[:msg | Transcript showCR:msg ]
- for:resourcePack
- keepUselessTranslations:true.
- ].
- ].
+ lineString := inStream nextLine.
+ (lineString notEmpty
+ and:[ (lineString startsWith:';') not and:[ (lineString startsWith:'"/') not]]) ifTrue:[
+ ((lineString startsWith:'#') and:[(lineString startsWith:'#(') not]) ifTrue:[
+ lineString := (lineString copyFrom:2) withoutSeparators.
+ (lineString startsWith:'encoding ') ifTrue:[
+ encoding := ResourcePack extractEncodingFromLine:lineString.
+ decoder := CharacterEncoder encoderFor:encoding ifAbsent:nil.
+ ].
+ ] ifFalse:[
+ ResourcePack
+ processResourceLine:lineString
+ encoding:decoder
+ file:aFilename pathName
+ printErrorWith:[:msg | Transcript showCR:msg ]
+ for:resourcePack
+ keepUselessTranslations:true.
+ ].
+ ].
].
inStream close.
@@ -2719,10 +2696,10 @@
keyStringsToLanguageMappings atLanguage: lang putEncoder: decoder.
sortedKeys do:[:k |
- keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false
+ keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false
].
remainingKeys do:[:k |
- keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false
+ keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false
].
keyStringsToLanguageMappings changed.
!
@@ -3067,7 +3044,7 @@
search
"make the searchbox visible"
-
+
self searchBoxVisible value: true.
self updateToolVisibility.
searchTextView takeFocus.
@@ -3121,11 +3098,11 @@
forwardFor:aString
collectedKeys isNil ifTrue:[
- collectedKeys := Set new.
+ collectedKeys := Set new.
].
collectedKeys add:aString.
watchingTranslationEditor notNil ifTrue:[
- watchingTranslationEditor recordNewTranslation:aString.
+ watchingTranslationEditor recordNewTranslation:aString.
].
^ realResourcePack perform:(thisContext sender selector) withArguments:(thisContext sender args).
!
@@ -3240,8 +3217,8 @@
orderedLanguageMappingsAssociationsFor: language
"Returns a collection of languageMappings associations (alphabetically ordered by keys) "
- ^(self atLanguage: language) associations
- asSortedCollection:[:a :b | a key isArray or:[b key isArray or:[a key < b key]]].
+ ^(self atLanguage: language) associations
+ asSortedCollection:[:a :b | a key isArray or:[b key isArray or:[a key < b key]]].
!
perLanguageInfo
@@ -3374,15 +3351,15 @@
similarAssociations:=
(self mappingAtLanguage: language) associationsSelect:[:each |
- |eachKey|
-
- eachKey := eachKey.
- eachKey isString
- and:[(eachKey sameAs: aKey)
- or:[(aKey asUppercase startsWith: eachKey asUppercase)
- or:[((eachKey asUppercase levenshteinTo: aKey asUppercase)/ eachKey size) < 0.3
- ]]]
- and:[each value notEmptyOrNil]
+ |eachKey|
+
+ eachKey := eachKey.
+ eachKey isString
+ and:[(eachKey sameAs: aKey)
+ or:[(aKey asUppercase startsWith: eachKey asUppercase)
+ or:[((eachKey asUppercase levenshteinTo: aKey asUppercase)/ eachKey size) < 0.3
+ ]]]
+ and:[each value notEmptyOrNil]
].
^similarAssociations
! !
@@ -3448,4 +3425,3 @@
version_CVS
^ '$Header$'
! !
-