10 languageShownHolders dataSetView lastExtractedClass |
10 languageShownHolders dataSetView lastExtractedClass |
11 lastExtractedApplicationClass stopApplicationIconVisibleHolder |
11 lastExtractedApplicationClass stopApplicationIconVisibleHolder |
12 monitoredApplication originalTextModifiedHolder |
12 monitoredApplication originalTextModifiedHolder |
13 languageTextModifiedHolder languageTextAcceptHolder |
13 languageTextModifiedHolder languageTextAcceptHolder |
14 inSingleFileMode lastExtractedProject lastLanguage |
14 inSingleFileMode lastExtractedProject lastLanguage |
15 lastSelectedKey autoAccept languageEditor selectedColIndexHolder' |
15 lastSelectedKey autoAcceptHolder languageEditor |
|
16 selectedColIndexHolder exampleLanguageSelectionHolder |
|
17 exampleLanguageTextHolder' |
16 classVariableNames:'LastExtractedClass LastExtractedApplicationClass |
18 classVariableNames:'LastExtractedClass LastExtractedApplicationClass |
17 LastExtractedProject' |
19 LastExtractedProject' |
18 poolDictionaries:'' |
20 poolDictionaries:'' |
19 category:'Interface-UIPainter' |
21 category:'Interface-UIPainter' |
20 ! |
22 ! |
139 columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder |
141 columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder |
140 beDependentOfRows: true |
142 beDependentOfRows: true |
141 columnAdaptor: yourself |
143 columnAdaptor: yourself |
142 postBuildCallback: postBuildDataSet: |
144 postBuildCallback: postBuildDataSet: |
143 ) |
145 ) |
144 (ViewSpec |
146 (VariableVerticalPanelSpec |
145 name: 'Box1' |
147 name: 'VariableVerticalPanel1' |
146 component: |
148 component: |
147 (SpecCollection |
149 (SpecCollection |
148 collection: ( |
150 collection: ( |
149 (LabelSpec |
151 (ViewSpec |
150 label: 'Original String (Key):' |
152 name: 'Box1' |
151 name: 'Label2' |
153 component: |
152 layout: (LayoutFrame 0 0 0 0 0 1 30 0) |
154 (SpecCollection |
153 translateLabel: true |
155 collection: ( |
154 adjust: left |
156 (LabelSpec |
|
157 label: 'Original String (Key):' |
|
158 name: 'Label2' |
|
159 layout: (LayoutFrame 0 0 -2 0 0 1 28 0) |
|
160 translateLabel: true |
|
161 adjust: left |
|
162 ) |
|
163 (TextEditorSpec |
|
164 name: 'OriginalText' |
|
165 layout: (LayoutFrame 0 0 27 0 0 1 -2 1) |
|
166 model: originalTextHolder |
|
167 hasHorizontalScrollBar: true |
|
168 hasVerticalScrollBar: true |
|
169 modifiedChannel: originalTextModifiedHolder |
|
170 acceptCallBack: languageTextAccepted |
|
171 ) |
|
172 ) |
|
173 |
|
174 ) |
155 ) |
175 ) |
156 (TextEditorSpec |
176 (ViewSpec |
157 name: 'OriginalText' |
177 name: 'Box3' |
158 layout: (LayoutFrame 0 0 30 0 0 1 0 1) |
178 component: |
159 model: originalTextHolder |
179 (SpecCollection |
160 hasHorizontalScrollBar: true |
180 collection: ( |
161 hasVerticalScrollBar: true |
181 (LabelSpec |
162 modifiedChannel: originalTextModifiedHolder |
182 label: 'Select Another Traduction as example:' |
|
183 name: 'Label3' |
|
184 layout: (LayoutFrame 0 0 -6 0 0 1 24 0) |
|
185 translateLabel: true |
|
186 adjust: left |
|
187 ) |
|
188 (ComboBoxSpec |
|
189 name: 'ComboBox1' |
|
190 layout: (LayoutFrame 197 0 -2 0 322 0 18 0) |
|
191 model: exampleLanguageSelectionHolder |
|
192 immediateAccept: false |
|
193 acceptOnLeave: true |
|
194 acceptOnLostFocus: true |
|
195 acceptOnPointerLeave: false |
|
196 comboList: shownLanguages |
|
197 useIndex: false |
|
198 ) |
|
199 (TextEditorSpec |
|
200 name: 'ExampleLanguageText' |
|
201 layout: (LayoutFrame 0 0 25 0 611 0 66 0) |
|
202 model: exampleLanguageTextHolder |
|
203 hasHorizontalScrollBar: true |
|
204 hasVerticalScrollBar: true |
|
205 isReadOnly: true |
|
206 ) |
|
207 ) |
|
208 |
|
209 ) |
|
210 ) |
|
211 (ViewSpec |
|
212 name: 'Box2' |
|
213 component: |
|
214 (SpecCollection |
|
215 collection: ( |
|
216 (LabelSpec |
|
217 label: 'Translated String:' |
|
218 name: 'Label1' |
|
219 layout: (LayoutFrame 0 0 0 0 0 1 30 0) |
|
220 translateLabel: true |
|
221 adjust: left |
|
222 ) |
|
223 (TextEditorSpec |
|
224 name: 'LanguageText' |
|
225 layout: (LayoutFrame 0 0 30 0 0 1 0 1) |
|
226 model: languageTextHolder |
|
227 hasHorizontalScrollBar: true |
|
228 hasVerticalScrollBar: true |
|
229 acceptChannel: languageTextAcceptHolder |
|
230 modifiedChannel: languageTextModifiedHolder |
|
231 acceptCallBack: languageTextAccepted |
|
232 postBuildCallback: languageEditorBuilt: |
|
233 ) |
|
234 ) |
|
235 |
|
236 ) |
163 ) |
237 ) |
164 ) |
238 ) |
165 |
239 |
166 ) |
240 ) |
167 ) |
241 handles: (Any 0.33333333333333 0.66666666666667 1.0) |
168 (ViewSpec |
|
169 name: 'Box2' |
|
170 component: |
|
171 (SpecCollection |
|
172 collection: ( |
|
173 (LabelSpec |
|
174 label: 'Translated String:' |
|
175 name: 'Label1' |
|
176 layout: (LayoutFrame 0 0 0 0 0 1 30 0) |
|
177 translateLabel: true |
|
178 adjust: left |
|
179 ) |
|
180 (TextEditorSpec |
|
181 name: 'LanguageText' |
|
182 layout: (LayoutFrame 0 0 30 0 0 1 0 1) |
|
183 model: languageTextHolder |
|
184 hasHorizontalScrollBar: true |
|
185 hasVerticalScrollBar: true |
|
186 acceptChannel: languageTextAcceptHolder |
|
187 modifiedChannel: languageTextModifiedHolder |
|
188 postBuildCallback: languageEditorBuilt: |
|
189 ) |
|
190 ) |
|
191 |
|
192 ) |
|
193 ) |
242 ) |
194 ) |
243 ) |
195 |
244 |
196 ) |
245 ) |
197 handles: (Any 0.33333333333333 0.66666666666667 1.0) |
246 handles: (Any 0.5 1.0) |
198 ) |
247 ) |
199 ) |
248 ) |
200 |
249 |
201 ) |
250 ) |
202 ) |
251 ) |
487 ) |
552 ) |
488 ! ! |
553 ! ! |
489 |
554 |
490 !InternationalLanguageTranslationEditor methodsFor:'accessing'! |
555 !InternationalLanguageTranslationEditor methodsFor:'accessing'! |
491 |
556 |
492 autoAccept |
|
493 autoAccept isNil ifTrue:[autoAccept := true]. |
|
494 ^ autoAccept |
|
495 ! |
|
496 |
|
497 autoAccept:something |
|
498 autoAccept := something. |
|
499 ! |
|
500 |
|
501 newLanguageText |
557 newLanguageText |
502 "/ languageEditor accept |
558 "/ languageEditor accept |
503 ^self languageTextHolder value isNil |
559 ^self languageTextHolder value isNil |
504 ifTrue:[''] |
560 ifTrue:[''] |
505 ifFalse:[self languageTextHolder value asCollectionOfLines first.] |
561 ifFalse:[self languageTextHolder value asCollectionOfLines first.] |
|
562 ! |
|
563 |
|
564 selectedKey |
|
565 "Returns the current selected key if there is one row seleted. Otherwise, returns nil" |
|
566 |rowSelectionIndex | |
|
567 |
|
568 rowSelectionIndex := self selectedKeyRow value. |
|
569 rowSelectionIndex == 0 ifTrue:[^nil]. |
|
570 ^ keyStringsToLanguageMappings keyAt:rowSelectionIndex. |
506 ! ! |
571 ! ! |
507 |
572 |
508 !InternationalLanguageTranslationEditor methodsFor:'aspects'! |
573 !InternationalLanguageTranslationEditor methodsFor:'aspects'! |
|
574 |
|
575 autoAcceptHolder |
|
576 autoAcceptHolder isNil ifTrue:[autoAcceptHolder := true asValue]. |
|
577 ^ autoAcceptHolder |
|
578 ! |
|
579 |
|
580 exampleLanguageSelectionHolder |
|
581 exampleLanguageSelectionHolder isNil ifTrue:[ |
|
582 exampleLanguageSelectionHolder := self exampleLanguageByDefault asValue. |
|
583 exampleLanguageSelectionHolder addDependent:self. |
|
584 ]. |
|
585 ^ exampleLanguageSelectionHolder |
|
586 ! |
|
587 |
|
588 exampleLanguageTextHolder |
|
589 exampleLanguageTextHolder isNil ifTrue:[ |
|
590 exampleLanguageTextHolder := '' asValue. |
|
591 ]. |
|
592 ^ exampleLanguageTextHolder. |
|
593 ! |
509 |
594 |
510 keyStringAndLanguageSelectionTable |
595 keyStringAndLanguageSelectionTable |
511 keyStringsToLanguageMappings isNil ifTrue:[ |
596 keyStringsToLanguageMappings isNil ifTrue:[ |
512 keyStringsToLanguageMappings := KeyStringsToLanguageMappings new. |
597 keyStringsToLanguageMappings := KeyStringsToLanguageMappings new. |
513 ]. |
598 ]. |
626 stopApplicationIconVisibleHolder |
709 stopApplicationIconVisibleHolder |
627 stopApplicationIconVisibleHolder isNil ifTrue:[ |
710 stopApplicationIconVisibleHolder isNil ifTrue:[ |
628 stopApplicationIconVisibleHolder := false asValue. |
711 stopApplicationIconVisibleHolder := false asValue. |
629 ]. |
712 ]. |
630 ^ stopApplicationIconVisibleHolder. |
713 ^ stopApplicationIconVisibleHolder. |
631 ! |
|
632 |
|
633 updateLanguageAndKeySelection |
|
634 |
|
635 |rowSelectionIndex colSelectionIndex language selectedKey originalText languageText| |
|
636 |
|
637 colSelectionIndex := dataSetView selectedColIndex. |
|
638 language := colSelectionIndex > 1 ifTrue:[ shownLanguages at:colSelectionIndex-1 ] ifFalse:nil. |
|
639 |
|
640 rowSelectionIndex := self selectedKeyRow value. |
|
641 rowSelectionIndex ~~ 0 ifTrue:[ |
|
642 selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex. |
|
643 originalText := selectedKey storeString. |
|
644 language notNil ifTrue:[ |
|
645 languageText := keyStringsToLanguageMappings at:selectedKey language:language. |
|
646 languageText notNil ifTrue:[ |
|
647 languageText := languageText storeString. |
|
648 ] |
|
649 ] |
|
650 ]. |
|
651 self originalTextHolder value:originalText. |
|
652 self languageTextHolder value:languageText. |
|
653 lastLanguage := language. |
|
654 lastSelectedKey := selectedKey. |
|
655 ! ! |
714 ! ! |
656 |
715 |
657 !InternationalLanguageTranslationEditor methodsFor:'change & update'! |
716 !InternationalLanguageTranslationEditor methodsFor:'change & update'! |
658 |
717 |
659 update:something with:aParameter from:changedObject |
718 update:something with:aParameter from:changedObject |
663 ]. |
722 ]. |
664 changedObject == languageTextAcceptHolder ifTrue:[ |
723 changedObject == languageTextAcceptHolder ifTrue:[ |
665 self updateLanguageTextModification. |
724 self updateLanguageTextModification. |
666 ^ self. |
725 ^ self. |
667 ]. |
726 ]. |
|
727 changedObject == exampleLanguageSelectionHolder ifTrue:[ |
|
728 self updateExampleLanguageText. |
|
729 ^ self. |
|
730 ]. |
|
731 ! |
|
732 |
|
733 updateExampleLanguageText |
|
734 |
|
735 self selectedKeyRow value isNil ifTrue:[^ self]. |
|
736 self exampleLanguageTextHolder value:self currentExampleLanguageText |
668 ! |
737 ! |
669 |
738 |
670 updateKeyStringsToLanguageMappings |
739 updateKeyStringsToLanguageMappings |
671 |
740 |
672 keyStringsToLanguageMappings |
741 keyStringsToLanguageMappings |
673 at:lastSelectedKey |
742 at:lastSelectedKey |
674 language:lastLanguage |
743 language:lastLanguage |
675 put: self newLanguageText. |
744 put: self newLanguageText. |
|
745 ! |
|
746 |
|
747 updateLanguageAndKeySelection |
|
748 |
|
749 |colSelectionIndex language| |
|
750 |
|
751 colSelectionIndex := dataSetView selectedColIndex. |
|
752 language := colSelectionIndex > 1 ifTrue:[ shownLanguages at:colSelectionIndex-1 ] ifFalse:nil. |
|
753 |
|
754 self originalTextHolder value: self selectedKey. |
|
755 self languageTextHolder value: (self languageTextFromSelectedKeyFor: language). |
|
756 lastLanguage := language. |
|
757 lastSelectedKey := self selectedKey. |
676 ! |
758 ! |
677 |
759 |
678 updateLanguageTextModification |
760 updateLanguageTextModification |
679 self languageTextModifiedHolder value ifTrue:[ |
761 self languageTextModifiedHolder value ifTrue:[ |
680 (self autoAccept or:[Dialog confirm:'Accept changed translation ?']) ifTrue:[ |
762 (self autoAccept or:[Dialog confirm:'Accept changed translation ?']) ifTrue:[ |
827 self shownLanguages contents:self keyStringAndLanguageSelectionTable languages. |
936 self shownLanguages contents:self keyStringAndLanguageSelectionTable languages. |
828 modified := false. |
937 modified := false. |
829 ! |
938 ! |
830 |
939 |
831 menuOpen |
940 menuOpen |
832 |fn| |
941 |aFilename| |
833 |
942 |
834 fn := Dialog |
943 aFilename := self requestFilename. |
835 requestFileName:'Name of resource file:' |
944 aFilename isNil ifTrue:[^ self ]. |
836 default:nil |
945 self readResourceFile:aFilename |
837 pattern:'*.rs'. |
|
838 |
|
839 fn isEmptyOrNil ifTrue:[^ self ]. |
|
840 fn := fn asFilename. |
|
841 fn exists ifFalse:[^ self ]. |
|
842 |
|
843 self readResourceFile:fn |
|
844 ! |
946 ! |
845 |
947 |
846 menuSave |
948 menuSave |
847 "This method was generated by the Browser. |
949 "Saves the language selected in the fileName from where the language resource was obtained." |
848 It will be invoked when the menu-item 'save' is selected." |
950 |lang aFilename| |
849 |
951 |
850 "/ change below and add any actions as required here ... |
952 lang := self requestLanguage. |
851 self warn:'no action for ''save'' available.'. |
953 lang isNil ifTrue:[^ self]. |
|
954 aFilename := keyStringsToLanguageMappings filenameAt:lang. |
|
955 aFilename isNil ifTrue:[ |
|
956 aFilename := self requestFilename. |
|
957 aFilename isNil ifTrue:[^ self]. |
|
958 ]. |
|
959 self saveResourceFile:aFilename for:lang asSymbol |
852 ! |
960 ! |
853 |
961 |
854 menuSaveAs |
962 menuSaveAs |
855 "This method was generated by the Browser. |
963 "Saves the language selected in the specified fileName." |
856 It will be invoked when the menu-item 'saveAs' is selected." |
964 |lang aFilename| |
857 |
965 |
858 "/ change below and add any actions as required here ... |
966 lang := self requestLanguage. |
859 self warn:'no action for ''saveAs'' available.'. |
967 lang isNil ifTrue:[^ self]. |
|
968 aFilename := self requestFilename. |
|
969 aFilename isNil ifTrue:[^ self]. |
|
970 self saveResourceFile:aFilename for:lang asSymbol |
860 ! |
971 ! |
861 |
972 |
862 openAboutThisApplication |
973 openAboutThisApplication |
863 "This method was generated by the Browser. |
974 "This method was generated by the Browser. |
864 It will be invoked when the menu-item 'help-about' is selected." |
975 It will be invoked when the menu-item 'help-about' is selected." |
888 lang isNil ifTrue:[^ self ]. |
999 lang isNil ifTrue:[^ self ]. |
889 |
1000 |
890 self readResourceFile:aFilename asLanguage:lang asSymbol |
1001 self readResourceFile:aFilename asLanguage:lang asSymbol |
891 ! |
1002 ! |
892 |
1003 |
893 readResourceFile:aFilename asLanguage:lang |
|
894 |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys| |
|
895 |
|
896 aFilename exists ifFalse:[^ self ]. |
|
897 |
|
898 resourcePack := ResourcePack new. |
|
899 |
|
900 inStream := aFilename readStream. |
|
901 [inStream atEnd] whileFalse:[ |
|
902 lineString := inStream nextLine. |
|
903 (lineString notEmpty |
|
904 and:[ (lineString startsWith:';') not ]) ifTrue:[ |
|
905 ((lineString startsWith:'#') and:[(lineString startsWith:'#(') not]) ifTrue:[ |
|
906 lineString := (lineString copyFrom:2) withoutSeparators. |
|
907 (lineString startsWith:'encoding ') ifTrue:[ |
|
908 encoding := ResourcePack extractEncodingFromLine:lineString. |
|
909 decoder := CharacterEncoder encoderFor:encoding ifAbsent:nil. |
|
910 ]. |
|
911 ] ifFalse:[ |
|
912 ResourcePack |
|
913 processResourceLine:lineString |
|
914 encoding:decoder |
|
915 file:aFilename pathName |
|
916 printErrorWith:[:msg | Transcript showCR:msg ] |
|
917 for:resourcePack |
|
918 keepUselessTranslations:true. |
|
919 ]. |
|
920 ]. |
|
921 ]. |
|
922 inStream close. |
|
923 |
|
924 sortedKeys := (resourcePack keys select:[:k | k isString]) asSortedCollection. |
|
925 remainingKeys := resourcePack keys select:[:k | k isString not]. |
|
926 |
|
927 sortedKeys do:[:k | |
|
928 keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) |
|
929 ]. |
|
930 remainingKeys do:[:k | |
|
931 keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) |
|
932 ]. |
|
933 ! |
|
934 |
|
935 removeLanguage |
1004 removeLanguage |
936 "automatically generated by UIEditor ..." |
1005 |lang| |
937 |
1006 |
938 "*** the code below performs no action" |
1007 lang := Dialog choose:'Which language do you want to remove?' fromList:languagesList lines:10. |
939 "*** (except for some feedback on the Transcript)" |
1008 lang isNil ifTrue:[^ self ]. |
940 "*** Please change as required and accept in the browser." |
1009 (Dialog confirm: 'Are you sure to remove the language ', lang ) ifTrue:[ |
941 "*** (and replace this comment by something more useful ;-)" |
1010 self languagesList remove:lang. |
942 |
1011 self shownLanguages remove:lang. |
943 "action to be added ..." |
1012 ]. |
944 |
|
945 Transcript showCR:self class name, ': action for #removeLanguage ...'. |
|
946 ! |
1013 ! |
947 |
1014 |
948 removeTranslation |
1015 removeTranslation |
949 |rowSelectionIndex selectedKey| |
1016 |rowSelectionIndex selectedKey| |
950 |
1017 |
1309 ^ visitor translatedLabels |
1376 ^ visitor translatedLabels |
1310 ! ! |
1377 ! ! |
1311 |
1378 |
1312 !InternationalLanguageTranslationEditor methodsFor:'queries'! |
1379 !InternationalLanguageTranslationEditor methodsFor:'queries'! |
1313 |
1380 |
|
1381 autoAccept |
|
1382 |
|
1383 ^ self autoAcceptHolder value |
|
1384 ! |
|
1385 |
|
1386 currentExampleLanguageText |
|
1387 "Returns the language text corresponding for the current selected key and the example language selection" |
|
1388 |
|
1389 ^self languageTextFromSelectedKeyFor: self exampleLanguageSelectionHolder value |
|
1390 ! |
|
1391 |
|
1392 exampleLanguageByDefault |
|
1393 |
|
1394 ^self shownLanguages isEmpty |
|
1395 ifTrue:[nil] |
|
1396 ifFalse:[self shownLanguages first] |
|
1397 ! |
|
1398 |
1314 hasUnsavedChanges |
1399 hasUnsavedChanges |
1315 ^ modified |
1400 ^ modified |
|
1401 ! |
|
1402 |
|
1403 languageTextFromSelectedKeyFor: language |
|
1404 "Returns the language text corresponding for the current selected key and the received language" |
|
1405 |
|
1406 language isNil ifTrue:[^'']. |
|
1407 ^keyStringsToLanguageMappings at: self selectedKey language:language. |
|
1408 ! ! |
|
1409 |
|
1410 !InternationalLanguageTranslationEditor methodsFor:'read/write resourceFile'! |
|
1411 |
|
1412 printEditingWarningOn: aStream |
|
1413 |
|
1414 aStream nextPutAll: ';'; |
|
1415 cr; |
|
1416 nextPutAll: '; WARNING:'; |
|
1417 cr; |
|
1418 nextPutAll: '; this file contains national characters'; |
|
1419 cr; |
|
1420 nextPutAll: '; DONT EDIT this file with an old vi !!'; |
|
1421 cr; |
|
1422 nextPutAll: ';'; |
|
1423 cr. |
|
1424 ! |
|
1425 |
|
1426 printEncoderFor: lang on: aStream |
|
1427 |characterEncoder encoderString| |
|
1428 |
|
1429 characterEncoder := keyStringsToLanguageMappings encoderAt: lang. |
|
1430 encoderString := characterEncoder isNil |
|
1431 ifTrue:[self requestEncoderString] |
|
1432 ifFalse:[characterEncoder nameOfEncoding printString]. |
|
1433 |
|
1434 aStream nextPutAll: '#encoding'; |
|
1435 space; |
|
1436 nextPutAll: encoderString; |
|
1437 cr; |
|
1438 cr. |
|
1439 ! |
|
1440 |
|
1441 printLanguage: lang on: aStream |
|
1442 |
|
1443 self printEncoderFor: lang on: aStream. |
|
1444 self printEditingWarningOn: aStream. |
|
1445 self printLanguageMappingsFor: lang on: aStream. |
|
1446 ! |
|
1447 |
|
1448 printLanguageMappingsFor: lang on: aStream |
|
1449 |
|
1450 |languageMappings maxKeySize| |
|
1451 |
|
1452 languageMappings := keyStringsToLanguageMappings atLanguage: lang. |
|
1453 |
|
1454 maxKeySize := keyStringsToLanguageMappings maxKeySizeForLanguage: lang. |
|
1455 maxKeySize := maxKeySize + 10. "adds the separator between key and value" |
|
1456 |
|
1457 languageMappings keysAndValuesDo:[:key :value | |
|
1458 aStream nextPutAll: (key storeString paddedTo: maxKeySize) ; |
|
1459 nextPutAll: value storeString; |
|
1460 cr. |
|
1461 ]. |
|
1462 ! |
|
1463 |
|
1464 readResourceFile:aFilename asLanguage:lang |
|
1465 |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys| |
|
1466 |
|
1467 aFilename exists ifFalse:[^ self ]. |
|
1468 |
|
1469 resourcePack := ResourcePack new. |
|
1470 |
|
1471 inStream := aFilename readStream. |
|
1472 [inStream atEnd] whileFalse:[ |
|
1473 lineString := inStream nextLine. |
|
1474 (lineString notEmpty |
|
1475 and:[ (lineString startsWith:';') not ]) ifTrue:[ |
|
1476 ((lineString startsWith:'#') and:[(lineString startsWith:'#(') not]) ifTrue:[ |
|
1477 lineString := (lineString copyFrom:2) withoutSeparators. |
|
1478 (lineString startsWith:'encoding ') ifTrue:[ |
|
1479 encoding := ResourcePack extractEncodingFromLine:lineString. |
|
1480 decoder := CharacterEncoder encoderFor:encoding ifAbsent:nil. |
|
1481 ]. |
|
1482 ] ifFalse:[ |
|
1483 ResourcePack |
|
1484 processResourceLine:lineString |
|
1485 encoding:decoder |
|
1486 file:aFilename pathName |
|
1487 printErrorWith:[:msg | Transcript showCR:msg ] |
|
1488 for:resourcePack |
|
1489 keepUselessTranslations:true. |
|
1490 ]. |
|
1491 ]. |
|
1492 ]. |
|
1493 inStream close. |
|
1494 |
|
1495 sortedKeys := (resourcePack keys select:[:k | k isString]) asSortedCollection. |
|
1496 remainingKeys := resourcePack keys select:[:k | k isString not]. |
|
1497 |
|
1498 keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename. |
|
1499 keyStringsToLanguageMappings atLanguage: lang putEncoder: decoder. |
|
1500 |
|
1501 sortedKeys do:[:k | |
|
1502 keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) |
|
1503 ]. |
|
1504 remainingKeys do:[:k | |
|
1505 keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) |
|
1506 ]. |
|
1507 ! |
|
1508 |
|
1509 saveResourceFile: aFilename for: lang |
|
1510 |
|
1511 |aStream | |
|
1512 |
|
1513 aStream := FileStream fileNamed: aFilename. |
|
1514 self printLanguage: lang on: aStream. |
|
1515 aStream flush; |
|
1516 close. |
|
1517 DialogBox information: 'The resource file for the language ', lang printString storeString, ' was saved in the file: ', aFilename nameString |
1316 ! ! |
1518 ! ! |
1317 |
1519 |
1318 !InternationalLanguageTranslationEditor methodsFor:'specs-dynamic'! |
1520 !InternationalLanguageTranslationEditor methodsFor:'specs-dynamic'! |
1319 |
1521 |
1320 columnInRow:row at:colIndex |
1522 columnInRow:row at:colIndex |