Tools__InternationalLanguageTranslationEditor.st
changeset 2410 a3b53393dcf3
parent 2330 58ace5744c59
child 2413 655f1c52504c
equal deleted inserted replaced
2409:dbe69bb84c18 2410:a3b53393dcf3
    20 		closeSearchBar searchTextModifiedHolder searchNextText
    20 		closeSearchBar searchTextModifiedHolder searchNextText
    21 		searchBarImageInfoLabelHolder searchPreviousText searchBoxVisible
    21 		searchBarImageInfoLabelHolder searchPreviousText searchBoxVisible
    22 		searchBarInfoLabelHolder searchTextHolder searchTextView
    22 		searchBarInfoLabelHolder searchTextHolder searchTextView
    23 		searchBoxView translationsPanel lastPackage'
    23 		searchBoxView translationsPanel lastPackage'
    24 	classVariableNames:'LastExtractedClass LastExtractedApplicationClass
    24 	classVariableNames:'LastExtractedClass LastExtractedApplicationClass
    25 		LastExtractedProject'
    25 		LastExtractedProject LastProject'
    26 	poolDictionaries:''
    26 	poolDictionaries:''
    27 	category:'Interface-UIPainter'
    27 	category:'Interface-UIPainter'
    28 !
    28 !
    29 
    29 
    30 Object subclass:#AccessCollectingPseudoResourcePack
    30 Object subclass:#AccessCollectingPseudoResourcePack
   623                 )
   623                 )
   624                (MenuItem
   624                (MenuItem
   625                   label: '-'
   625                   label: '-'
   626                 )
   626                 )
   627                (MenuItem
   627                (MenuItem
       
   628                   label: 'Open Resources for Package or Project...'
       
   629                   itemValue: menuOpenByPackage
       
   630                   translateLabel: true
       
   631                 )
       
   632                (MenuItem
   628                   label: 'Open Resource File...'
   633                   label: 'Open Resource File...'
   629                   itemValue: menuOpen
   634                   itemValue: menuOpen
   630                   translateLabel: true
   635                   translateLabel: true
   631                 )
   636                 )
   632                (MenuItem
   637                (MenuItem
   649                 )
   654                 )
   650                (MenuItem
   655                (MenuItem
   651                   label: '-'
   656                   label: '-'
   652                 )
   657                 )
   653                (MenuItem
   658                (MenuItem
   654                   label: 'Import existing tranlations from file...'
   659                   label: 'Import existing translations from file...'
   655                   itemValue: importExistingTranslationsFromFile
   660                   itemValue: importExistingTranslationsFromFile
   656                   translateLabel: true
   661                   translateLabel: true
   657                 )
   662                 )
   658                (MenuItem
   663                (MenuItem
   659                   label: '-'
   664                   label: '-'
  1425 requestFilename  
  1430 requestFilename  
  1426 
  1431 
  1427     |aFilename|
  1432     |aFilename|
  1428 
  1433 
  1429     aFilename := Dialog 
  1434     aFilename := Dialog 
  1430         requestFileName:'Name of resource file:'
  1435         requestFileName:(resources string:'Name of resource file:')
  1431         default:nil 
  1436         default:nil 
  1432         pattern:'*.rs'.
  1437         pattern:'*.rs'.
  1433 
  1438 
  1434     aFilename isEmptyOrNil ifTrue:[^ nil ].
  1439     aFilename isEmptyOrNil ifTrue:[^ nil ].
  1435     ^aFilename asFilename
  1440     ^aFilename asFilename
  1438 requestFilenameFor: lang  
  1443 requestFilenameFor: lang  
  1439   "Returns a filename to save the language resource and updates the language's info"
  1444   "Returns a filename to save the language resource and updates the language's info"
  1440     |aFilename|
  1445     |aFilename|
  1441 
  1446 
  1442     aFilename := Dialog 
  1447     aFilename := Dialog 
  1443         requestFileName:'Name of resource file to save ', lang asString, ' :'
  1448         requestFileName:(resources string:'Name of resource file to save %1:' with:lang asString)
  1444         default:nil 
  1449         default:nil 
  1445         pattern:'*.rs'.
  1450         pattern:'*.rs'.
  1446 
  1451 
  1447     aFilename isEmptyOrNil ifTrue:[^ nil ].
  1452     aFilename isEmptyOrNil ifTrue:[^ nil ].
  1448     keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
  1453     keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
  1449     ^aFilename asFilename
  1454     ^aFilename asFilename
  1450 !
  1455 !
  1451 
  1456 
  1452 requestLanguage
  1457 requestLanguage
  1453 
  1458     ^ Dialog 
  1454     ^ Dialog choose:'For which language ?' fromList:languagesList lines:10.
  1459         choose:(resources string:'For which language ?') 
       
  1460         fromList:languagesList 
       
  1461         lines:10.
  1455 !
  1462 !
  1456 
  1463 
  1457 requestLanguageToSave
  1464 requestLanguageToSave
  1458     ^ Dialog 
  1465     ^ Dialog 
  1459         choose:'Which language do you want to save?'
  1466         choose:'Which language do you want to save?'
  1460         fromList:languagesList
  1467         fromList:languagesList
  1461         lines:10
  1468         lines:10
       
  1469 !
       
  1470 
       
  1471 requestPackage
       
  1472     |package|
       
  1473 
       
  1474     package := Dialog
       
  1475         requestProject:(resources string:'Name of Package:') 
       
  1476         initialAnswer:LastProject 
       
  1477         suggestions:nil.
       
  1478 
       
  1479     package isEmptyOrNil ifTrue:[^ nil ].
       
  1480     LastProject := package.
       
  1481     ^ package
  1462 ! !
  1482 ! !
  1463 
  1483 
  1464 !InternationalLanguageTranslationEditor methodsFor:'images'!
  1484 !InternationalLanguageTranslationEditor methodsFor:'images'!
  1465 
  1485 
  1466 restartSearchBarIcon
  1486 restartSearchBarIcon
  1534 !InternationalLanguageTranslationEditor methodsFor:'menu actions'!
  1554 !InternationalLanguageTranslationEditor methodsFor:'menu actions'!
  1535 
  1555 
  1536 addLanguage
  1556 addLanguage
  1537     |lang|
  1557     |lang|
  1538 
  1558 
  1539     lang := Dialog request:'New language (ISO symbol):'.
  1559     lang := Dialog request:(resources string:'New language (ISO symbol):').
  1540     lang isEmptyOrNil ifTrue:[^ self].
  1560     lang isEmptyOrNil ifTrue:[^ self].
  1541     lang := lang asSymbol.
  1561     self addLanguage:lang
       
  1562 !
       
  1563 
       
  1564 addLanguage:langArg
       
  1565     |lang|
       
  1566 
       
  1567     lang := langArg asSymbol.
  1542     (keyStringsToLanguageMappings includesLanguage:lang) ifTrue:[^ self ].
  1568     (keyStringsToLanguageMappings includesLanguage:lang) ifTrue:[^ self ].
  1543 
  1569 
  1544     keyStringsToLanguageMappings addLanguage:lang.
  1570     keyStringsToLanguageMappings addLanguage:lang.
  1545     self languagesList add:lang.
  1571     self languagesList add:lang.
  1546     self shownLanguages add:lang.
  1572     self shownLanguages add:lang.
  1582     package := Dialog
  1608     package := Dialog
  1583             requestProject:'Package:'
  1609             requestProject:'Package:'
  1584             initialAnswer:defaultPackage 
  1610             initialAnswer:defaultPackage 
  1585             suggestions:#('foo' 'bar' 'baz').
  1611             suggestions:#('foo' 'bar' 'baz').
  1586     package isNil ifTrue:[
  1612     package isNil ifTrue:[
  1587         ^Dialog information:(resources string:'No such package exists.') 
  1613         ^ self "/ Dialog information:(resources string:'No such package exists.') 
  1588     ].
  1614     ].
  1589     lastPackage := package.
  1615     lastPackage := package.
  1590 !
  1616 !
  1591 
  1617 
  1592 extractTranslationsFromClass
  1618 extractTranslationsFromClass
  1648 
  1674 
  1649     self addAllTranslations:newTranslations.
  1675     self addAllTranslations:newTranslations.
  1650 !
  1676 !
  1651 
  1677 
  1652 importExistingTranslationsFromFile
  1678 importExistingTranslationsFromFile
       
  1679     self information:'The import function is not available in this release'.
  1653 !
  1680 !
  1654 
  1681 
  1655 inspectCanvasMissingStrings
  1682 inspectCanvasMissingStrings
  1656 
  1683 
  1657     |spec nameSpace missingStrings|
  1684     |spec nameSpace missingStrings|
  1704         aFilename isNil ifTrue:[^ self ].
  1731         aFilename isNil ifTrue:[^ self ].
  1705         self readResourceFile:aFilename.
  1732         self readResourceFile:aFilename.
  1706     ]
  1733     ]
  1707 !
  1734 !
  1708 
  1735 
       
  1736 menuOpenByPackage
       
  1737     |package|
       
  1738 
       
  1739     self withWaitCursorDo:[
       
  1740         package := self requestPackage.
       
  1741         package isNil ifTrue:[^ self ].
       
  1742         self readResourceFileForPackage:package.
       
  1743     ]
       
  1744 !
       
  1745 
  1709 menuSave
  1746 menuSave
  1710 "Saves the language selected in the fileName from where the language resource was obtained."
  1747 "Saves the language selected in the fileName from where the language resource was obtained."
  1711     |lang|
  1748     |lang|
  1712 
  1749 
  1713     lang := self requestLanguageToSave.
  1750     lang := self requestLanguageToSave.
  1758 
  1795 
  1759     lang := self requestLanguage.
  1796     lang := self requestLanguage.
  1760     lang isNil ifTrue:[^ self ].
  1797     lang isNil ifTrue:[^ self ].
  1761 
  1798 
  1762     self readResourceFile:aFilename asLanguage:lang asSymbol
  1799     self readResourceFile:aFilename asLanguage:lang asSymbol
       
  1800 !
       
  1801 
       
  1802 readResourceFileForPackage:aPackage
       
  1803     |allLanguages lang packageDir resourceDir langFile|
       
  1804 
       
  1805     packageDir := Smalltalk packageDirectoryForPackageId:aPackage.
       
  1806     resourceDir := packageDir asFilename construct:'resources'.
       
  1807 
       
  1808     allLanguages := Set new.
       
  1809     resourceDir directoryContentsAsFilenamesDo:[:eachFile |
       
  1810         eachFile suffix = 'rs' ifTrue:[
       
  1811             (('##.rs' match:eachFile baseName)
       
  1812             or:[('##-##.rs' match:eachFile baseName)]) ifTrue:[
       
  1813                 allLanguages add:(eachFile withoutSuffix baseName)
       
  1814             ].
       
  1815         ].
       
  1816     ].
       
  1817 
       
  1818     allLanguages addAll:languagesList.
       
  1819     allLanguages := allLanguages asSortedCollection.
       
  1820 
       
  1821     lang := Dialog 
       
  1822         choose:(resources string:'For which language ?')
       
  1823         fromList:allLanguages 
       
  1824         values:allLanguages 
       
  1825         buttons:(resources array:#('All')) 
       
  1826         values:#(all) 
       
  1827         lines:10 
       
  1828         cancel:nil.
       
  1829 
       
  1830     lang isNil ifTrue:[^ self ].
       
  1831 
       
  1832     langFile := resourceDir construct:lang,'.rs'.
       
  1833 
       
  1834     lang == #all ifTrue:[
       
  1835         allLanguages do:[:lang |
       
  1836             self addLanguage:lang.
       
  1837             self readResourceFile:(resourceDir construct:lang,'.rs') asLanguage:lang.
       
  1838         ].
       
  1839     ] ifFalse:[
       
  1840         self readResourceFile:langFile asLanguage:lang asSymbol
       
  1841     ].
  1763 !
  1842 !
  1764 
  1843 
  1765 removeLanguage
  1844 removeLanguage
  1766     |lang|
  1845     |lang|
  1767 
  1846 
  2338 !
  2417 !
  2339 
  2418 
  2340 readResourceFile:aFilename asLanguage:lang
  2419 readResourceFile:aFilename asLanguage:lang
  2341     |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys|
  2420     |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys|
  2342 
  2421 
  2343     aFilename exists ifFalse:[^ self ].
  2422     aFilename exists ifFalse:[
       
  2423         Dialog information:(resources string:'Language file: "%1" does not exist' with:aFilename baseName).
       
  2424         ^ self 
       
  2425     ].
  2344 
  2426 
  2345     resourcePack := ResourcePack new.
  2427     resourcePack := ResourcePack new.
  2346 
  2428 
  2347     inStream := aFilename readStream.
  2429     inStream := aFilename readStream.
  2348     [inStream atEnd] whileFalse:[
  2430     [inStream atEnd] whileFalse:[
  2370 
  2452 
  2371     sortedKeys := (resourcePack keys select:[:k | k isString]) asSortedCollection.
  2453     sortedKeys := (resourcePack keys select:[:k | k isString]) asSortedCollection.
  2372     remainingKeys := resourcePack keys select:[:k | k isString not].
  2454     remainingKeys := resourcePack keys select:[:k | k isString not].
  2373 
  2455 
  2374     keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
  2456     keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
  2375     keyStringsToLanguageMappings  atLanguage: lang putEncoder: decoder.
  2457     keyStringsToLanguageMappings atLanguage: lang putEncoder: decoder.
  2376 
  2458 
  2377     sortedKeys do:[:k |
  2459     sortedKeys do:[:k |
  2378         keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k)
  2460         keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false
  2379     ].
  2461     ].
  2380     remainingKeys do:[:k |
  2462     remainingKeys do:[:k |
  2381         keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k)
  2463         keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false
  2382     ].
  2464     ].
       
  2465     keyStringsToLanguageMappings changed.
  2383 !
  2466 !
  2384 
  2467 
  2385 saveLanguage: lang
  2468 saveLanguage: lang
  2386 "Saves the language in the fileName from where the language resource was obtained."
  2469 "Saves the language in the fileName from where the language resource was obtained."
  2387     |aFilename|
  2470     |aFilename|
  2770 ! !
  2853 ! !
  2771 
  2854 
  2772 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'accessing'!
  2855 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'accessing'!
  2773 
  2856 
  2774 addKey:aKey
  2857 addKey:aKey
       
  2858     self addKey:aKey sendChange:true
       
  2859 !
       
  2860 
       
  2861 addKey:aKey sendChange:aBoolean
  2775     (keys includes:aKey) ifFalse:[
  2862     (keys includes:aKey) ifFalse:[
  2776         keys add:aKey.
  2863         keys add:aKey.
  2777         self changed.
  2864         aBoolean ifTrue:[ self changed ].
  2778     ]
  2865     ]
  2779 !
  2866 !
  2780 
  2867 
  2781 addKeys:aCollectionOfKey
  2868 addKeys:aCollectionOfKey
  2782     keys addAll:aCollectionOfKey.
  2869     keys addAll:aCollectionOfKey.
  2794     ^ (perLanguageMappings at:language) at:aKey ifAbsent:nil
  2881     ^ (perLanguageMappings at:language) at:aKey ifAbsent:nil
  2795 !
  2882 !
  2796 
  2883 
  2797 at:aKey language:language put:value
  2884 at:aKey language:language put:value
  2798     self addKey:aKey.
  2885     self addKey:aKey.
       
  2886     (perLanguageMappings at:language) at:aKey put:value.
       
  2887     (self rowForKey:aKey) changed
       
  2888 !
       
  2889 
       
  2890 at:aKey language:language put:value sendChange:sendChange
       
  2891     self addKey:aKey sendChange:sendChange.
  2799     (perLanguageMappings at:language) at:aKey put:value.
  2892     (perLanguageMappings at:language) at:aKey put:value.
  2800     (self rowForKey:aKey) changed
  2893     (self rowForKey:aKey) changed
  2801 !
  2894 !
  2802 
  2895 
  2803 atLanguage: lang putEncoder: aDecoder
  2896 atLanguage: lang putEncoder: aDecoder