Bert Freudenberg uploaded a new version of System to project Etoys: http://source.squeak.org/etoys/System-bf.22.mcz
==================== Summary ====================
Name: System-bf.22 Author: bf Time: 26 June 2010, 3:14:06 pm UUID: 25c8a8c1-a006-4431-8fa3-3d08528779d2 Ancestors: System-bf.21
- store list of languages used in a project in the project manifest (SQ-513)
=============== Diff against System-bf.21 ===============
Item was changed: ----- Method: Project>>storeAttributesOn: (in category 'file in/out') ----- storeAttributesOn: aStream "For the manifest: write a series of cr-delimited records of the form <key>: <value> to a stream."
| details loggedInAs incomingUser existingUri uri uriPrefix | self storeAttributeKey: 'Squeak-Version' value: SystemVersion current version on: aStream. self storeAttributeKey: 'Squeak-LatestUpdate' value: SystemVersion current highestUpdate printString on: aStream. self storeAttributeKey: 'File-Name-Encoding' value: LanguageEnvironment defaultFileNameConverter class encodingNames first on: aStream. self storeAttributeKey: 'Project-Language' value: Locale current localeID printString on: aStream. + self localesString ifNotEmptyDo: [:localesString | + self storeAttributeKey: 'Project-Languages' value: localesString on: aStream].
loggedInAs := 'unknown'. Utilities loggedIn ifTrue: [ServerDirectory servers at: 'My Squeakland' ifPresent: [:server | loggedInAs := server userPerSe ifNil: ['unknown']]].
incomingUser := self projectParameterAt: #user ifAbsent: ['unknown']. "If the project was loaded from outside, this will be the user associated with that outside version" existingUri := self projectParameterAt: #URI ifAbsent: [nil].
uriPrefix := 'http://squeakland.org/etoys/'. uri := uriPrefix, loggedInAs, '-', Time totalSeconds printString. existingUri ifNotNil: [incomingUser = loggedInAs ifTrue: [uri := existingUri. (self projectParameterAt: #'prev-URI') ifNotNilDo: [:prior | self storeAttributeKey: #'prev-URI' value: prior on: aStream]] ifFalse: [incomingUser = 'unknown' ifTrue: "saved as unknown user, now publishing as registered user; teefal wants new uri but using original epoch in this case." [uri := String streamContents: [:str | str nextPutAll: uriPrefix. str nextPutAll: loggedInAs, '-'. str nextPutAll: (existingUri copyAfterLast: $-)]]. self storeAttributeKey: 'prev-URI' value: existingUri on: aStream]].
self storeAttributeKey: 'URI' value: uri on: aStream. self storeAttributeKey: 'user' value: loggedInAs on: aStream. details _ self world valueOfProperty: #ProjectDetails ifAbsent: [Dictionary new]. Project publishInSexp ifTrue: [ self storeAttributeKey: 'Project-Format' value: 'S-Expression' on: aStream. self storeAttributeKey: 'Project-Format-Version' value: '1.0' on: aStream. ] ifFalse: [ self storeAttributeKey: 'Project-Format' value: 'ImageSegment' on: aStream. ]. details associationsDo: [:assoc | self storeAttributeKey: assoc key asString value: assoc value asString on: aStream.]!
Item was added: + ----- Method: Project>>locales (in category 'language') ----- + locales + "Answer list of all locales found in translatable objects" + | locales | + locales := Set new. + world allMorphsDo: [:m | + ((m isKindOf: TextMorph) and: [m translatable]) ifTrue: [ + m valueOfProperty: #translations ifPresentDo: [:translations | + translations keysDo: [:locale | locales add: locale]]]]. + ^locales!
Item was added: + ----- Method: Project>>localesString (in category 'language') ----- + localesString + "Answer comma-separated string of all locales found in translatable objects" + ^String streamContents: [:stream | + self locales + do: [:locale | stream print: locale] + separatedBy: [stream nextPut: $,]]!
etoys-dev@lists.squeakfoundation.org