[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
|