[squeak-dev] The Trunk: GetText-mt.50.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Mar 10 14:18:32 UTC 2022


Marcel Taeumel uploaded a new version of GetText to project The Trunk:
http://source.squeak.org/trunk/GetText-mt.50.mcz

==================== Summary ====================

Name: GetText-mt.50
Author: mt
Time: 10 March 2022, 3:18:32.379178 pm
UUID: f38bb552-24cb-2443-abc9-e8aad71305d3
Ancestors: GetText-mt.49

Locale clean-up. Complements Multilingual-mt.269 and System-mt.1318

=============== Diff against GetText-mt.49 ===============

Item was changed:
  ----- Method: GetTextExporter class>>exportAll (in category 'utilities') -----
  exportAll
  	"GetTextExporter2 exportAll"
  	self new exportTemplate.
  	InternalTranslator availableLanguageLocaleIDs
+ 		do: [:each | self new exportTranslator: each languageTranslator]!
- 		do: [:each | self new exportTranslator: each translator]!

Item was changed:
  ----- Method: GetTextExporter class>>verifyExport (in category 'utilities') -----
  verifyExport
  	"Same as #verifyMsgID: but it writes / reads .po files actually"
  	"GetTextExporter2 verifyExport"
  	"InternalTranslator removeLocaleID: (LocaleID isoString: 'test-US')"
  	| src dst localeID |
  	localeID := LocaleID isoString: 'test-US'.
  	self verifyMsgID: localeID.
+ 	src := localeID languageTranslator.
- 	src := localeID translator.
  	self new exportTranslator: src.
  	InternalTranslator removeLocaleID: localeID.
+ 	dst := localeID languageTranslator.
- 	dst := localeID translator.
  	GetTextImporter import: dst allDirectory: FileDirectory default!

Item was changed:
  ----- Method: GetTextExporter class>>verifyMsgID: (in category 'utilities') -----
  verifyMsgID: localeID 
  	"GetTextExporter2 verifyMsgID: (LocaleID isoString: 'test-US')"
  	"InternalTranslator removeLocaleID: (LocaleID isoString: 'test-US')"
  	"Test gettext keyword extract function without file I/O.
  	A language named <langName> will be made. And
  	all possible translated words are shown with extra X charactor like
  	'XwordX' in the language."
  	| src |
  	InternalTranslator removeLocaleID: localeID.
+ 	src := localeID languageTranslator.
- 	src := localeID translator.
  	self keys
  		do: [:key | src generics at: key put: 'X' , key , 'X']!

Item was changed:
  ----- Method: GetTextExporter>>appendTranslationsAlreadyIn:to: (in category 'exporting') -----
  appendTranslationsAlreadyIn: translator to: domains
  	| d |
+ 	translator ifNil: [^ self].
  	translator moFiles keysAndValuesDo: [:domain :mo |
  		mo ifNotNil: [
  			d := domains at: domain ifAbsentPut: [Dictionary new].
  			mo translations keysAndValuesDo: [:key :translation |
  				d at: key asString ifAbsentPut: [{MethodReference class: Object selector: #yourself}]]]]!

Item was changed:
  ----- Method: GetTextExporter>>exportTranslator: (in category 'exporting') -----
  exportTranslator: translator 
  	"Export translation files. the file extention is 'po', or 'pot' if translator is nil "
  	"GetTextExporter2 new exportTranslator: NaturalLanguageTranslator current "
  	| domains |
  	domains := Dictionary new.
  	self appendTranslations: domains.
  	self appendTranslationsAlreadyIn: translator to: domains.
  	domains
  		keysAndValuesDo: [:domainName :value |
  			self
  				export: value
  				translator: translator
+ 				domain: domainName].
+ 	(domains includesKey: TextDomainManager defaultDomain)
+ 		ifFalse: [self export: Dictionary new translator: nil domain: TextDomainManager defaultDomain].!
- 				domain: domainName]!

Item was changed:
  ----- Method: GetTextImporter class>>cleanUpUnnecessaryPhrases (in category 'utilities') -----
  cleanUpUnnecessaryPhrases
  	| keys refuse replaceBlock reader writer char result |
  	"GetTextImporter cleanUpUnnecessaryPhrases"
  	""
  	"Collect wrong phrases"
  	keys := InternalTranslator allKnownPhrases copy keys.
  	refuse := Set new.
  	"replaceBlock value: 'te\\nst'."
  	replaceBlock := [:aString | 
  			reader := aString readStream.
  			writer := '' writeStream.
  			[reader atEnd]
  				whileFalse: [char := reader next.
  					(char = $\
  							and: [reader peek = $\])
  						ifFalse: [writer nextPut: char]].
  			writer contents].
  	keys
  		do: [:each | 
  			result := replaceBlock value: each.
  			(result ~= each
  					and: [keys includes: result])
  				ifTrue: [refuse add: each].
  			result := GetTextImporter new formatString: each.
  			(result ~= each
  					and: [keys includes: result])
  				ifTrue: [refuse add: each]].
  	""
  	"Remove from translated"
+ 	InternalTranslator translators
- 	InternalTranslator cachedTranslations
  		do: [:each | refuse
  				do: [:key | each translations
  						removeKey: key
  						ifAbsent: []]].
  	""
  	"Remove from untranslated"
  	refuse
  		do: [:key | InternalTranslator allKnownPhrases
  				removeKey: key
  				ifAbsent: []]!

Item was changed:
  ----- Method: GetTextImporter class>>importAll (in category 'utilities') -----
  importAll
  	"GetTextImporter importAll"
  	"Import all gettext files on po/. Only registered language is imported"
+ 	InternalTranslator translators
- 	InternalTranslator cachedTranslations
  		do: [:translator | self import: translator allDirectory: FileDirectory default]!

Item was changed:
  ----- Method: GetTextImporter>>importID:fileNamed: (in category 'importing') -----
  importID: localeID fileNamed: fileName
+ 
+ 	language := InternalTranslator ensureForLocaleID: localeID.
+ 	Locale
+ 		current: (Locale localeID: localeID)
+ 		during: [
+ 			[stream := FileStream readOnlyFileNamed: fileName.
+ 			stream text. self parse]
+ 				ensure: [stream ifNotNil: [stream close]] ].
- 	| currentPlatform |
- 	language := InternalTranslator newLocaleID: localeID.
- 	currentPlatform := Locale currentPlatform.
- 	[Locale
- 		currentPlatform: (Locale localeID: localeID).
- 	[stream := FileStream readOnlyFileNamed: fileName.
- 	stream text.
- 	self parse]
- 		ensure: [stream notNil
- 				ifTrue: [stream close]]]
- 		ensure: [Locale currentPlatform: currentPlatform].
  	NaturalLanguageTranslator privateStartUp "Actually it is not private no more...".!

Item was changed:
  ----- Method: LanguageEditor class>>on: (in category 'instance creation') -----
  on: localeID 
  	"answer an instance of the receiver on aLanguage"
  	^ self new
+ 		initializeOn: (InternalTranslator
+ 			forLocaleID: localeID
+ 			ifAbsent: [self inform: ('Translator for {1} is not found' translated format: {localeID}). ^nil])!
- 		initializeOn: (InternalTranslator cachedTranslations
- 				at: localeID
- 				ifAbsent: [self
- 						inform: ('Translator for {1} is not found' translated format: {localeID}). ^nil])!

Item was changed:
  ----- Method: LanguageEditor class>>open (in category 'opening') -----
  open
  	"open the receiver on any language"
  	" 
  	LanguageEditor open. 
  	"
  	| menu availableLanguages |
  	menu := MenuMorph new defaultTarget: self.
  	menu addTitle: 'Language Editor for...' translated.
  	""
+ 	availableLanguages := NaturalLanguageTranslator availableLanguageLocaleIDs sorted: [:x :y | x asString <= y asString].
- 	availableLanguages := InternalTranslator availableLanguageLocaleIDs sorted: [:x :y | x asString <= y asString].
  	availableLanguages ifEmpty:[^self inform:'InternalTranslator not initialized'].
  	availableLanguages
  		do: [:eachLanguage | ""
  			menu
  				add: eachLanguage name
  				target: self
  				selector: #openOn:
  				argument: eachLanguage].
  	""
  	menu popUpInWorld!

Item was changed:
  ----- Method: LanguageEditor>>checkPhrase:translation: (in category 'private') -----
  checkPhrase: phraseString translation: translationString
+ 	^ translator checkPhrase: phraseString translation: translationString!
- 	^nil!

Item was changed:
  ----- Method: LanguageEditor>>newTranslations (in category 'gui methods') -----
  newTranslations
  	"private - try to apply the translations as much as possible all 
  	over the image"
  	| result newID |
+ 	result := Project uiManager
+ 		request: 'New locale ID string?' translated
+ 		initialAnswer: Locale current localeID isoString.
+ 	result ifEmpty: [^ self].
- 	result := UIManager default request: 'New locale ID string?' translated initialAnswer: Locale current determineLocaleID isoString.
- 	result isEmpty
- 		ifTrue: ["Do nothing"
- 			^ self].
  	newID := LocaleID isoString: result.
+ 	InternalTranslator ensureForLocaleID: newID.
- 	InternalTranslator
- 		newLocaleID: (LocaleID isoString: result).
  	self class openOn: newID!



More information about the Squeak-dev mailing list