infinite loop in LanguageEditor

Pascal Grossé pascal.grosse at
Sat May 13 20:57:48 UTC 2006

Hi all,

I'm trying to help with the french translation of squeak. While using the
LanguageEditor, I found a potential infinite loop which can be triggered as

- use the SqueakPlugin-dev image available at, fully
- load Multilingual-Editor-tak.7.mcz from
- set your locale as something non english (I'm obviously doing french

Now, I've got 2 issue:

1. Since the status bar message of LanguageEditor is still untranslated (at
least in french), the (un)translated phrases lists are reinitialized each
time the status bar is updated (ie. every 2 seconds). This is caused by
NaturalLanguageTranslator>>translate: which re-registers the phrase each
time, thus sending a NaturalLanguageTranslator>>changed:#untranslated which
in turn triggers the reinitialization of LanguageEditor's UI.
Because of that, it is impossible to select a phrase for translation for
more than 2 seconds, unless we translate the status bar phrase at lightning

2. Even more nasty: if using a filter in the untranslated phrases panel, an
infinite loop between NaturalLanguageTranslator>>translate: and
LanguageEditor>>untranslated is triggered, because the former method tries
to find the filter string in all unstranslated phrases *and their
translations* (which do not exist, of course).

I think I nailed the bug, which is quite easy to correct. I joined a
changeset. I'm quite new to squeak (and even smalltalk), so pardon me if
I'm not following established methods for reporting bugs. I don't known if
it is possible for me to send a new version of LanguageEditor on
squeaksource via Monticello, as I've not tried. And I don't know how to use
Monticello for my NaturalLanguageTranslator corrections, because it is in
another package (category ?).

-------------- next part --------------
A non-text attachment was scrubbed...
Name: LanguageEditor infinite loops.1.cs
Type: text/x-java
Size: 1130 bytes
Desc: not available
Url :

More information about the Squeak-dev mailing list