One thing I thought about was making a Text object be translatable itself - when switching the locale we would store the previous translation in a dictionary (in a property of the object). Then the text could be edited, and when switching back, the old string would reappear. Hopefully we could make this behavior be the default, but it should be disabled from the halo menu, which could also show the other translations in a submenu.
- Bert -
Good idea!
Cheers,
Alan
--------------
At 07:58 AM 9/22/2007, Bert Freudenberg wrote:
One thing I thought about was making a Text object be translatable itself - when switching the locale we would store the previous translation in a dictionary (in a property of the object). Then the text could be edited, and when switching back, the old string would reappear. Hopefully we could make this behavior be the default, but it should be disabled from the halo menu, which could also show the other translations in a submenu.
- Bert -
Etoys mailing list Etoys@lists.laptop.org http://lists.laptop.org/listinfo/etoys
Just published an update to do this. Seems to work nicely so far, I translated the three cloud inscriptions of the launcher to German, and they do switch on startup or when selecting a language from the toolbar.
To try, just drag out a Text from supplies, change language, edit it, switch back.
No way to disable yet, but if there are translations, they are shown in the menu.
Not sure how we would handle these translations with external developers. We could translate all our example projects to at least one other language, and then extract all text morphs that have at least two translations. Or, maybe better, have translators translate in etoys and send back the translated projects. Then load both our master project and the translated one, find the new translations and merge into master.
- Bert -
On Sep 22, 2007, at 19:24 , Alan Kay wrote:
Good idea!
Cheers,
Alan
At 07:58 AM 9/22/2007, Bert Freudenberg wrote:
One thing I thought about was making a Text object be translatable itself - when switching the locale we would store the previous translation in a dictionary (in a property of the object). Then the text could be edited, and when switching back, the old string would reappear. Hopefully we could make this behavior be the default, but it should be disabled from the halo menu, which could also show the other translations in a submenu.
- Bert -
Etoys mailing list Etoys@lists.laptop.org http://lists.laptop.org/listinfo/etoys
Great stuff, Bert! I think we can apply this to QuickGuides contents.
(At this time, morphs on QuickGuides disappear on locale change, so translations can't be provided to them. How do you develop these contents?)
--- Bert Freudenberg bert@freudenbergs.de wrote:
Just published an update to do this. Seems to work nicely so far, I translated the three cloud inscriptions of the launcher to German, and they do switch on startup or when selecting a language from the toolbar.
<snip>
-------------------------------------- Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar http://pr.mail.yahoo.co.jp/toolbar/
Hi, Bert,
Good stuff!
After loading the update, however, I found that when I dropped a project created in another language, specifically Pierre-Andre's "traitementSons.015.pr", onto my olpc dev image, I got a message-not- understood, because "Locale previous" was nil... debug log appended below.
This is probably a problem only affecting evolved dev images -- an up- to-date plug-in image didn't have trouble with this. But perhaps it's still something worth bulletproofing against...
Cheers,
-- Scott
-----
MessageNotUnderstood: UndefinedObject>>localeID 27 September 2007 2:11:48 pm
VM: Mac OS - a SmalltalkImage Image: etoys2.2 [latest update: #1668]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/scottwal/Kazi/etoys2.x/etoys2.2 Fwd Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/scottwal/Library/Preferences/Squeak/Internet/My Squeak
UndefinedObject(Object)>>doesNotUnderstand: #localeID Receiver: nil Arguments and temporary variables: aMessage: localeID Receiver's instance variables: nil LocaleID class>>previous Receiver: LocaleID Arguments and temporary variables:
Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#displayCountry->a CompiledMethod (538) #display...etc... format: 134 instanceVariables: #('isoLanguage' 'isoCountry') organization: ('initialize' isoLanguage:isoCountry:) ('accessing' displayCountr...etc... subclasses: nil name: #LocaleID classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: nil
TextMorph>>localeChanged Receiver: a TextMorph(3447) Arguments and temporary variables: locale: #none oldContents: nil Receiver's instance variables: bounds: 3@81 corner: 20@163 owner: a FlapTab<Help>(367) "Help" submorphs: #() fullBounds: 3@81 corner: 20@163 color: Color black extension: a MorphExtensionPlus (3233) [locked] [other: (translations -> a Di...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle BitstreamVeraSans text: Text: 'H e l p' wrapFlag: false paragraph: a MultiNewParagraph editor: nil container: nil predecessor: nil successor: nil backgroundColor: nil margins: nil fillStyle: nil
[] in Project>>updateLocaleDependentsWithPreviousSupplies:gently: {[:morph | morph isTileScriptingElement ifTrue: [morph localeChanged]. mo...]} Arguments and temporary variables: aCollection: nil gentlyFlag: false morphs: an IdentitySet(a Morph(2133) a SketchMorph<Green2>(1070) a NoHaloMorph(...etc... morph: a TextMorph(3447) key: nil class: nil
--- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #localeID LocaleID class>>previous TextMorph>>localeChanged [] in Project>>updateLocaleDependentsWithPreviousSupplies:gently: {[:morph | morph isTileScriptingElement ifTrue: [morph localeChanged]. mo...]} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IdentitySet(Set)>>do: Project>>updateLocaleDependentsWithPreviousSupplies:gently: Project>>updateLocaleDependents Project>>localeChanged Project>>finalEnterActions Project>>enter:revert:saveForRevert: Project>>enter ProjectEntryNotification>>defaultAction UndefinedObject>>handleSignal: MethodContext(ContextPart)>>handleSignal: MethodContext(ContextPart)>>handleSignal: ProjectEntryNotification(Exception)>>signal ProjectEntryNotification(Exception)>>signal: ProjectEntryNotification class>>signal: ProjectLoading class>>openName:stream:fromDirectory:withProjectView: [] in ProjectLoading class>>openOn: {[self openName: nil stream: aStream fromDirectory: nil withProjectVi...]} [] in ProjectLoading class>>showProgressBarDuring: {[aBlock value]} BlockContext>>on:do: [] in ProjectLoading class>>showProgressBarDuring: {[[aBlock value] on: ProgressNotification do: [:e | bar value: e mess...]} BlockContext>>on:do: [] in ProjectLoading class>>showProgressBarDuring: {[:bar | [[aBlock value] on: ProgressNotification do: [:e | bar value...]} [] in ProgressInitiationException>>defaultMorphicAction {[result _ workBlock value: progress]} BlockContext>>ensure: ProgressInitiationException>>defaultMorphicAction ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:during: ProjectLoading class>>showProgressBarDuring: ProjectLoading class>>openOn: [] in ExternalDropHandler class>>defaultProjectHandler {[:stream | ProjectLoading openOn: stream]} ExternalDropHandler>>handle:in:dropEvent: [] in PasteUpMorph>>dropFiles: {[handler ifNotNil: [handler handle: stream in: self dropEvent:...]} BlockContext>>ensure: PasteUpMorph>>dropFiles: PasteUpMorph(Morph)>>handleDropFiles: DropFilesEvent>>sentTo: ...etc...
--------------------------------
On Sep 26, 2007, at 5:38 PM, Bert Freudenberg wrote:
Just published an update to do this. Seems to work nicely so far, I translated the three cloud inscriptions of the launcher to German, and they do switch on startup or when selecting a language from the toolbar.
To try, just drag out a Text from supplies, change language, edit it, switch back.
No way to disable yet, but if there are translations, they are shown in the menu.
Not sure how we would handle these translations with external developers. We could translate all our example projects to at least one other language, and then extract all text morphs that have at least two translations. Or, maybe better, have translators translate in etoys and send back the translated projects. Then load both our master project and the translated one, find the new translations and merge into master.
- Bert -
On Sep 22, 2007, at 19:24 , Alan Kay wrote:
Good idea!
Cheers,
Alan
At 07:58 AM 9/22/2007, Bert Freudenberg wrote:
One thing I thought about was making a Text object be translatable itself - when switching the locale we would store the previous translation in a dictionary (in a property of the object). Then the text could be edited, and when switching back, the old string would reappear. Hopefully we could make this behavior be the default, but it should be disabled from the halo menu, which could also show the other translations in a submenu.
- Bert -
Etoys mailing list Etoys@lists.laptop.org http://lists.laptop.org/listinfo/etoys
Etoys mailing list Etoys@lists.laptop.org http://lists.laptop.org/listinfo/etoys
etoys-dev@lists.squeakfoundation.org